Author: sagara Date: Tue Aug 9 16:34:32 2011 New Revision: 1155425 URL: http://svn.apache.org/viewvc?rev=1155425&view=rev Log: Improved List, Map and DOM Document support for POJODeployer.
Modified: axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java Modified: axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java?rev=1155425&r1=1155424&r2=1155425&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java (original) +++ axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java Tue Aug 9 16:34:32 2011 @@ -273,9 +273,14 @@ public class BeanUtil { * Copied from ADBXMLStreamReaderImpl. * For inner Arrary Complex types we use the special local name array - "array" */ - QName itemName = new QName(elemntNameSpace.getNamespaceURI(), - Constants.INNER_ARRAY_COMPLEX_TYPE_NAME, - elemntNameSpace.getPrefix()); + QName itemName; + if (qualified) { + itemName = new QName(elemntNameSpace.getNamespaceURI(), + Constants.INNER_ARRAY_COMPLEX_TYPE_NAME, + elemntNameSpace.getPrefix()); + } else { + itemName = new QName(Constants.INNER_ARRAY_COMPLEX_TYPE_NAME); + } propertyQnameValueList.add(getOMElement(propertyQName , (Object[]) o, itemName, qualified, typeTable)); } else { @@ -1457,11 +1462,15 @@ public class BeanUtil { Map results, TypeTable typeTable, boolean elementFormDefault) { Iterator<Object> keyItr = results.keySet().iterator(); List<OMElement> list = new ArrayList<OMElement>(); - OMNamespace ns = fac.createOMNamespace( - org.apache.axis2.Constants.AXIS2_MAP_NAMESPACE_URI, - org.apache.axis2.Constants.AXIS2_MAP_NAMESPACE_PREFIX); + OMNamespace ns = null; Type keyType = Object.class; - Type valueType = Object.class; + Type valueType = Object.class; + if (elementFormDefault) { + ns = fac.createOMNamespace( + org.apache.axis2.Constants.AXIS2_MAP_NAMESPACE_URI, + org.apache.axis2.Constants.AXIS2_MAP_NAMESPACE_PREFIX); + } + if (type instanceof ParameterizedType) { ParameterizedType aType = (ParameterizedType) type; Type[] parameterArgTypes = aType.getActualTypeArguments(); @@ -1476,12 +1485,21 @@ public class BeanUtil { if (key != null) { value = results.get(key); List<Object> properties = new ArrayList<Object>(); - QName keyName = new QName(ns.getNamespaceURI(), - org.apache.axis2.Constants.MAP_KEY_ELEMENT_NAME, ns - .getPrefix()); - QName valueName = new QName(ns.getNamespaceURI(), - org.apache.axis2.Constants.MAP_VALUE_ELEMENT_NAME, ns - .getPrefix()); + QName keyName; + QName valueName; + if (elementFormDefault) { + keyName = new QName(ns.getNamespaceURI(), + org.apache.axis2.Constants.MAP_KEY_ELEMENT_NAME, + ns.getPrefix()); + valueName = new QName(ns.getNamespaceURI(), + org.apache.axis2.Constants.MAP_VALUE_ELEMENT_NAME, + ns.getPrefix()); + } else { + keyName = new QName( + org.apache.axis2.Constants.MAP_KEY_ELEMENT_NAME); + valueName = new QName( + org.apache.axis2.Constants.MAP_VALUE_ELEMENT_NAME); + } Object kValue = getMapParameterElement(fac, org.apache.axis2.Constants.MAP_KEY_ELEMENT_NAME, key, @@ -1514,12 +1532,18 @@ public class BeanUtil { properties.add(vValue); } + QName entryQName; + if (elementFormDefault) { + entryQName = new QName(ns.getNamespaceURI(), + org.apache.axis2.Constants.MAP_ENTRY_ELEMENT_NAME, + ns.getPrefix()); + } else { + entryQName = new QName( + org.apache.axis2.Constants.MAP_ENTRY_ELEMENT_NAME); + } XMLStreamReader pullParser = new ADBXMLStreamReaderImpl( - new QName( - ns.getNamespaceURI(), - org.apache.axis2.Constants.MAP_ENTRY_ELEMENT_NAME, - ns.getPrefix()), properties.toArray(), null, + entryQName, properties.toArray(), null, typeTable, elementFormDefault); StAXOMBuilder stAXOMBuilder = new StAXOMBuilder( @@ -1632,16 +1656,29 @@ public class BeanUtil { if (SimpleTypeMapper.isMap(value.getClass())) { List<OMElement> childList = getMapElement(fac, valueType, (Map) value, typeTable, elementFormDefault); - OMElement omValue = fac.createOMElement(elementName, - ns.getNamespaceURI(), ns.getPrefix()); + OMElement omValue; + if(elementFormDefault) { + omValue = fac.createOMElement(elementName, + ns.getNamespaceURI(), ns.getPrefix()); + } else { + omValue = fac.createOMElement(elementName, null); + + } for (OMElement child : childList) { omValue.addChild(child); } return omValue; - } else if (SimpleTypeMapper.isCollection(value.getClass())) { - QName elementQName = new QName(ns.getNamespaceURI(), elementName, - ns.getPrefix()); + } else if (SimpleTypeMapper.isCollection(value.getClass())) { + QName elementQName; + if(elementFormDefault) { + elementQName = new QName(ns.getNamespaceURI(), elementName, + ns.getPrefix()); + } else { + elementQName = new QName(elementName); + + } + return getCollectionElement(fac, valueType, (Collection) value, elementName, null, elementQName, typeTable, elementFormDefault).getChildren(); @@ -1653,8 +1690,13 @@ public class BeanUtil { omValue.addChild(fac.createOMText(SimpleTypeMapper .getStringValue(value))); } else { - QName name = new QName(ns.getNamespaceURI(), elementName, - ns.getPrefix()); + QName name; + if(elementFormDefault) { + name = new QName(ns.getNamespaceURI(), elementName, + ns.getPrefix()); + } else { + name = new QName(elementName); + } XMLStreamReader xr = BeanUtil.getPullParser(value, name, typeTable, true, false); OMXMLParserWrapper stAXOMBuilder = OMXMLBuilderFactory @@ -1783,15 +1825,25 @@ public class BeanUtil { if (value != null) { value = getCollectionItemElement(fac, elementName, value, valueType, typeTable, ns, elementFormDefault); - properties.add(new QName(ns.getNamespaceURI(), elementName, ns - .getPrefix())); + QName valueQName; + if (elementFormDefault) { + valueQName = new QName(ns.getNamespaceURI(), elementName, + ns.getPrefix()); + } else { + valueQName = new QName(elementName); + } + properties.add(valueQName); properties.add(value); } } - - XMLStreamReader pullParser = new ADBXMLStreamReaderImpl(new QName( - ns.getNamespaceURI(), elementQName.getLocalPart(), - ns.getPrefix()), properties.toArray(), null, typeTable, + QName eleQName; + if (elementFormDefault) { + eleQName = new QName(ns.getNamespaceURI(), + elementQName.getLocalPart(), ns.getPrefix()); + } else { + eleQName = new QName(elementQName.getLocalPart()); + } + XMLStreamReader pullParser = new ADBXMLStreamReaderImpl(eleQName, properties.toArray(), null, typeTable, elementFormDefault); StAXOMBuilder stAXOMBuilder = new StAXOMBuilder( @@ -1840,9 +1892,14 @@ public class BeanUtil { omValue.addChild(fac.createOMText(SimpleTypeMapper .getStringValue(value))); } else { - QName name = new QName(ns.getNamespaceURI(), elementName, - ns.getPrefix()); - XMLStreamReader xr = BeanUtil.getPullParser(value, name, + QName name; + if (elementFormDefault) { + name = new QName(ns.getNamespaceURI(), elementName, + ns.getPrefix()); + } else { + name = new QName(elementName); + } + XMLStreamReader xr = BeanUtil.getPullParser(value, name, typeTable, true, false); OMXMLParserWrapper stAXOMBuilder = OMXMLBuilderFactory .createStAXOMBuilder(OMAbstractFactory.getOMFactory(),