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 am...@apache.org on 2008/09/11 07:37:00 UTC

svn commit: r694139 - /webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderImpl.java

Author: amilas
Date: Wed Sep 10 22:36:59 2008
New Revision: 694139

URL: http://svn.apache.org/viewvc?rev=694139&view=rev
Log:
fixed the issue AXIS2-4026

Modified:
    webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderImpl.java

Modified: webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderImpl.java?rev=694139&r1=694138&r2=694139&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderImpl.java (original)
+++ webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderImpl.java Wed Sep 10 22:36:59 2008
@@ -24,6 +24,7 @@
 import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.impl.util.OMSerializerUtil;
 import org.apache.axis2.databinding.ADBBean;
+import org.apache.axis2.databinding.typemapping.SimpleTypeMapper;
 import org.apache.axis2.databinding.utils.BeanUtil;
 import org.apache.axis2.databinding.utils.ConverterUtil;
 import org.apache.axis2.description.java2wsdl.TypeTable;
@@ -35,6 +36,7 @@
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 import java.util.*;
+import java.lang.reflect.Array;
 
 /**
  * This is the new implementation of the ADBpullaparser. The approach here is simple When the pull
@@ -945,18 +947,23 @@
             childReader.init();
         } else if (propertyValue.getClass().isArray()) {
             // this is an arrary object and we need to get the pull parser for that
-            Object[] objectArray = (Object[]) propertyValue;
-            if (objectArray.length == 0) {
+            int length = Array.getLength(propertyValue);
+            if (length == 0) {
                 //advance the index
                 currentPropertyIndex = currentPropertyIndex + 2;
                 return processProperties();
             } else {
                 List objects = new ArrayList();
-
-                for (int i = 0; i < objectArray.length; i++) {
+                Object valueObject = null;
+                for (int i = 0; i < length; i++) {
                     //for innter Arrary Complex types we use the special local name array
                     objects.add(new QName(propertyQName.getNamespaceURI(), "array"));
-                    objects.add(objectArray[i]);
+                    valueObject = Array.get(propertyValue, i);
+                    if ((valueObject != null) && SimpleTypeMapper.isSimpleType(valueObject)){
+                        objects.add(SimpleTypeMapper.getStringValue(valueObject));
+                    } else {
+                        objects.add(valueObject);
+                    }
                 }
 
                 ADBXMLStreamReader reader = new ADBXMLStreamReaderImpl(propertyQName,