duftler 02/05/29 11:45:43
Modified: java/src/org/apache/soap/encoding/soapenc
BooleanDeserializer.java SoapEncUtils.java
Log:
Changed unmarshalling of xsi:null to be just as liberal as
BooleanDeserializer is in what it accepts. For more info,
please see: http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9395
Submitted by: Marc Tremblay [[EMAIL PROTECTED]]
Reviewed by: Matthew J. Duftler ([EMAIL PROTECTED])
Revision Changes Path
1.3 +4 -11
xml-soap/java/src/org/apache/soap/encoding/soapenc/BooleanDeserializer.java
Index: BooleanDeserializer.java
===================================================================
RCS file:
/home/cvs/xml-soap/java/src/org/apache/soap/encoding/soapenc/BooleanDeserializer.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- BooleanDeserializer.java 16 Jul 2001 01:44:14 -0000 1.2
+++ BooleanDeserializer.java 29 May 2002 18:45:43 -0000 1.3
@@ -78,19 +78,12 @@
throws IllegalArgumentException {
Element root = (Element)src;
String value = DOMUtils.getChildCharacterData(root);
-
+
if ((value == null) || (value.length() == 0))
throw new IllegalArgumentException("Missing boolean value");
- switch (value.charAt(0)) {
- case '0': case 'f': case 'F':
- return new Bean(boolean.class, Boolean.FALSE);
-
- case '1': case 't': case 'T':
- return new Bean(boolean.class, Boolean.TRUE);
-
- default:
- throw new IllegalArgumentException("Invalid boolean value: " + value);
- }
+ return SoapEncUtils.decodeBooleanValue(value)
+ ? new Bean(boolean.class, Boolean.TRUE)
+ : new Bean(boolean.class, Boolean.FALSE);
}
}
1.9 +16 -2
xml-soap/java/src/org/apache/soap/encoding/soapenc/SoapEncUtils.java
Index: SoapEncUtils.java
===================================================================
RCS file:
/home/cvs/xml-soap/java/src/org/apache/soap/encoding/soapenc/SoapEncUtils.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- SoapEncUtils.java 16 Apr 2002 17:14:14 -0000 1.8
+++ SoapEncUtils.java 29 May 2002 18:45:43 -0000 1.9
@@ -211,8 +211,22 @@
Constants.NS_URI_CURRENT_SCHEMA_XSI,
Constants.ATTR_NULL);
- return nullValue != null
- && nullValue.equals(Constants.ATTRVAL_TRUE);
+ return nullValue != null && decodeBooleanValue(nullValue);
+ }
+
+ public static boolean decodeBooleanValue(String value)
+ {
+ switch (value.charAt(0))
+ {
+ case '0': case 'f': case 'F':
+ return false;
+
+ case '1': case 't': case 'T':
+ return true;
+
+ default:
+ throw new IllegalArgumentException("Invalid boolean value: " + value);
+ }
}
public static QName getAttributeValue(Element el,