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);
+ }
+
}