| package test.wsdl.arrays2; |
| |
| 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 test.wsdl.arrays2.data.*; |
| import test.wsdl.arrays2.data.inner.*; |
| |
| import java.util.Vector; |
| |
| public class TestArrays2TestCase extends junit.framework.TestCase { |
| public TestArrays2TestCase(String name) { |
| super(name); |
| } |
| |
| private static AxisServer server = new AxisServer(); |
| |
| private static String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + |
| "<env:Envelope xmlns:env=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n" + |
| " <env:Header/>\n" + |
| " <env:Body env:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">\n" + |
| " <m:getDataOperationResponse xmlns:m=\"http://www.xyz.net/webservices/arraytest/1.0\">\n" + |
| " <dataResponse xmlns:n1=\"http://www.xyz.net/schemas/arraytest/data/1.0\" xsi:type=\"n1:dataType\">\n" + |
| " <innerData soapenc:arrayType=\"n2:innerDataType[10]\" xmlns:n2=\"http://www.xyz.net/schemas/arraytest/innerdata/1.0\">\n" + |
| " <innerDataType xsi:type=\"n2:innerDataType\">\n" + |
| " <trDescr xsi:type=\"n2:trDescrType\">\n" + |
| "desc#0 HELLO! </trDescr>\n" + |
| " </innerDataType>\n" + |
| " <innerDataType xsi:type=\"n2:innerDataType\">\n" + |
| " <trDescr xsi:type=\"n2:trDescrType\">\n" + |
| "desc#1 HELLO! </trDescr>\n" + |
| " </innerDataType>\n" + |
| " <innerDataType xsi:type=\"n2:innerDataType\">\n" + |
| " <trDescr xsi:type=\"n2:trDescrType\">\n" + |
| "desc#2 HELLO! </trDescr>\n" + |
| " </innerDataType>\n" + |
| " <innerDataType xsi:type=\"n2:innerDataType\">\n" + |
| " <trDescr xsi:type=\"n2:trDescrType\">\n" + |
| "desc#3 HELLO! </trDescr>\n" + |
| " </innerDataType>\n" + |
| " <innerDataType xsi:type=\"n2:innerDataType\">\n" + |
| " <trDescr xsi:type=\"n2:trDescrType\">\n" + |
| "desc#4 HELLO! </trDescr>\n" + |
| " </innerDataType>\n" + |
| " <innerDataType xsi:type=\"n2:innerDataType\">\n" + |
| " <trDescr xsi:type=\"n2:trDescrType\">\n" + |
| "desc#5 HELLO! </trDescr>\n" + |
| " </innerDataType>\n" + |
| " <innerDataType xsi:type=\"n2:innerDataType\">\n" + |
| " <trDescr xsi:type=\"n2:trDescrType\">\n" + |
| "desc#6 HELLO! </trDescr>\n" + |
| " </innerDataType>\n" + |
| " <innerDataType xsi:type=\"n2:innerDataType\">\n" + |
| " <trDescr xsi:type=\"n2:trDescrType\">\n" + |
| "desc#7 HELLO! </trDescr>\n" + |
| " </innerDataType>\n" + |
| " <innerDataType xsi:type=\"n2:innerDataType\">\n" + |
| " <trDescr xsi:type=\"n2:trDescrType\">\n" + |
| "desc#8 HELLO! </trDescr>\n" + |
| " </innerDataType>\n" + |
| " <innerDataType xsi:type=\"n2:innerDataType\">\n" + |
| " <trDescr xsi:type=\"n2:trDescrType\">\n" + |
| "desc#9 HELLO! </trDescr>\n" + |
| " </innerDataType>\n" + |
| " </innerData>\n" + |
| " </dataResponse>\n" + |
| " </m:getDataOperationResponse>\n" + |
| " </env:Body>\n" + |
| "</env:Envelope>"; |
| |
| public void testBug22213() throws Exception { |
| 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.wsdl.arrays2.data.DataType.class, |
| new javax.xml.namespace.QName("http://www.xyz.net/schemas/arraytest/data/1.0", "dataType"), |
| new org.apache.axis.encoding.ser.BeanSerializerFactory( |
| test.wsdl.arrays2.data.DataType.class, |
| new javax.xml.namespace.QName("http://www.xyz.net/schemas/arraytest/data/1.0", "dataType")), |
| new org.apache.axis.encoding.ser.BeanDeserializerFactory( |
| test.wsdl.arrays2.data.DataType.class, |
| new javax.xml.namespace.QName("http://www.xyz.net/schemas/arraytest/data/1.0", "dataType"))); |
| tm.register(InnerDataType.class, |
| new javax.xml.namespace.QName("http://www.xyz.net/schemas/arraytest/innerdata/1.0", "innerDataType"), |
| new org.apache.axis.encoding.ser.BeanSerializerFactory( |
| InnerDataType.class, |
| new javax.xml.namespace.QName("http://www.xyz.net/schemas/arraytest/innerdata/1.0", "innerDataType")), |
| new org.apache.axis.encoding.ser.BeanDeserializerFactory( |
| InnerDataType.class, |
| new javax.xml.namespace.QName("http://www.xyz.net/schemas/arraytest/innerdata/1.0", "innerDataType"))); |
| tm.register(String.class, |
| new javax.xml.namespace.QName("http://www.xyz.net/schemas/arraytest/innerdata/1.0", "trDescrType"), |
| new org.apache.axis.encoding.ser.SimpleSerializerFactory( |
| String.class, |
| new javax.xml.namespace.QName("http://www.xyz.net/schemas/arraytest/innerdata/1.0", "trDescrType")), |
| new org.apache.axis.encoding.ser.SimpleDeserializerFactory( |
| String.class, |
| new javax.xml.namespace.QName("http://www.xyz.net/schemas/arraytest/innerdata/1.0", "trDescrType"))); |
| |
| tm.register(DataRequestType.class, |
| new javax.xml.namespace.QName("http://www.xyz.net/schemas/arraytest/innerdata/1.0", "dataRequestType"), |
| new org.apache.axis.encoding.ser.BeanSerializerFactory( |
| DataRequestType.class, |
| new javax.xml.namespace.QName("http://www.xyz.net/schemas/arraytest/innerdata/1.0", "dataRequestType")), |
| new org.apache.axis.encoding.ser.BeanDeserializerFactory( |
| DataRequestType.class, |
| new javax.xml.namespace.QName("http://www.xyz.net/schemas/arraytest/innerdata/1.0", "dataRequestType"))); |
| |
| tm.register(InnerDataType[].class, |
| new javax.xml.namespace.QName("http://www.xyz.net/schemas/arraytest/innerdata/1.0", "innerDataArrType"), |
| new org.apache.axis.encoding.ser.ArraySerializerFactory(), |
| new org.apache.axis.encoding.ser.ArrayDeserializerFactory()); |
| |
| Message message = new Message(xml); |
| message.setMessageContext(new MessageContext(server)); |
| |
| SOAPEnvelope envelope = (SOAPEnvelope) message.getSOAPEnvelope(); |
| RPCElement body = (RPCElement) envelope.getFirstBody(); |
| Vector arglist = body.getParams(); |
| RPCParam param = (RPCParam) arglist.get(0); |
| DataType result = (DataType) param.getObjectValue(); |
| System.out.println(result); |
| assertTrue(result != null); |
| InnerDataType inner[] = result.getInnerData(); |
| assertTrue(inner != null); |
| assertEquals(inner.length, 10); |
| assertEquals(inner[9].getTrDescr().trim(),"desc#9 HELLO!"); |
| } |
| } |