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,