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 2005/05/06 23:53:23 UTC
cvs commit: ws-axis/java/src/org/apache/axis/encoding/ser ArrayDeserializer.java
dims 2005/05/06 14:53:23
Modified: java/src/org/apache/axis/encoding/ser ArrayDeserializer.java
Log:
Fix for Multi-array deserialization
URL: http://issues.apache.org/jira/browse/AXIS-1973
Revision Changes Path
1.48 +9 -0 ws-axis/java/src/org/apache/axis/encoding/ser/ArrayDeserializer.java
Index: ArrayDeserializer.java
===================================================================
RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/encoding/ser/ArrayDeserializer.java,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -r1.47 -r1.48
--- ArrayDeserializer.java 12 Apr 2005 22:18:15 -0000 1.47
+++ ArrayDeserializer.java 6 May 2005 21:53:23 -0000 1.48
@@ -475,6 +475,10 @@
addChildDeserializer(dSer);
curIndex++;
+
+ // In case of multi-array, we need to specify the destination class
+ // of the children elements of this element array deserializer.
+ context.setDestinationClass(arrayClass.getComponentType());
if (log.isDebugEnabled()) {
log.debug("Exit: ArrayDeserializer.onStartChild()");
@@ -483,6 +487,11 @@
return (SOAPHandler)dSer;
}
+ public void onEndChild(String namespace, String localName, DeserializationContext context) throws SAXException {
+ // reverse onStartChild operation.
+ context.setDestinationClass(arrayClass);
+ }
+
public void characters(char[] chars, int i, int i1) throws SAXException {
for (int idx = i; i < i1; i++) {
if (!Character.isWhitespace(chars[idx]))