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]))