| package test.outparams2; |
| |
| import javax.xml.rpc.holders.StringHolder; |
| |
| import junit.framework.TestCase; |
| |
| import org.apache.axis.EngineConfiguration; |
| import org.apache.axis.Message; |
| import org.apache.axis.client.Call; |
| import org.apache.axis.client.Service; |
| import org.apache.axis.configuration.DefaultEngineConfigurationFactory; |
| import org.apache.axis.configuration.SimpleProvider; |
| import org.apache.axis.description.JavaServiceDesc; |
| import org.apache.axis.description.OperationDesc; |
| import org.apache.axis.description.ParameterDesc; |
| import org.apache.axis.description.ServiceDesc; |
| import org.apache.axis.handlers.soap.SOAPService; |
| import org.apache.axis.message.SOAPEnvelope; |
| import org.apache.axis.providers.java.RPCProvider; |
| import org.apache.axis.server.AxisServer; |
| import org.apache.axis.transport.local.LocalTransport; |
| |
| /** |
| * Test if operation is invoked with parameters in good order when out parameter |
| * is not the last parameter. <br> |
| * It makes sure that bug described at |
| * http://issues.apache.org/jira/browse/AXIS-1975 is corrected. |
| * |
| * @author Cedric Chabanois (cchabanois@natsystem.fr) |
| */ |
| public class TestOutParams2 extends TestCase { |
| |
| /** A fixed message, with one parameter */ |
| private final String message = "<?xml version=\"1.0\"?>\n" |
| + "<soapenv:Envelope " |
| + "xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" " |
| + "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" " |
| + "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" |
| + "<soapenv:Body>\n" |
| + "<ns1:serviceMethod soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" " |
| + "xmlns:ns1=\"outParamsTest\"><in1>18</in1></ns1:serviceMethod>\n" |
| + "</soapenv:Body></soapenv:Envelope>\n"; |
| |
| private Service s_service = null; |
| |
| private Call client = null; |
| |
| private SimpleProvider provider = new SimpleProvider(); |
| |
| private AxisServer server = new AxisServer(provider); |
| |
| private static boolean called = false; |
| |
| public TestOutParams2(String name) { |
| super(name); |
| server.init(); |
| } |
| |
| public TestOutParams2() { |
| super("Test Out Params"); |
| } |
| |
| public void testOutputParams() throws Exception { |
| // Register the service |
| s_service = new Service(); |
| client = (Call) s_service.createCall(); |
| |
| SOAPService service = new SOAPService(null, new RPCProvider(), null); |
| service.setName("TestOutParamsService"); |
| service.setOption("className", "test.outparams2.TestOutParams2"); |
| service.setOption("allowedMethods", "serviceMethod"); |
| |
| ServiceDesc description = new JavaServiceDesc(); |
| OperationDesc operation = new OperationDesc(); |
| operation.setName("serviceMethod"); |
| ParameterDesc out1 = new ParameterDesc(); |
| out1.setName("out1"); |
| out1.setMode(ParameterDesc.OUT); |
| operation.addParameter(out1); |
| ParameterDesc in1 = new ParameterDesc(); |
| in1.setName("in1"); |
| in1.setMode(ParameterDesc.IN); |
| operation.addParameter(in1); |
| description.addOperationDesc(operation); |
| service.setServiceDescription(description); |
| |
| EngineConfiguration defaultConfig = (new DefaultEngineConfigurationFactory()) |
| .getServerEngineConfig(); |
| SimpleProvider config = new SimpleProvider(defaultConfig); |
| config.deployService("outParamsTest", service); |
| provider.deployService("outParamsTest", service); |
| |
| // Make sure the local transport uses the server we just configured |
| client.setTransport(new LocalTransport(server)); |
| |
| Message msg = new Message(message, false); |
| SOAPEnvelope env = msg.getSOAPEnvelope(); |
| |
| // invoke |
| client.invoke(env); |
| assertTrue(this.called); |
| } |
| |
| public void serviceMethod(StringHolder out1, byte in1) { |
| called = true; |
| } |
| |
| public static void main(String args[]) { |
| try { |
| TestOutParams2 tester = new TestOutParams2("OutParams Test"); |
| tester.testOutputParams(); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| } |