Java tutorial
/* * Copyright 2001-2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package test.functional; import junit.framework.AssertionFailedError; import junit.framework.TestCase; import org.apache.axis.EngineConfiguration; import org.apache.axis.SimpleTargetedChain; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.components.logger.LogFactory; import org.apache.axis.configuration.DefaultEngineConfigurationFactory; import org.apache.axis.configuration.SimpleProvider; import org.apache.axis.encoding.XMLType; import org.apache.commons.logging.Log; import samples.transport.tcp.AdminClient; import samples.transport.tcp.GetQuote; import samples.transport.tcp.TCPSender; import javax.xml.namespace.QName; import javax.xml.rpc.ParameterMode; import java.net.URL; /** Test the stock sample code. */ public class TestTCPTransportSample extends TestCase { static Log log = LogFactory.getLog(TestTCPTransportSample.class.getName()); public TestTCPTransportSample(String name) { super(name); } public void doTestDeploy() throws Exception { String[] args = { "-ltcp://localhost:8088", "samples/transport/deploy.wsdd" }; AdminClient.main(args); } public void doTestUndeploy() throws Exception { String[] args = { "-ltcp://localhost:8088", "samples/stock/undeploy.wsdd" }; AdminClient.main(args); } public void doTestStock() throws Exception { try { log.info("Testing TCP stock service..."); GetQuote tester = new GetQuote(); tester.getQuote(new String[] { "-ltcp://localhost:8088", "XXX" }); String symbol = "XXX"; // args[0] ; EngineConfiguration defaultConfig = (new DefaultEngineConfigurationFactory()).getClientEngineConfig(); SimpleProvider config = new SimpleProvider(defaultConfig); SimpleTargetedChain c = new SimpleTargetedChain(new TCPSender()); config.deployTransport("tcp", c); Service service = new Service(config); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(new URL("tcp://localhost:8088")); call.setOperationName(new QName("urn:xmltoday-delayed-quotes", "getQuote")); call.addParameter("symbol", XMLType.XSD_STRING, ParameterMode.IN); call.setReturnType(XMLType.XSD_FLOAT); Object ret = call.invoke("urn:xmltoday-delayed-quotes", "getQuote", new Object[] { symbol }); if (ret instanceof Float) { Float res = (Float) ret; assertEquals("TestTCPTransportSample: stock price should be 55.25 +/- 0.000001", res.floatValue(), 55.25, 0.000001); } else { throw new AssertionFailedError("Bad return value from TCP stock test: " + ret); } } // } catch (Exception e) { e.printStackTrace(); throw new AssertionFailedError("Fault returned from TCP stock test: " + e); } } public void testTCPTransportSample() throws Exception { try { log.info("Testing TCP transport."); log.info("Testing deployment..."); doTestDeploy(); log.info("OK!"); log.info("Testing service..."); doTestStock(); log.info("OK!"); // Commented out for now, because namespaced-based dispatch for the // TCPListener doesn't work yet. Possible solutions: // 1. Deploy the AdminService at the WSDD namespace's name // 2. Build another dispatch mechanism into the TCP transport // // log.info("Testing undeployment..."); // doTestUndeploy(); // log.info("OK!"); log.info("Test complete."); } catch (Exception e) { e.printStackTrace(); throw new AssertionFailedError("Fault returned from test: " + e); } } public static void main(String[] args) { TestTCPTransportSample tester = new TestTCPTransportSample("TCP test"); try { tester.testTCPTransportSample(); } catch (Exception e) { } } }