You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by di...@apache.org on 2003/12/05 17:33:29 UTC

cvs commit: ws-axis/java/test/encoding TestBeanDeser3.java

dims        2003/12/05 08:33:29

  Modified:    java/test/encoding/beans SbSupplier.java
  Added:       java/test/encoding TestBeanDeser3.java
  Log:
  test case for Bug 25179 - BeanDeserializer cannot deserialize child array unless xsi:type="SE:Array" provided
  
  Notes: Bug has been already fixed in Axis 1.2 Alpha.
  
  Revision  Changes    Path
  1.2       +1 -0      ws-axis/java/test/encoding/beans/SbSupplier.java
  
  Index: SbSupplier.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/java/test/encoding/beans/SbSupplier.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SbSupplier.java	28 Jun 2002 12:36:51 -0000	1.1
  +++ SbSupplier.java	5 Dec 2003 16:33:29 -0000	1.2
  @@ -6,4 +6,5 @@
       public Integer searchType;
       public String  supplierCode;
       public String  chanNel;
  +    public String[]  listOfStrings;
   }
  
  
  
  1.1                  ws-axis/java/test/encoding/TestBeanDeser3.java
  
  Index: TestBeanDeser3.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.namespace.QName;
  import java.util.Vector;
  
  /**
   * Test deserialization of SOAP responses. Test case for Bug 25179
   *	  	(BeanDeserializer cannot deserialize child array unless xsi:type="SE:Array" provided)
   */
  public class TestBeanDeser3 extends TestCase {
  
      private String header;
      private String footer;
      private AxisServer server = new AxisServer();
  
      public TestBeanDeser3(String name) {
          super(name);
          header =
                  "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
                  "<SOAP-ENV:Envelope SOAP-ENV:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"\n" +
                  "                   xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\"\n" +
                  "                   xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n" +
                  "                   xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
                  "                   xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\">\n" +
                  "<SOAP-ENV:Body>\n";
          footer =
                  "</SOAP-ENV:Body>\n" +
                  "</SOAP-ENV:Envelope>\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.getValue();
      }
  
      public void testTravelRequest() throws Exception {
          String response =
                  "<startSearch>\n" +
                  " <arg0 href=\"#id0\"/>\n" +
                  "</startSearch>\n" +
                  "<multiRef id=\"id0\" SOAP-ENC:root=\"0\"\n" +
                  "         encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"\n" +
                  "         xsi:type=\"ns2:SbTravelRequest\"\n" +
                  "         xmlns:ns1=\"http://schemas.xmlsoap.org/soap/envelope/:encodingStyle\"\n" +
                  "         xmlns:ns2=\"http://www.sidestep.com/sbws\">\n" +
                  "<requestOr xsi:type=\"xsd:string\">SOAP test 1</requestOr>\n" +
                  "<homeCountry xsi:type=\"xsd:string\">US</homeCountry>\n" +
                  "<departureLocation xsi:type=\"xsd:string\">SJC</departureLocation>\n" +
                  "<destinationLocation xsi:type=\"xsd:string\">ATL</destinationLocation>\n" +
                  "<startDate xsi:type=\"xsd:dateTime\">2002-08-10T13:42:24.024Z</startDate>\n" +
                  "<endDate xsi:type=\"xsd:dateTime\">2002-06-27T13:42:24.024Z</endDate>\n" +
                  "<searchTypes xsi:type=\"xsd:string\">AIR:RTACR</searchTypes>\n" +
                  "<searchParams xsi:nil=\"true\"/>\n" +
                  "<searchHints xsi:nil=\"true\"/>\n" +
                  "<supPliers xsi:type=\"SOAP-ENC:Array\" SOAP-ENC:arrayType=\"ns2:SbSupplier[1]\">\n" +
                  " <item href=\"#id1\"/>\n" +
                  "</supPliers>\n" +
                  "</multiRef>" +
                  "<multiRef id=\"id1\" SOAP-ENC:root=\"0\"" +
                  "                   encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"" +
                  "                   xsi:type=\"ns3:SbSupplier\"" +
                  "                   xmlns:ns3=\"http://www.sidestep.com/sbws\">" +
                  " <searchType xsi:type=\"xsd:int\">0</searchType>" +
                  " <supplierCode xsi:type=\"xsd:string\">SC**</supplierCode>" +
                  " <chanNel xsi:type=\"xsd:string\">CN**</chanNel>" +
                  "<listOfStrings " +
                  "SOAP-ENC:arrayType=\"xsd:string[3]\"> " +
                  "<item xsi:type=\"xsd:string\">abc</item>" +
                  "<item xsi:nil=\"true\"/>" +
                  "<item xsi:type=\"xsd:string\">def</item>" +
                  "</listOfStrings>" +
                  "</multiRef>";
  
          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 {
          TestBeanDeser3 tester = new TestBeanDeser3("test");
          tester.testTravelRequest();
      }
  }