You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-dev@xml.apache.org by gd...@apache.org on 2001/05/11 19:38:39 UTC
cvs commit: xml-soap/java/src/org/apache/soap/encoding/soapenc ArraySerializer.java MapSerializer.java ParameterSerializer.java SoapEncUtils.java VectorSerializer.java
gdaniels 01/05/11 10:38:38
Modified: java/src/org/apache/soap/encoding/soapenc
ArraySerializer.java MapSerializer.java
ParameterSerializer.java SoapEncUtils.java
VectorSerializer.java
Log:
Finish ability to recognize 1999, 2000, and 2001 schema types. We were
already mapping all the XSD types correctly, but we had been looking for
only the CURRENT schema XSI prefix when deserializing.
Now we check for all three namespaces for the "type" attribute, which
seems to work fine.
Revision Changes Path
1.7 +1 -3 xml-soap/java/src/org/apache/soap/encoding/soapenc/ArraySerializer.java
Index: ArraySerializer.java
===================================================================
RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/encoding/soapenc/ArraySerializer.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- ArraySerializer.java 2001/03/19 06:20:51 1.6
+++ ArraySerializer.java 2001/05/11 17:38:08 1.7
@@ -168,9 +168,7 @@
String actualEncStyle = declEncStyle != null
? declEncStyle
: inScopeEncStyle;
- QName declItemType = SoapEncUtils.getAttributeValue(tempEl,
- Constants.NS_URI_CURRENT_SCHEMA_XSI, Constants.ATTR_TYPE, "array item",
- false);
+ QName declItemType = SoapEncUtils.getTypeQName(tempEl);
QName actualItemType = declItemType != null
? declItemType
: arrayItemType;
1.6 +1 -2 xml-soap/java/src/org/apache/soap/encoding/soapenc/MapSerializer.java
Index: MapSerializer.java
===================================================================
RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/encoding/soapenc/MapSerializer.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- MapSerializer.java 2001/03/19 06:20:51 1.5
+++ MapSerializer.java 2001/05/11 17:38:12 1.6
@@ -198,8 +198,7 @@
String actualEncStyle = declEncStyle != null
? declEncStyle
: inScopeEncStyle;
- QName declItemType = SoapEncUtils.getAttributeValue(targetEl,
- Constants.NS_URI_CURRENT_SCHEMA_XSI, Constants.ATTR_TYPE, STR_ITEM, false);
+ QName declItemType = SoapEncUtils.getTypeQName(targetEl);
return xjmr.unmarshall(actualEncStyle, declItemType, targetEl, ctx);
}
1.8 +2 -8 xml-soap/java/src/org/apache/soap/encoding/soapenc/ParameterSerializer.java
Index: ParameterSerializer.java
===================================================================
RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/encoding/soapenc/ParameterSerializer.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- ParameterSerializer.java 2001/03/19 06:20:51 1.7
+++ ParameterSerializer.java 2001/05/11 17:38:15 1.8
@@ -128,10 +128,7 @@
}
QName soapType =
- SoapEncUtils.getAttributeValue(paramEl,
- Constants.NS_URI_CURRENT_SCHEMA_XSI,
- Constants.ATTR_TYPE,
- "parameter", false);
+ SoapEncUtils.getTypeQName(paramEl);
if (soapType == null) {
// no xsi:type attribute found: determine the type as the
@@ -155,10 +152,7 @@
}
else {
QName soapType =
- SoapEncUtils.getAttributeValue(paramEl,
- Constants.NS_URI_CURRENT_SCHEMA_XSI,
- Constants.ATTR_TYPE,
- "parameter", false);
+ SoapEncUtils.getTypeQName(paramEl);
if (soapType == null) {
// no xsi:type attribute found: determine the type as the
1.6 +26 -0 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.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- SoapEncUtils.java 2001/03/19 06:20:51 1.5
+++ SoapEncUtils.java 2001/05/11 17:38:19 1.6
@@ -243,4 +243,30 @@
return null;
}
}
+
+ /** Get the value of the xsi:type attribute, for varying values of
+ * the xsi namespace.
+ *
+ */
+ public static QName getTypeQName(Element el)
+ throws IllegalArgumentException
+ {
+ // Try 1999
+ QName typeQName = getAttributeValue(el, Constants.NS_URI_1999_SCHEMA_XSI,
+ Constants.ATTR_TYPE, null, false);
+ if (typeQName != null)
+ return typeQName;
+
+ // Try 2000
+ typeQName = getAttributeValue(el, Constants.NS_URI_2000_SCHEMA_XSI,
+ Constants.ATTR_TYPE, null, false);
+ if (typeQName != null)
+ return typeQName;
+
+ // Try 2001
+ typeQName = getAttributeValue(el, Constants.NS_URI_2001_SCHEMA_XSI,
+ Constants.ATTR_TYPE, null, false);
+
+ return typeQName;
+ }
}
1.6 +1 -3 xml-soap/java/src/org/apache/soap/encoding/soapenc/VectorSerializer.java
Index: VectorSerializer.java
===================================================================
RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/encoding/soapenc/VectorSerializer.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- VectorSerializer.java 2001/03/19 06:20:51 1.5
+++ VectorSerializer.java 2001/05/11 17:38:22 1.6
@@ -179,9 +179,7 @@
String actualEncStyle = declEncStyle != null
? declEncStyle
: inScopeEncStyle;
- QName declItemType = SoapEncUtils.getAttributeValue(tempEl,
- Constants.NS_URI_CURRENT_SCHEMA_XSI, Constants.ATTR_TYPE, "Vector item",
- false);
+ QName declItemType = SoapEncUtils.getTypeQName(tempEl);
QName actualItemType = declItemType;
Bean itemBean = xjmr.unmarshall(actualEncStyle, actualItemType,