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.namespace.QName; import java.util.Vector; /** * Test deserialization of SOAP responses */ public class TestBeanDeser2 extends TestCase { private String header; private String footer; private AxisServer server = new AxisServer(); public TestBeanDeser2(String name) { super(name); header = "\n" + "\n" + "\n"; footer = "\n"+ "\n"; TypeMappingRegistry tmr = server.getTypeMappingRegistry(); TypeMapping tm = (TypeMapping) tmr.createTypeMapping(); tm.setSupportedEncodings(new String[]{Constants.URI_DEFAULT_SOAP_ENC}); tmr.register(Constants.URI_DEFAULT_SOAP_ENC, tm); tm.register(test.encoding.beans.SbTravelRequest.class, new QName("http://www.sidestep.com/sbws", "SbTravelRequest"), new org.apache.axis.encoding.ser.BeanSerializerFactory( test.encoding.beans.SbTravelRequest.class, new QName("http://www.sidestep.com/sbws", "SbTravelRequest")), new org.apache.axis.encoding.ser.BeanDeserializerFactory( test.encoding.beans.SbTravelRequest.class, new QName("http://www.sidestep.com/sbws", "SbTravelRequest"))); tm.register(test.encoding.beans.SbSupplier.class, new QName("http://www.sidestep.com/sbws", "SbSupplier"), new org.apache.axis.encoding.ser.BeanSerializerFactory( test.encoding.beans.SbSupplier.class, new QName("http://www.sidestep.com/sbws", "SbSupplier")), new org.apache.axis.encoding.ser.BeanDeserializerFactory( test.encoding.beans.SbSupplier.class, new QName("http://www.sidestep.com/sbws", "SbSupplier"))); } protected Object deserialize(String data) throws Exception { Message message = new Message(header + data + footer); message.setMessageContext(new MessageContext(server)); SOAPEnvelope envelope = (SOAPEnvelope) message.getSOAPEnvelope(); assertNotNull("SOAP envelope should not be null", envelope); RPCElement body = (RPCElement) envelope.getFirstBody(); assertNotNull("SOAP body should not be null", body); Vector arglist = body.getParams(); assertNotNull("arglist", arglist); assertTrue("param.size()<=0 {Should be > 0}", arglist.size() > 0); RPCParam param = (RPCParam) arglist.get(0); assertNotNull("SOAP param should not be null", param); return param.getObjectValue(); } public void testTravelRequest() throws Exception { String response = "\n"+ " \n"+ "\n"+ "\n"+ "SOAP test 1\n"+ "US\n"+ "SJC\n"+ "ATL\n"+ "2002-08-10T13:42:24.024Z\n"+ "2002-06-27T13:42:24.024Z\n"+ "AIR:RTACR\n"+ "\n"+ "\n"+ "\n"+ " \n"+ "\n"+ ""+ ""+ " 0"+ " SC**"+ " CN**"+ ""; test.encoding.beans.SbTravelRequest travelRequest = (test.encoding.beans.SbTravelRequest) deserialize(response); assertNotNull("supPliers array missing", travelRequest.supPliers); assertTrue(travelRequest.supPliers.length==1); assertTrue(travelRequest.supPliers[0].searchType.intValue()==0); assertTrue(travelRequest.supPliers[0].supplierCode.equals("SC**")); assertTrue(travelRequest.supPliers[0].chanNel.equals("CN**")); } public static void main(String [] args) throws Exception { TestBeanDeser2 tester = new TestBeanDeser2("test"); tester.testTravelRequest(); } }