dims 02/03/21 10:05:28 Modified: java/test/encoding PackageTests.java Added: java/test/encoding TestRoundTrip.java Log: Test case for round trip de-serialization/re-serialization of messages. Revision Changes Path 1.15 +1 -0 xml-axis/java/test/encoding/PackageTests.java Index: PackageTests.java =================================================================== RCS file: /home/cvs/xml-axis/java/test/encoding/PackageTests.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- PackageTests.java 20 Mar 2002 13:44:57 -0000 1.14 +++ PackageTests.java 21 Mar 2002 18:05:28 -0000 1.15 @@ -33,6 +33,7 @@ suite.addTestSuite(TestOutputter.class); suite.addTestSuite(TestAttributes.class); suite.addTestSuite(TestBeanDeser.class); + suite.addTestSuite(TestRoundTrip.class); return suite; } 1.1 xml-axis/java/test/encoding/TestRoundTrip.java Index: TestRoundTrip.java =================================================================== package test.encoding; import junit.framework.TestCase; import org.apache.axis.Constants; import org.apache.axis.Message; import org.apache.axis.MessageContext; import org.apache.axis.encoding.TypeMapping; import org.apache.axis.encoding.TypeMappingRegistry; import org.apache.axis.message.RPCElement; import org.apache.axis.message.RPCParam; import org.apache.axis.message.SOAPEnvelope; import org.apache.axis.server.AxisServer; import javax.xml.rpc.namespace.QName; import java.util.Vector; /** * Test round-trip serialization/deserialization of SOAP messages */ public class TestRoundTrip extends TestCase { private AxisServer server = new AxisServer(); private String header = "<?xml version=\"1.0\"?>\n" + "<SOAP-ENV:Envelope\n" + "xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\"\n" + "xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\"\n" + "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n" + "xmlns:xsd-cr=\"http://www.w3.org/2000/10/XMLSchema\"\n" + "xmlns:xsd-lc=\"http://www.w3.org/1999/XMLSchema\"\n" + "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" + "SOAP-ENV:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">\n" + "<SOAP-ENV:Body>\n"; private String footer = "</SOAP-ENV:Body>\n" + "</SOAP-ENV:Envelope>\n"; private String response = "<ser-root:SrvResponse xmlns:ser-root=\"urn:test.encoding\">\n" + " <ser-root:RETURN xsi:type=\"ser-root:RETURN\">\n" + " <TYPE xsi:type=\"xsd:string\">000</TYPE>\n" + " <ID xsi:type=\"xsd:string\">001</ID>\n" + " <NUMBER xsi:type=\"xsd:string\">002</NUMBER>\n" + " <MESSAGE xsi:type=\"xsd:string\">003</MESSAGE>\n" + " <LOG_NO xsi:type=\"xsd:string\">004</LOG_NO>\n" + " <LOG_MSG_NO xsi:type=\"xsd:string\">005</LOG_MSG_NO>\n" + " <MESSAGE_V1 xsi:type=\"xsd:string\">006</MESSAGE_V1>\n" + " <MESSAGE_V2 xsi:type=\"xsd:string\">007</MESSAGE_V2>\n" + " <MESSAGE_V3 xsi:type=\"xsd:string\">008</MESSAGE_V3>\n" + " <MESSAGE_V4 xsi:type=\"xsd:string\">009</MESSAGE_V4>\n" + " </ser-root:RETURN>\n" + "</ser-root:SrvResponse>"; public TestRoundTrip(String name) { this(name, Constants.URI_CURRENT_SCHEMA_XSI, Constants.URI_CURRENT_SCHEMA_XSD); } public TestRoundTrip(String name, String NS_XSI, String NS_XSD) { super(name); TypeMappingRegistry tmr = server.getTypeMappingRegistry(); TypeMapping tm = (TypeMapping) tmr.createTypeMapping(); tm.setSupportedNamespaces(new String[]{Constants.URI_CURRENT_SOAP_ENC}); tmr.register(Constants.URI_CURRENT_SOAP_ENC, tm); tm.register(test.encoding.RETURN.class, new QName("urn:test.encoding", "RETURN"), new org.apache.axis.encoding.ser.BeanSerializerFactory( test.encoding.RETURN.class, new QName("urn:test.encoding", "RETURN")), new org.apache.axis.encoding.ser.BeanDeserializerFactory( test.encoding.RETURN.class, new QName("urn:test.encoding", "RETURN"))); } // test if objects are equal private static boolean equals(Object obj1, Object obj2) { if ((obj1 == null) || (obj2 == null)) return (obj1 == obj2); if (obj1.equals(obj2)) return true; return false; } // Test RoundTrip public void testRoundTrip() throws Exception { checkRoundTrip(header + response + footer); } protected void checkRoundTrip(String xml1) throws Exception { Message message = new Message(xml1); message.setMessageContext(new MessageContext(server)); SOAPEnvelope envelope = (SOAPEnvelope) message.getSOAPPart().getAsSOAPEnvelope(); RPCElement body = (RPCElement) envelope.getFirstBody(); Vector arglist = body.getParams(); Object ret1 = ((RPCParam) arglist.get(0)).getValue(); String xml2 = message.getSOAPPart().getAsString(); Message message2 = new Message(xml2); message2.setMessageContext(new MessageContext(server)); SOAPEnvelope envelope2 = (SOAPEnvelope) message2.getSOAPPart().getAsSOAPEnvelope(); RPCElement body2 = (RPCElement) envelope2.getFirstBody(); Vector arglist2 = body2.getParams(); Object ret2 = ((RPCParam) arglist2.get(0)).getValue(); if (!equals(ret1, ret2)) { assertEquals("The result is not what is expected.", ret1, ret2); } } public static void main(String[] args) throws Exception { TestRoundTrip trip = new TestRoundTrip("Test RoundTrip"); trip.testRoundTrip(); } }