rubys       2002/06/27 16:10:37

  Modified:    java/src/org/apache/axis/encoding DeserializerImpl.java
               java/test/encoding TestDeser.java TestDeser1999.java
                        TestDeser2000.java TestDeser2001.java
  Log:
  Add support for 1999 and 2000's schema's xsi:null attribute.  Based on
  problem report and patch from Costin Manolache, with the addition of
  a test case.
  
  Revision  Changes    Path
  1.19      +4 -1      xml-axis/java/src/org/apache/axis/encoding/DeserializerImpl.java
  
  Index: DeserializerImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/src/org/apache/axis/encoding/DeserializerImpl.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- DeserializerImpl.java     18 Jun 2002 16:53:10 -0000      1.18
  +++ DeserializerImpl.java     27 Jun 2002 23:10:36 -0000      1.19
  @@ -322,7 +322,10 @@
           // there is nothing to deserialize.
           if (JavaUtils.isTrueExplicitly(Constants.getValue(attributes,
                                           Constants.URIS_SCHEMA_XSI,
  -                                        "nil"))) {
  +                                        "nil")) ||
  +            JavaUtils.isTrueExplicitly(Constants.getValue(attributes,
  +                                        Constants.URIS_SCHEMA_XSI,
  +                                        "null"))) {
             value = null;
             isNil = true;
             return;
  
  
  
  1.38      +0 -33     xml-axis/java/test/encoding/TestDeser.java
  
  Index: TestDeser.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/encoding/TestDeser.java,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- TestDeser.java    11 Jun 2002 14:54:02 -0000      1.37
  +++ TestDeser.java    27 Jun 2002 23:10:36 -0000      1.38
  @@ -285,34 +285,6 @@
                       list, true);
       }
   
  -    public void testArrayWithNilInt() throws Exception {
  -        ArrayList list = new ArrayList(4);
  -        list.add(new Integer(1));
  -        list.add(null);
  -        list.add(new Integer(3));
  -        deserialize("<result xsi:type=\"soapenc:Array\" " +
  -                            "soapenc:arrayType=\"xsd:int[3]\"> " +
  -                       "<item xsi:type=\"xsd:int\">1</item>" +
  -                       "<item xsi:nil=\"true\"/>" +
  -                       "<item xsi:type=\"xsd:int\">3</item>" +
  -                    "</result>",
  -                    list, true);
  -    }
  -    
  -    public void testArrayWithNilString() throws Exception {
  -        ArrayList list = new ArrayList(4);
  -        list.add("abc");
  -        list.add(null);
  -        list.add("def");
  -        deserialize("<result xsi:type=\"soapenc:Array\" " +
  -                            "soapenc:arrayType=\"xsd:string[3]\"> " +
  -                       "<item xsi:type=\"xsd:string\">abc</item>" +
  -                       "<item xsi:nil=\"true\"/>" +
  -                       "<item xsi:type=\"xsd:string\">def</item>" +
  -                    "</result>",
  -                    list, true);
  -    }
  -    
       public void testMap() throws Exception {
           HashMap m = new HashMap();
           m.put("abcKey", "abcVal");
  @@ -339,11 +311,6 @@
                       "abc");
       }
   
  -    public void testNilSOAPBoolean() throws Exception {
  -        deserialize("<result xsi:type=\"soapenc:boolean\" xsi:nil=\"true\" />",
  -                    null);
  -    }
  -    
       // Complicated array tests
   
       // type=soapenc:Array
  
  
  
  1.6       +52 -0     xml-axis/java/test/encoding/TestDeser1999.java
  
  Index: TestDeser1999.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/encoding/TestDeser1999.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- TestDeser1999.java        31 May 2002 19:08:10 -0000      1.5
  +++ TestDeser1999.java        27 Jun 2002 23:10:36 -0000      1.6
  @@ -1,5 +1,7 @@
   package test.encoding;
   
  +import java.util.ArrayList;
  +import java.util.HashMap;
   import org.apache.axis.Constants;
   
   /** 
  @@ -10,5 +12,55 @@
       public TestDeser1999(String name) {
           super(name, Constants.URI_1999_SCHEMA_XSI,
                       Constants.URI_1999_SCHEMA_XSD);
  +    }
  +
  +    public void testMapWithNulls() throws Exception {
  +        HashMap m = new HashMap();
  +        m.put(null, new Boolean("false"));
  +        m.put("hi", null);
  +        deserialize("<result xsi:type=\"xmlsoap:Map\" " +
  +                    "xmlns:xmlsoap=\"http://xml.apache.org/xml-soap\";> " +
  +                      "<item>" +
  +                       "<key xsi:null=\"true\"/>" +
  +                       "<value xsi:type=\"xsd:boolean\">false</value>" + 
  +                      "</item><item>" +
  +                       "<key xsi:type=\"string\">hi</key>" +
  +                       "<value xsi:null=\"true\"/>" +
  +                      "</item>" +
  +                    "</result>",
  +                    m);
  +    }
  +
  +    public void testArrayWithNullInt() throws Exception {
  +        ArrayList list = new ArrayList(4);
  +        list.add(new Integer(1));
  +        list.add(null);
  +        list.add(new Integer(3));
  +        deserialize("<result xsi:type=\"soapenc:Array\" " +
  +                            "soapenc:arrayType=\"xsd:int[3]\"> " +
  +                       "<item xsi:type=\"xsd:int\">1</item>" +
  +                       "<item xsi:null=\"true\"/>" +
  +                       "<item xsi:type=\"xsd:int\">3</item>" +
  +                    "</result>",
  +                    list, true);
  +    }
  +    
  +    public void testArrayWithNullString() throws Exception {
  +        ArrayList list = new ArrayList(4);
  +        list.add("abc");
  +        list.add(null);
  +        list.add("def");
  +        deserialize("<result xsi:type=\"soapenc:Array\" " +
  +                            "soapenc:arrayType=\"xsd:string[3]\"> " +
  +                       "<item xsi:type=\"xsd:string\">abc</item>" +
  +                       "<item xsi:null=\"true\"/>" +
  +                       "<item xsi:type=\"xsd:string\">def</item>" +
  +                    "</result>",
  +                    list, true);
  +    }
  +    
  +    public void testNullSOAPBoolean() throws Exception {
  +        deserialize("<result xsi:type=\"soapenc:boolean\" xsi:null=\"true\" />",
  +                    null);
       }
   }
  
  
  
  1.6       +52 -0     xml-axis/java/test/encoding/TestDeser2000.java
  
  Index: TestDeser2000.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/encoding/TestDeser2000.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- TestDeser2000.java        31 May 2002 19:08:10 -0000      1.5
  +++ TestDeser2000.java        27 Jun 2002 23:10:36 -0000      1.6
  @@ -1,5 +1,7 @@
   package test.encoding;
   
  +import java.util.ArrayList;
  +import java.util.HashMap;
   import org.apache.axis.Constants;
   
   /** 
  @@ -10,5 +12,55 @@
       public TestDeser2000(String name) {
           super(name, Constants.URI_2000_SCHEMA_XSI,
                       Constants.URI_2000_SCHEMA_XSD);
  +    }
  +
  +    public void testMapWithNulls() throws Exception {
  +        HashMap m = new HashMap();
  +        m.put(null, new Boolean("false"));
  +        m.put("hi", null);
  +        deserialize("<result xsi:type=\"xmlsoap:Map\" " +
  +                    "xmlns:xmlsoap=\"http://xml.apache.org/xml-soap\";> " +
  +                      "<item>" +
  +                       "<key xsi:null=\"true\"/>" +
  +                       "<value xsi:type=\"xsd:boolean\">false</value>" + 
  +                      "</item><item>" +
  +                       "<key xsi:type=\"string\">hi</key>" +
  +                       "<value xsi:null=\"true\"/>" +
  +                      "</item>" +
  +                    "</result>",
  +                    m);
  +    }
  +
  +    public void testArrayWithNullInt() throws Exception {
  +        ArrayList list = new ArrayList(4);
  +        list.add(new Integer(1));
  +        list.add(null);
  +        list.add(new Integer(3));
  +        deserialize("<result xsi:type=\"soapenc:Array\" " +
  +                            "soapenc:arrayType=\"xsd:int[3]\"> " +
  +                       "<item xsi:type=\"xsd:int\">1</item>" +
  +                       "<item xsi:null=\"true\"/>" +
  +                       "<item xsi:type=\"xsd:int\">3</item>" +
  +                    "</result>",
  +                    list, true);
  +    }
  +    
  +    public void testArrayWithNullString() throws Exception {
  +        ArrayList list = new ArrayList(4);
  +        list.add("abc");
  +        list.add(null);
  +        list.add("def");
  +        deserialize("<result xsi:type=\"soapenc:Array\" " +
  +                            "soapenc:arrayType=\"xsd:string[3]\"> " +
  +                       "<item xsi:type=\"xsd:string\">abc</item>" +
  +                       "<item xsi:null=\"true\"/>" +
  +                       "<item xsi:type=\"xsd:string\">def</item>" +
  +                    "</result>",
  +                    list, true);
  +    }
  +    
  +    public void testNullSOAPBoolean() throws Exception {
  +        deserialize("<result xsi:type=\"soapenc:boolean\" xsi:null=\"true\" />",
  +                    null);
       }
   }
  
  
  
  1.15      +34 -0     xml-axis/java/test/encoding/TestDeser2001.java
  
  Index: TestDeser2001.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/encoding/TestDeser2001.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- TestDeser2001.java        11 Jun 2002 14:54:02 -0000      1.14
  +++ TestDeser2001.java        27 Jun 2002 23:10:36 -0000      1.15
  @@ -3,6 +3,7 @@
   import org.apache.axis.Constants;
   import org.apache.axis.encoding.Hex;
   
  +import java.util.ArrayList;
   import java.util.Calendar;
   import java.util.HashMap;
   import java.util.SimpleTimeZone;
  @@ -141,4 +142,37 @@
                       m);
       }
   
  +    public void testArrayWithNilInt() throws Exception {
  +        ArrayList list = new ArrayList(4);
  +        list.add(new Integer(1));
  +        list.add(null);
  +        list.add(new Integer(3));
  +        deserialize("<result xsi:type=\"soapenc:Array\" " +
  +                            "soapenc:arrayType=\"xsd:int[3]\"> " +
  +                       "<item xsi:type=\"xsd:int\">1</item>" +
  +                       "<item xsi:nil=\"true\"/>" +
  +                       "<item xsi:type=\"xsd:int\">3</item>" +
  +                    "</result>",
  +                    list, true);
  +    }
  +    
  +    public void testArrayWithNilString() throws Exception {
  +        ArrayList list = new ArrayList(4);
  +        list.add("abc");
  +        list.add(null);
  +        list.add("def");
  +        deserialize("<result xsi:type=\"soapenc:Array\" " +
  +                            "soapenc:arrayType=\"xsd:string[3]\"> " +
  +                       "<item xsi:type=\"xsd:string\">abc</item>" +
  +                       "<item xsi:nil=\"true\"/>" +
  +                       "<item xsi:type=\"xsd:string\">def</item>" +
  +                    "</result>",
  +                    list, true);
  +    }
  +    
  +    public void testNilSOAPBoolean() throws Exception {
  +        deserialize("<result xsi:type=\"soapenc:boolean\" xsi:nil=\"true\" />",
  +                    null);
  +    }
  +    
   }
  
  
  


Reply via email to