You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@axis.apache.org by ve...@apache.org on 2017/12/17 22:34:13 UTC

svn commit: r1818518 [3/30] - in /axis/axis2/java/core/branches/AXIS2-4091: ./ apidocs/ databinding-tests/ etc/ legal/ modules/adb-codegen/ modules/adb-codegen/src/org/apache/axis2/schema/ modules/adb-codegen/src/org/apache/axis2/schema/template/ modul...

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java Sun Dec 17 22:34:08 2017
@@ -55,7 +55,6 @@ import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamReader;
 
 import org.apache.axiom.om.*;
-import org.apache.axiom.om.impl.builder.StAXOMBuilder;
 import org.apache.axiom.util.base64.Base64Utils;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.classloader.BeanInfoCache;
@@ -68,16 +67,7 @@ import org.apache.axis2.description.java
 import org.apache.axis2.engine.ObjectSupplier;
 import org.apache.axis2.util.Loader;
 import org.apache.axis2.util.StreamWrapper;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Comment;
 import org.w3c.dom.Document;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.ProcessingInstruction;
-import org.w3c.dom.traversal.DocumentTraversal;
-import org.w3c.dom.traversal.NodeFilter;
-import org.w3c.dom.traversal.TreeWalker;
-
 
 public class BeanUtil {
    
@@ -209,11 +199,11 @@ public class BeanUtil {
                     propertyQnameValueList.add(
                             value == null ? null : SimpleTypeMapper.getStringValue(value));
                 } else if(SimpleTypeMapper.isDomDocument(ptype)){
-                	addTypeQname(elemntNameSpace, propertyQnameValueList, property,
+                    addTypeQname(elemntNameSpace, propertyQnameValueList, property,
                             beanName, processingDocLitBare);
-                	OMFactory fac = OMAbstractFactory.getOMFactory();
-                    propertyQnameValueList.add(convertDOMtoOM(fac, value));            	
-                	
+                    OMFactory fac = OMAbstractFactory.getOMFactory();
+                    propertyQnameValueList.add(convertDOMtoOM(fac, value));
+                    
                 } else if (ptype.isArray()) {
                     if (SimpleTypeMapper.isSimpleType(ptype.getComponentType())) {
                         if (value != null) {
@@ -250,39 +240,39 @@ public class BeanUtil {
                                 } else {
                                     propertyQName = new QName(propertyName);
 
-                                }                                                    
+                                }
                                 
-								if (SimpleTypeMapper
-										.isObjectArray(o.getClass())
-										|| SimpleTypeMapper
-												.isMultidimensionalObjectArray(o
-														.getClass())) {
-									/**
-            						 * If it is a Object[] we need to add instance type
-            						 * attributes to the response message.
-            						 * Copied from ADBXMLStreamReaderImpl. 
-            						 * For inner Arrary Complex types we use the special local name array - "array"
-            						 */
-								    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));                                	
+                                if (SimpleTypeMapper
+                                        .isObjectArray(o.getClass())
+                                        || SimpleTypeMapper
+                                                .isMultidimensionalObjectArray(o
+                                                        .getClass())) {
+                                    /**
+                                     * If it is a Object[] we need to add instance type
+                                     * attributes to the response message.
+                                     * Copied from ADBXMLStreamReaderImpl. 
+                                     * For inner Arrary Complex types we use the special local name array - "array"
+                                     */
+                                    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 {
-                                	if(SimpleTypeMapper.isObjectArray(value.getClass())){
-                                		OMFactory fac = OMAbstractFactory.getOMFactory();
-                                    	OMElement element = fac.createOMElement(propertyQName);
-                                    	element.addChild(fac.createOMText(SimpleTypeMapper.getStringValue(o)));  
-                                    	addInstanceTypeAttribute(fac, element, o, typeTable);
-                                    	propertyQnameValueList.add(element);
-                                	} else {
-                                		propertyQnameValueList.add(o);                                 		
-                                	}                                	
+                                    if(SimpleTypeMapper.isObjectArray(value.getClass())){
+                                        OMFactory fac = OMAbstractFactory.getOMFactory();
+                                        OMElement element = fac.createOMElement(propertyQName);
+                                        element.addChild(fac.createOMText(SimpleTypeMapper.getStringValue(o)));  
+                                        addInstanceTypeAttribute(fac, element, o, typeTable);
+                                        propertyQnameValueList.add(element);
+                                    } else {
+                                        propertyQnameValueList.add(o);
+                                    }
                                 }
                                
                             }
@@ -294,70 +284,69 @@ public class BeanUtil {
                     }
                 } else  if (SimpleTypeMapper.isCollection(ptype) && value != null) { 
                     if (typeTable != null) {
-                	OMFactory fac = OMAbstractFactory.getOMFactory();					
-			QName qNamefortheType = null;					
-			qNamefortheType = (QName) typeTable
-				.getComplexSchemaMap().get(getClassName(beanClass));					
-			Type genericType = property.getReadMethod().getGenericReturnType();
-			OMElement collection = BeanUtil.getCollectionElement(
-					fac, genericType,
-					(Collection) value, propertyName,null,
-					qNamefortheType,typeTable,
-					qualified);					
-//			addTypeQname(elemntNameSpace, propertyQnameValueList,
-//					property, beanName, processingDocLitBare);
-			Iterator childItr = collection.getChildren();
-			while(childItr.hasNext()){						
-				addTypeQname(elemntNameSpace, propertyQnameValueList,
-						property, beanName, processingDocLitBare);
-				propertyQnameValueList.add(childItr.next());						
-			}	
-                	
+                        OMFactory fac = OMAbstractFactory.getOMFactory();
+                        QName qNamefortheType = null;
+                        qNamefortheType = (QName) typeTable
+                                .getComplexSchemaMap().get(getClassName(beanClass));
+                        Type genericType = property.getReadMethod().getGenericReturnType();
+                        OMElement collection = BeanUtil.getCollectionElement(
+                                fac, genericType,
+                                (Collection) value, propertyName,null,
+                                qNamefortheType,typeTable,
+                                qualified);
+//                      addTypeQname(elemntNameSpace, propertyQnameValueList,
+//                              property, beanName, processingDocLitBare);
+                        Iterator childItr = collection.getChildren();
+                        while(childItr.hasNext()){
+                            addTypeQname(elemntNameSpace, propertyQnameValueList,
+                                    property, beanName, processingDocLitBare);
+                            propertyQnameValueList.add(childItr.next());
+                        }
+                    
                     } else {
-                	 Collection<?> objList = (Collection<?>) value;
-                         if (objList != null && objList.size() > 0) {
-                             //this was given error , when the array.size = 0
-                             // and if the array contain simple type , then the ADBPullParser asked
-                             // PullParser from That simpel type
-                             for (Object o : objList) {
-                                 if (SimpleTypeMapper.isSimpleType(o)) {
-                                     addTypeQname(elemntNameSpace, propertyQnameValueList,
-                                                  property, beanName, processingDocLitBare);
-                                     propertyQnameValueList.add(o);
-                                 } else {
-                                     addTypeQname(elemntNameSpace, propertyQnameValueList,
-                                                  property, beanName, processingDocLitBare);
-                                     propertyQnameValueList.add(o);
-                                 }
-                             }
-
-                         } else {
-                             addTypeQname(elemntNameSpace, propertyQnameValueList, property,
-                                          beanName, processingDocLitBare);
-                             propertyQnameValueList.add(value);
-                         }
+                        Collection<?> objList = (Collection<?>) value;
+                        if (objList != null && objList.size() > 0) {
+                            //this was given error , when the array.size = 0
+                            // and if the array contain simple type , then the ADBPullParser asked
+                            // PullParser from That simpel type
+                            for (Object o : objList) {
+                                if (SimpleTypeMapper.isSimpleType(o)) {
+                                    addTypeQname(elemntNameSpace, propertyQnameValueList,
+                                            property, beanName, processingDocLitBare);
+                                    propertyQnameValueList.add(o);
+                                } else {
+                                    addTypeQname(elemntNameSpace, propertyQnameValueList,
+                                            property, beanName, processingDocLitBare);
+                                    propertyQnameValueList.add(o);
+                                }
+                            }
+
+                        } else {
+                            addTypeQname(elemntNameSpace, propertyQnameValueList, property,
+                                    beanName, processingDocLitBare);
+                            propertyQnameValueList.add(value);
+                        }
                     }
-                          
-									
+                    
                 } else if (SimpleTypeMapper.isMap(ptype) && value != null) {
-					OMFactory fac = OMAbstractFactory.getOMFactory();
-					QName qNamefortheType = (QName) typeTable
-							.getComplexSchemaMap().get(getClassName(beanClass));
-					OMNamespace ns = fac.createOMNamespace(
-										qNamefortheType.getNamespaceURI(),
-										qNamefortheType.getPrefix());
-					List<OMElement> mapEntries = getMapElement(fac,
-							ptype, (Map) value, typeTable, qualified);
-					OMElement map = fac.createOMElement(propertyName,
-										qNamefortheType.getNamespaceURI(),
-										qNamefortheType.getPrefix());
-					for (OMElement ele : mapEntries) {
-						map.addChild(ele);
-					}
-					addTypeQname(elemntNameSpace, propertyQnameValueList,
-							property, beanName, processingDocLitBare);
-					propertyQnameValueList.add(map);
-				} else if (SimpleTypeMapper.isEnum(ptype)){
+                    OMFactory fac = OMAbstractFactory.getOMFactory();
+                    QName qNamefortheType = (QName) typeTable
+                            .getComplexSchemaMap().get(getClassName(beanClass));
+                    OMNamespace ns = fac.createOMNamespace(
+                                        qNamefortheType.getNamespaceURI(),
+                                        qNamefortheType.getPrefix());
+                    List<OMElement> mapEntries = getMapElement(fac,
+                            ptype, (Map) value, typeTable, qualified);
+                    OMElement map = fac.createOMElement(propertyName,
+                                        qNamefortheType.getNamespaceURI(),
+                                        qNamefortheType.getPrefix());
+                    for (OMElement ele : mapEntries) {
+                        map.addChild(ele);
+                    }
+                    addTypeQname(elemntNameSpace, propertyQnameValueList,
+                            property, beanName, processingDocLitBare);
+                    propertyQnameValueList.add(map);
+                } else if (SimpleTypeMapper.isEnum(ptype)){
                     addTypeQname(elemntNameSpace, propertyQnameValueList, property,
                                  beanName, processingDocLitBare);
                     propertyQnameValueList.add(
@@ -365,13 +354,13 @@ public class BeanUtil {
                 }else {
                     addTypeQname(elemntNameSpace, propertyQnameValueList, property,
                                  beanName, processingDocLitBare);
-					if (Object.class.equals(ptype)) {
-						//this is required to match this element prefix as
-						//root element's prefix.
-						QName qNamefortheType = (QName) typeTable
-								.getComplexSchemaMap().get(
-										getClassName(beanClass));
-						OMFactory fac = OMAbstractFactory.getOMFactory();
+                    if (Object.class.equals(ptype) && value != null) {
+                        //this is required to match this element prefix as
+                        //root element's prefix.
+                        QName qNamefortheType = (QName) typeTable
+                                .getComplexSchemaMap().get(
+                                        getClassName(beanClass));
+                        OMFactory fac = OMAbstractFactory.getOMFactory();
                         QName elementName;
                         OMElement element;
                         if (elemntNameSpace != null) {
@@ -381,26 +370,26 @@ public class BeanUtil {
                                     qNamefortheType.getPrefix());
                         } else {
                             elementName = new QName(property.getName());
-                        }					
-						
-						if(SimpleTypeMapper.isSimpleType(value)){
-							element = fac.createOMElement(elementName);
-							element.addChild(fac.createOMText(SimpleTypeMapper
-									.getStringValue(value)));            
-		            	}else{    
-		            		 XMLStreamReader xr = BeanUtil.getPullParser(value,
-		            				 elementName, typeTable, qualified, false);
-		                     OMXMLParserWrapper stAXOMBuilder =
-		                             OMXMLBuilderFactory.createStAXOMBuilder(
-		                                     OMAbstractFactory.getOMFactory(), new StreamWrapper(xr));
-		                     element = stAXOMBuilder.getDocumentElement();
-		                     
-		            		
-		            	}	      
-						addInstanceTypeAttribute(fac, element, value, typeTable);
-						propertyQnameValueList.add(element);
-						continue;
-					}
+                        }
+                        
+                        if(SimpleTypeMapper.isSimpleType(value)){
+                            element = fac.createOMElement(elementName);
+                            element.addChild(fac.createOMText(SimpleTypeMapper
+                                    .getStringValue(value)));
+                        }else{
+                             XMLStreamReader xr = BeanUtil.getPullParser(value,
+                                     elementName, typeTable, qualified, false);
+                             OMXMLParserWrapper stAXOMBuilder =
+                                     OMXMLBuilderFactory.createStAXOMBuilder(
+                                             OMAbstractFactory.getOMFactory(), new StreamWrapper(xr));
+                             element = stAXOMBuilder.getDocumentElement();
+                             
+                            
+                        }
+                        addInstanceTypeAttribute(fac, element, value, typeTable);
+                        propertyQnameValueList.add(element);
+                        continue;
+                    }
 
                     propertyQnameValueList.add(value);
                 }
@@ -479,7 +468,7 @@ public class BeanUtil {
                         QName typeQName = beanElement.resolveQName(instanceTypeName);
                         //Need this flag to differentiate "xsd:hexBinary" and "xsd:base64Binary" data. 
                         if(org.apache.ws.commons.schema.constants.Constants.XSD_HEXBIN.equals(typeQName)){
-                        	hexBin = true;
+                            hexBin = true;
                         }
                         TypeTable typeTable = axisService.getTypeTable();
                         String className = typeTable.getClassNameForQName(typeQName);
@@ -502,8 +491,8 @@ public class BeanUtil {
                 return null;
             }
             
-            if(beanClass.getName().equals(DataHandler.class.getName())){    
-            	return SimpleTypeMapper.getDataHandler(beanElement,hexBin);            	
+            if(beanClass.getName().equals(DataHandler.class.getName())){
+                return SimpleTypeMapper.getDataHandler(beanElement,hexBin);
             }
 
             if (beanClass.isArray()) {
@@ -539,7 +528,7 @@ public class BeanUtil {
                     }
                     return ConverterUtil.convertToArray(arrayClassType, valueList);
                 }
-            }else if(SimpleTypeMapper.isDomDocument(beanClass)){                  	
+            }else if(SimpleTypeMapper.isDomDocument(beanClass)){
                 return convertOMtoDOM(beanElement);
                 
             } else if (XMLGregorianCalendar.class.getName().equals(
@@ -614,8 +603,8 @@ public class BeanUtil {
                                 partObj = SimpleTypeMapper.getHashSet((OMElement)
                                         parts.getParent(), prty.getName());
                             } else if (SimpleTypeMapper.isCollection(parameters)) {
-                            	Type type = prty.getReadMethod().getGenericReturnType();
-                            	partObj = processGenericCollection(parts, type, null, objectSupplier);  
+                                Type type = prty.getReadMethod().getGenericReturnType();
+                                partObj = processGenericCollection(parts, type, null, objectSupplier);  
 
                             } else if (SimpleTypeMapper.isDataHandler(parameters)) {
                                 partObj = SimpleTypeMapper.getDataHandler(parts);
@@ -623,17 +612,17 @@ public class BeanUtil {
                                 partObj = deserialize(parameters, (OMElement) parts.getParent(),
                                                       objectSupplier, prty.getName());
                             } else if (SimpleTypeMapper.isMap(parameters)){
-                                partObj = null;								
+                                partObj = null;
                                 final Type type = prty.getReadMethod().getGenericReturnType();
                                 if (type instanceof ParameterizedType) {
                                     ParameterizedType aType = (ParameterizedType) type;
-                                    Type[] parameterArgTypes = aType.getActualTypeArguments();                                 
+                                    Type[] parameterArgTypes = aType.getActualTypeArguments();
+                                    partObj = processGenericsMapElement(parameterArgTypes
+                                          , (OMElement) parts.getParent(), null, parts.getChildren(), objectSupplier, beanClass);
+                                } else {
+                                    Type[] parameterArgTypes = {Object.class,Object.class}; 
                                     partObj = processGenericsMapElement(parameterArgTypes
-                                 		 , (OMElement) parts.getParent(), null, parts.getChildren(), objectSupplier, beanClass);
-                                } else {                                	 
-                                	 Type[] parameterArgTypes = {Object.class,Object.class}; 
-                                	 partObj = processGenericsMapElement(parameterArgTypes
-                                     		 , (OMElement) parts.getParent(), null, parts.getChildren(), objectSupplier, beanClass);                                	
+                                             , (OMElement) parts.getParent(), null, parts.getChildren(), objectSupplier, beanClass);
                                 }
                             }else if (SimpleTypeMapper.isEnum(parameters)) {
                                 partObj =processEnumObject(parameters , parts);
@@ -830,10 +819,10 @@ public class BeanUtil {
              */
             boolean bare = false;
             if(parameterNames == null){
-            	bare = true;            	
+                bare = true;
             }
            
-			omElement = processElement(classType, omElement, helper, parts,
+            omElement = processElement(classType, omElement, helper, parts,
                                        currentLocalName, retObjs, count, objectSupplier, genericType, bare);
             while (omElement != null) {
                 count++;
@@ -878,15 +867,15 @@ public class BeanUtil {
         return retObjs;
     }
 
-	private static OMElement processElement(Class classType,
-			OMElement omElement, MultirefHelper helper, Iterator parts,
-			String currentLocalName, Object[] retObjs, int count,
-			ObjectSupplier objectSupplier, Type genericType) throws AxisFault {
+    private static OMElement processElement(Class classType,
+            OMElement omElement, MultirefHelper helper, Iterator parts,
+            String currentLocalName, Object[] retObjs, int count,
+            ObjectSupplier objectSupplier, Type genericType) throws AxisFault {
 
-		return processElement(classType, omElement, helper, parts,
-				currentLocalName, retObjs, count, objectSupplier, genericType, false);
+        return processElement(classType, omElement, helper, parts,
+                currentLocalName, retObjs, count, objectSupplier, genericType, false);
 
-	}
+    }
     private static OMElement processElement(Class classType, OMElement omElement,
                                             MultirefHelper helper, Iterator parts,
                                             String currentLocalName,
@@ -896,10 +885,10 @@ public class BeanUtil {
                                             Type genericType, boolean bare) throws AxisFault {
         Object objValue;
         boolean isRef = false;
-        OMAttribute omatribute = MultirefHelper.processRefAtt(omElement);	        
+        OMAttribute omatribute = MultirefHelper.processRefAtt(omElement);
         if (omatribute != null) {
             isRef = true;
-        }	
+        }
         if (classType.isArray()) {
             boolean done = true;
             ArrayList<Object> valueList = new ArrayList<Object>();
@@ -938,26 +927,26 @@ public class BeanUtil {
             }
             
         } else if(SimpleTypeMapper.isCollection(classType) && ! isRef){
-        	if(bare){
-        		OMElement[] toReturn = new OMElement[1];
-        		parts = omElement.getChildren();
-            	retObjs[count] = processGenericCollection(omElement.getFirstElement(), toReturn, genericType, helper, objectSupplier, parts,bare);
-            	OMNode node = omElement.getNextOMSibling();
-            	while(node != null){
-            		if(OMElement.class.isAssignableFrom(node.getClass())){
-            			return (OMElement) node;
-            		} else {
-            			node = node.getNextOMSibling();
-            		}            		
-            	}      	
-            	            	 
-        	} else {
-        	OMElement[] toReturn = new OMElement[1];
-            	retObjs[count] = processGenericCollection(omElement, toReturn, genericType, helper, objectSupplier, parts,bare);
-            	 if (toReturn[0] != null) {        		
+            if(bare){
+                OMElement[] toReturn = new OMElement[1];
+                parts = omElement.getChildren();
+                retObjs[count] = processGenericCollection(omElement.getFirstElement(), toReturn, genericType, helper, objectSupplier, parts,bare);
+                OMNode node = omElement.getNextOMSibling();
+                while(node != null){
+                    if(OMElement.class.isAssignableFrom(node.getClass())){
+                        return (OMElement) node;
+                    } else {
+                        node = node.getNextOMSibling();
+                    }
+                }
+            
+            } else {
+            OMElement[] toReturn = new OMElement[1];
+                retObjs[count] = processGenericCollection(omElement, toReturn, genericType, helper, objectSupplier, parts,bare);
+                 if (toReturn[0] != null) {
                      return toReturn[0];
-                 }        		
-        	}        	
+                 }
+            }
         } else if (SimpleTypeMapper.isEnum(classType)) {
             /* handling enum types */
             retObjs[count] = processEnumObject(classType, omElement);
@@ -984,33 +973,33 @@ public class BeanUtil {
             } else {
                 continue;
             }
-			if (classType instanceof ParameterizedType) {
-				ParameterizedType parameterizedClassType = (ParameterizedType) classType;
-				if (Collection.class
-						.isAssignableFrom((Class<?>) parameterizedClassType
-								.getRawType())) {
-					o = processGenericCollection(omElement.getFirstElement(),
-							classType, helper, objectSupplier);
-				} else if (Map.class
-						.isAssignableFrom((Class<?>) parameterizedClassType
-								.getRawType())) {
-					o = processGenericsMapElement( 
-							parameterizedClassType.getActualTypeArguments(),
-							omElement, helper, omElement.getChildren(), objectSupplier,
-							parameterizedClassType);
-				} else {
-					o = processObject(omElement, (Class) classType,
-	                         helper, true, objectSupplier, genericType);
-				}
-    			   			
-    		} else {
-    			o = processObject(omElement, (Class) classType,
+            if (classType instanceof ParameterizedType) {
+                ParameterizedType parameterizedClassType = (ParameterizedType) classType;
+                if (Collection.class
+                        .isAssignableFrom((Class<?>) parameterizedClassType
+                                .getRawType())) {
+                    o = processGenericCollection(omElement.getFirstElement(),
+                            classType, helper, objectSupplier);
+                } else if (Map.class
+                        .isAssignableFrom((Class<?>) parameterizedClassType
+                                .getRawType())) {
+                    o = processGenericsMapElement( 
+                            parameterizedClassType.getActualTypeArguments(),
+                            omElement, helper, omElement.getChildren(), objectSupplier,
+                            parameterizedClassType);
+                } else {
+                    o = processObject(omElement, (Class) classType,
+                             helper, true, objectSupplier, genericType);
+                }
+                
+            } else {
+                o = processObject(omElement, (Class) classType,
                          helper, true, objectSupplier, genericType);
-    			
-    		}
+                
+            }
+            
+            valueList.add(o);
             
-			valueList.add(o);
-			
         }
         return valueList;
     }
@@ -1060,28 +1049,27 @@ public class BeanUtil {
                         return getSimpleTypeObjectChecked(classType, omElement);
                     }
                 } else if (SimpleTypeMapper.isCollection(classType)) {
-                	return processGenericCollection(omElement, generictype, null, objectSupplier); 
+                    return processGenericCollection(omElement, generictype, null, objectSupplier); 
 
                 } else if (SimpleTypeMapper.isDataHandler(classType)) {
                     return SimpleTypeMapper.getDataHandler(omElement);
                     
-                } else if(SimpleTypeMapper.isDomDocument(classType)){                  	
+                } else if(SimpleTypeMapper.isDomDocument(classType)){
                     return convertOMtoDOM(omElement);
                 } else if(SimpleTypeMapper.isMap(classType)){
-                	if (generictype != null && (generictype instanceof ParameterizedType)) {
-                      ParameterizedType aType = (ParameterizedType) generictype;
-                      Type[] parameterArgTypes = aType.getActualTypeArguments();                       
-                      Iterator parts = omElement.getChildElements();
-                      return processGenericsMapElement(parameterArgTypes
-                     		 , omElement, helper, parts, objectSupplier, generictype);
-                  } else {                	 
-                	  Type[] parameterArgTypes = {Object.class,Object.class}; 
-                	  Iterator parts = omElement.getChildElements();
-                  	  return processGenericsMapElement(parameterArgTypes,
-                      		 omElement, helper, parts, objectSupplier, generictype);   
-                  }
-                 
-                	
+                    if (generictype != null && (generictype instanceof ParameterizedType)) {
+                        ParameterizedType aType = (ParameterizedType) generictype;
+                        Type[] parameterArgTypes = aType.getActualTypeArguments();
+                        Iterator parts = omElement.getChildElements();
+                        return processGenericsMapElement(parameterArgTypes
+                             , omElement, helper, parts, objectSupplier, generictype);
+                    } else {
+                        Type[] parameterArgTypes = {Object.class,Object.class}; 
+                        Iterator parts = omElement.getChildElements();
+                        return processGenericsMapElement(parameterArgTypes,
+                                omElement, helper, parts, objectSupplier, generictype);   
+                    }
+                
                 }else if(SimpleTypeMapper.isEnum(classType)){
                     return processEnumObject(classType, omElement);
                 }else {
@@ -1163,43 +1151,43 @@ public class BeanUtil {
                     }
                 } else {
                     // this happens at the server side. this means it is an multidimentional array.
-					objects.add(partName);
-					if (SimpleTypeMapper.isObjectArray(arg.getClass())
-							|| SimpleTypeMapper
-									.isMultidimensionalObjectArray(arg
-											.getClass())) {
-						/**
-						 * If it is a Object[] we need to add instance type
-						 * attributes to the response message.
-						 * Copied from ADBXMLStreamReaderImpl. 
-						 * For inner Arrary Complex types we use the special local name array - "array"
-						 */
-						QName itemName = new QName(partName.getNamespaceURI(),
-								Constants.INNER_ARRAY_COMPLEX_TYPE_NAME,
-								partName.getPrefix());
-						objects.add(getOMElement(partName, (Object[]) arg,
-								itemName, qualifed, typeTable));
-					} else {
-						objects.add(arg);
-					}
+                    objects.add(partName);
+                    if (SimpleTypeMapper.isObjectArray(arg.getClass())
+                            || SimpleTypeMapper
+                                    .isMultidimensionalObjectArray(arg
+                                            .getClass())) {
+                        /**
+                         * If it is a Object[] we need to add instance type
+                         * attributes to the response message.
+                         * Copied from ADBXMLStreamReaderImpl. 
+                         * For inner Arrary Complex types we use the special local name array - "array"
+                         */
+                        QName itemName = new QName(partName.getNamespaceURI(),
+                                Constants.INNER_ARRAY_COMPLEX_TYPE_NAME,
+                                partName.getPrefix());
+                        objects.add(getOMElement(partName, (Object[]) arg,
+                                itemName, qualifed, typeTable));
+                    } else {
+                        objects.add(arg);
+                    }
                 }
             } else {
                 if (SimpleTypeMapper.isSimpleType(arg)) { 
-                	OMElement element;
-                	OMFactory fac = OMAbstractFactory.getOMFactory();
-                	if(partName != null){
-                		element = fac.createOMElement(partName, null);
-                	}else{
-                		String eleName = "arg" + argCount;
-                		element = fac.createOMElement(eleName, null);
-                	}					
-					element.addChild(fac.createOMText(SimpleTypeMapper
-							.getStringValue(arg)));
-					if (SimpleTypeMapper.isObjectArray(args.getClass())) {
-						addInstanceTypeAttribute(fac, element, arg, typeTable);
-					}
-					objects.add(element.getQName());
-					objects.add(element);
+                    OMElement element;
+                    OMFactory fac = OMAbstractFactory.getOMFactory();
+                    if(partName != null){
+                        element = fac.createOMElement(partName, null);
+                    }else{
+                        String eleName = "arg" + argCount;
+                        element = fac.createOMElement(eleName, null);
+                    }
+                    element.addChild(fac.createOMText(SimpleTypeMapper
+                            .getStringValue(arg)));
+                    if (SimpleTypeMapper.isObjectArray(args.getClass())) {
+                        addInstanceTypeAttribute(fac, element, arg, typeTable);
+                    }
+                    objects.add(element.getQName());
+                    objects.add(element);
                 } else {
                     if (partName == null) {
                         objects.add(new QName("arg" + argCount));
@@ -1227,7 +1215,7 @@ public class BeanUtil {
                         } else {
                             wrappingElement = fac.createOMElement(partName, null);
                         }
-                        OMText text = fac.createOMText(arg, true);
+                        OMText text = fac.createOMText((DataHandler)arg, true);
                         wrappingElement.addChild(text);
                         objects.add(wrappingElement);
                     }else if (SimpleTypeMapper.isEnum(arg.getClass())) {
@@ -1294,245 +1282,172 @@ public class BeanUtil {
         }
     }
     
-	/**
-	 * Adds the instance type attribute to the passed OMElement.	 
-	 *  
-	 *  e.g - <sam:obj xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	 *                xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-	 *                xsi:type="xsd:string">
-	 *                String Value
-	 *        </sam:obj> 
-	 *
-	 *
-	 * @param fac the SOAPFactory instance.
-	 * @param element the child OMElement to add attributes.
-	 * @param resObject the java reflection method
-	 * @param resObject the res object
-	 * @param typeTable the type table of particular Axis2 service
-	 */
-	public static void addInstanceTypeAttribute(OMFactory fac,
-			OMElement element, Object resObject,
-			TypeTable typeTable) {
-		if(typeTable == null){
-			return;
-		}
-		OMNamespace xsiNS = fac.createOMNamespace(Constants.XSI_NAMESPACE,
-				Constants.DEFAULT_XSI_NAMESPACE_PREFIX);
-		OMNamespace xsdNS = fac.createOMNamespace(Constants.XSD_NAMESPACE,
-				Constants.DEFAULT_XSD_NAMESPACE_PREFIX);
-		element.declareNamespace(xsiNS);
-		element.declareNamespace(xsdNS);
-		QName xsdType = typeTable.getSchemaTypeName(resObject.getClass()
-				.getName());	
-		String attrValue = xsdType.getPrefix() + ":" + xsdType.getLocalPart();
-		element.addAttribute(Constants.XSI_TYPE_ATTRIBUTE, attrValue, xsiNS);
-	}
-	
-	/**
-	 * Gets the DOOM implementation of org.w3c.dom.Document  
-	 *
-	 * @param omElement the OMelement
-	 * @return the DOOM document
-	 */
-	public static OMDocument convertOMtoDOM(OMContainer omElement) {
-		// use an Axiom meta factory with feature "dom" to get org.w3c.dom.Document
-		OMFactory doomFactory = OMAbstractFactory.getMetaFactory(
-		        OMAbstractFactory.FEATURE_DOM).getOMFactory();
-		OMXMLParserWrapper doomBuilder = OMXMLBuilderFactory.createStAXOMBuilder(doomFactory,
-				omElement.getXMLStreamReader());
-		OMDocument domElement = doomBuilder.getDocument();
-		return domElement;
-	}
-	
-	/**
-	 * Convert DOM Document to a OMElement.
-	 *
-	 * @param fac the fac
-	 * @param document the document
-	 * @return the OMElement
-	 */
-	public static OMElement convertDOMtoOM(OMFactory fac, Object document) {
-	    if( document == null ) {
-	        return null;
-	    }
-	    if (document instanceof OMDocument) {
-		return ((OMDocument)document).getOMDocumentElement();
-		
-	    } else {
-		DocumentTraversal traversal = (DocumentTraversal) document;
-		TreeWalker walker = traversal.createTreeWalker(
-				((Document)document).getDocumentElement(), NodeFilter.SHOW_ALL, null, true);
-		return (OMElement) traverseDOMDocument(fac, walker, null);		
-	    }		
-	}
-	
-	/**
-	 * Traverse dom document and construct a OMElement.
-	 * Act as a helper method for convertDOMtoOM()
-	 *
-	 * @param fac the fac
-	 * @param walker the walker
-	 * @param parent the parent
-	 * @return the oM node
-	 */
-	private static OMNode traverseDOMDocument(OMFactory fac, TreeWalker walker,
-			OMContainer parent) {
-		OMNode curr = null;
-		Node node = walker.getCurrentNode();
-		
-		switch (node.getNodeType()) {
-		case Node.ELEMENT_NODE:
-			OMNamespace eleNS = null;
-			if (node.getNamespaceURI() != null) {
-				eleNS = fac.createOMNamespace(node.getNamespaceURI(),
-						node.getPrefix());
-			}
-			curr = fac.createOMElement(node.getNodeName(), eleNS);
-			curr = processDOMAttributes(fac, (OMElement) curr,	node.getAttributes());
-			if (parent != null) {
-				parent.addChild(curr);
-			}
-			if (node.getFirstChild() != null) {
-				walker.setCurrentNode(node.getFirstChild());
-				traverseDOMDocument(fac, walker, (OMContainer) curr);
-			}
-			break;
-
-		case Node.PROCESSING_INSTRUCTION_NODE:
-			ProcessingInstruction domPI = (ProcessingInstruction) node;
-			parent.addChild(fac.createOMProcessingInstruction(parent,
-					domPI.getTarget(), domPI.getData()));
-			break;
-
-		case Node.COMMENT_NODE:
-			parent.addChild(fac.createOMComment(parent,
-					((Comment) node).getNodeValue()));
-			break;
-
-		case Node.TEXT_NODE:
-			parent.addChild(fac.createOMText(node.getNodeValue()));
-			break;
-		}
-		if (node.getNextSibling() != null && parent != null) {
-			walker.setCurrentNode(node.getNextSibling());
-			traverseDOMDocument(fac, walker, parent);
-		}
-		return curr;
-	}
-	
-	private static OMElement processDOMAttributes(OMFactory fac,
-			OMElement curr, NamedNodeMap attMap) {
-		if (attMap != null && attMap.getLength() > 0) {			
-			for (int i = 0; i < attMap.getLength(); i++) {
-				Attr att = (Attr) attMap.item(i);
-				OMNamespace attrNS = null;				
-				if (att.getNamespaceURI() != null) {
-					attrNS = fac.createOMNamespace(att.getNamespaceURI(),
-							att.getPrefix());
-				}
-				curr.addAttribute(att.getNodeName(), att.getNodeValue(), attrNS);
-			}
-		}
-		return curr;
-	}
-	
-	/**
-	 * This method deserialize OM model in to a instance of java.util.Map
-	 *
-	 * @param parameterArgTypes the parameter argument types of Map <k,V>
-	 * @param omElement the OMElement
-	 * @param helper the helper
-	 * @param parts the parts
-	 * @param objectSupplier the object supplier
-	 * @param genericType the generic type
-	 * @return a instance of java.util.Map
-	 * @throws AxisFault the axis fault
-	 */
-	public static Map<Object,Object> processGenericsMapElement(Type[] parameterArgTypes,
-			OMElement omElement, MultirefHelper helper, Iterator parts,
-			ObjectSupplier objectSupplier, Type genericType) throws AxisFault {
-		Object objValue;			
-		Map<Object,Object> valueMap = getMapInstance(genericType) ;
-		while (parts.hasNext()) {
-			objValue = parts.next();
-			if (objValue instanceof OMElement) {
-				omElement = (OMElement) objValue;
-			} else {
-				continue;
-			}
-			
-			if(omElement != null){
-				Iterator entryParts = omElement.getChildren();
-				Object entryKey = null;
-				Object entryValue = null;
-				while (entryParts.hasNext()) {
-					objValue = entryParts.next();
-					if (objValue instanceof OMElement) {
-						omElement = (OMElement) objValue;
-					} else {
-						continue;
-					}
-					if (omElement.getLocalName().equals(
-							org.apache.axis2.Constants.MAP_KEY_ELEMENT_NAME)) {
-						entryKey = processMapParameterObject( parameterArgTypes[0], omElement,
-								helper, objectSupplier, genericType);
-						continue;
-					}
-					if (omElement.getLocalName().equals(
-							org.apache.axis2.Constants.MAP_VALUE_ELEMENT_NAME)) {
-						entryValue = processMapParameterObject( parameterArgTypes[1],
-								omElement, helper, objectSupplier, genericType);
-						continue;
-					}			
-				}
-				if(entryKey != null){
-					valueMap.put(entryKey, entryValue);
-				}				
-			}
-
-		}
-		return valueMap;
-	}
-	
-	
-	/**
-	 * This method convert a instance of java.util.Map into
-	 * OM object model for serialization. 
-	 *
-	 * @param fac the OMFactory
-	 * @param type of the java.util.Map
-	 * @param results the results values
-	 * @param typeTable the type table
-	 * @param elementFormDefault the element form default
-	 * @return list of OMElement
-	 */
-	public static List<OMElement> getMapElement(OMFactory fac, Type type,
-			Map results, TypeTable typeTable, boolean elementFormDefault) {
-		Iterator<Object> keyItr = results.keySet().iterator();
-		List<OMElement> list = new ArrayList<OMElement>();
+    /**
+     * Adds the instance type attribute to the passed OMElement.
+     *  
+     *  e.g - <sam:obj xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+     *                xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+     *                xsi:type="xsd:string">
+     *                String Value
+     *        </sam:obj> 
+     *
+     *
+     * @param fac the SOAPFactory instance.
+     * @param element the child OMElement to add attributes.
+     * @param resObject the java reflection method
+     * @param resObject the res object
+     * @param typeTable the type table of particular Axis2 service
+     */
+    public static void addInstanceTypeAttribute(OMFactory fac,
+            OMElement element, Object resObject,
+            TypeTable typeTable) {
+        if(typeTable == null){
+            return;
+        }
+        OMNamespace xsiNS = fac.createOMNamespace(Constants.XSI_NAMESPACE,
+                Constants.DEFAULT_XSI_NAMESPACE_PREFIX);
+        OMNamespace xsdNS = fac.createOMNamespace(Constants.XSD_NAMESPACE,
+                Constants.DEFAULT_XSD_NAMESPACE_PREFIX);
+        element.declareNamespace(xsiNS);
+        element.declareNamespace(xsdNS);
+        QName xsdType = typeTable.getSchemaTypeName(resObject.getClass()
+                .getName());
+        String attrValue = xsdType.getPrefix() + ":" + xsdType.getLocalPart();
+        element.addAttribute(Constants.XSI_TYPE_ATTRIBUTE, attrValue, xsiNS);
+    }
+    
+    /**
+     * Gets the DOOM implementation of org.w3c.dom.Document  
+     *
+     * @param omElement the OMelement
+     * @return the DOOM document
+     */
+    public static OMDocument convertOMtoDOM(OMContainer omElement) {
+        // use an Axiom meta factory with feature "dom" to get org.w3c.dom.Document
+        OMFactory doomFactory = OMAbstractFactory.getMetaFactory(
+                OMAbstractFactory.FEATURE_DOM).getOMFactory();
+        OMXMLParserWrapper doomBuilder = OMXMLBuilderFactory.createStAXOMBuilder(doomFactory,
+                omElement.getXMLStreamReader());
+        OMDocument domElement = doomBuilder.getDocument();
+        return domElement;
+    }
+    
+    /**
+     * Convert DOM Document to a OMElement.
+     *
+     * @param fac the fac
+     * @param document the document
+     * @return the OMElement
+     */
+    public static OMElement convertDOMtoOM(OMFactory fac, Object document) {
+        if( document == null ) {
+            return null;
+        }
+        if (document instanceof OMDocument) {
+            return ((OMDocument)document).getOMDocumentElement();
+        
+        } else {
+            return OMXMLBuilderFactory.createOMBuilder((Document)document, false).getDocumentElement(true);
+        }
+    }
+    
+    /**
+     * This method deserialize OM model in to a instance of java.util.Map
+     *
+     * @param parameterArgTypes the parameter argument types of Map <k,V>
+     * @param omElement the OMElement
+     * @param helper the helper
+     * @param parts the parts
+     * @param objectSupplier the object supplier
+     * @param genericType the generic type
+     * @return a instance of java.util.Map
+     * @throws AxisFault the axis fault
+     */
+    public static Map<Object,Object> processGenericsMapElement(Type[] parameterArgTypes,
+            OMElement omElement, MultirefHelper helper, Iterator parts,
+            ObjectSupplier objectSupplier, Type genericType) throws AxisFault {
+        Object objValue;
+        Map<Object,Object> valueMap = getMapInstance(genericType) ;
+        while (parts.hasNext()) {
+            objValue = parts.next();
+            if (objValue instanceof OMElement) {
+                omElement = (OMElement) objValue;
+            } else {
+                continue;
+            }
+            
+            if(omElement != null){
+                Iterator entryParts = omElement.getChildren();
+                Object entryKey = null;
+                Object entryValue = null;
+                while (entryParts.hasNext()) {
+                    objValue = entryParts.next();
+                    if (objValue instanceof OMElement) {
+                        omElement = (OMElement) objValue;
+                    } else {
+                        continue;
+                    }
+                    if (omElement.getLocalName().equals(
+                            org.apache.axis2.Constants.MAP_KEY_ELEMENT_NAME)) {
+                        entryKey = processMapParameterObject( parameterArgTypes[0], omElement,
+                                helper, objectSupplier, genericType);
+                        continue;
+                    }
+                    if (omElement.getLocalName().equals(
+                            org.apache.axis2.Constants.MAP_VALUE_ELEMENT_NAME)) {
+                        entryValue = processMapParameterObject( parameterArgTypes[1],
+                                omElement, helper, objectSupplier, genericType);
+                        continue;
+                    }
+                }
+                if(entryKey != null){
+                    valueMap.put(entryKey, entryValue);
+                }
+            }
+
+        }
+        return valueMap;
+    }
+    
+    
+    /**
+     * This method convert a instance of java.util.Map into
+     * OM object model for serialization. 
+     *
+     * @param fac the OMFactory
+     * @param type of the java.util.Map
+     * @param results the results values
+     * @param typeTable the type table
+     * @param elementFormDefault the element form default
+     * @return list of OMElement
+     */
+    public static List<OMElement> getMapElement(OMFactory fac, Type type,
+            Map results, TypeTable typeTable, boolean elementFormDefault) {
+        Iterator<Object> keyItr = results.keySet().iterator();
+        List<OMElement> list = new ArrayList<OMElement>();
         OMNamespace ns = null;
-		Type keyType = Object.class;
+        Type keyType = 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();
-			keyType = parameterArgTypes[0];
-			valueType = parameterArgTypes[1];
-		}
-
-		while (keyItr.hasNext()) {
-			OMElement omEntry;
-			Object key = keyItr.next();
-			Object value;
-			if (key != null) {
-				value = results.get(key);
-				List<Object> properties = new ArrayList<Object>();
+        }
+        
+        if (type instanceof ParameterizedType) {
+            ParameterizedType aType = (ParameterizedType) type;
+            Type[] parameterArgTypes = aType.getActualTypeArguments();
+            keyType = parameterArgTypes[0];
+            valueType = parameterArgTypes[1];
+        }
+
+        while (keyItr.hasNext()) {
+            OMElement omEntry;
+            Object key = keyItr.next();
+            Object value;
+            if (key != null) {
+                value = results.get(key);
+                List<Object> properties = new ArrayList<Object>();
                 QName keyName;
                 QName valueName;
                 if (elementFormDefault) {
@@ -1549,37 +1464,37 @@ public class BeanUtil {
                             org.apache.axis2.Constants.MAP_VALUE_ELEMENT_NAME);
                 }
 
-				Object kValue = getMapParameterElement(fac,
-						org.apache.axis2.Constants.MAP_KEY_ELEMENT_NAME, key,
-						keyType, typeTable, ns, elementFormDefault);
-				
-				Object vValue = getMapParameterElement(fac,
-						org.apache.axis2.Constants.MAP_VALUE_ELEMENT_NAME,
-						value, valueType, typeTable, ns, elementFormDefault);
-				
-				if(Iterator.class.isAssignableFrom(kValue.getClass())){
-					Iterator valItr = (Iterator) kValue;
-					while (valItr.hasNext()) {
-						properties.add(keyName);
-						properties.add(valItr.next());						
-					}	
-				} else {
-					properties.add(keyName);
-					properties.add(kValue);
-				}			
-
-				
-				if(vValue != null && Iterator.class.isAssignableFrom(vValue.getClass())){
-					Iterator valItr = (Iterator) vValue;
-					while (valItr.hasNext()) {
-						properties.add(valueName);
-						properties.add(valItr.next());						
-					}			
-				} else {
-					properties.add(valueName);
-					properties.add(vValue);
-				}
-				
+                Object kValue = getMapParameterElement(fac,
+                        org.apache.axis2.Constants.MAP_KEY_ELEMENT_NAME, key,
+                        keyType, typeTable, ns, elementFormDefault);
+                
+                Object vValue = getMapParameterElement(fac,
+                        org.apache.axis2.Constants.MAP_VALUE_ELEMENT_NAME,
+                        value, valueType, typeTable, ns, elementFormDefault);
+                
+                if(Iterator.class.isAssignableFrom(kValue.getClass())){
+                    Iterator valItr = (Iterator) kValue;
+                    while (valItr.hasNext()) {
+                        properties.add(keyName);
+                        properties.add(valItr.next());
+                    }
+                } else {
+                    properties.add(keyName);
+                    properties.add(kValue);
+                }
+
+                
+                if(vValue != null && Iterator.class.isAssignableFrom(vValue.getClass())){
+                    Iterator valItr = (Iterator) vValue;
+                    while (valItr.hasNext()) {
+                        properties.add(valueName);
+                        properties.add(valItr.next());
+                    }
+                } else {
+                    properties.add(valueName);
+                    properties.add(vValue);
+                }
+                
                 QName entryQName;
                 if (elementFormDefault) {
                     entryQName = new QName(ns.getNamespaceURI(),
@@ -1590,302 +1505,301 @@ public class BeanUtil {
                             org.apache.axis2.Constants.MAP_ENTRY_ELEMENT_NAME);
 
                 }
-				XMLStreamReader pullParser = new ADBXMLStreamReaderImpl(
-				        entryQName, properties.toArray(), null,
-						typeTable, elementFormDefault);
-
-				StAXOMBuilder stAXOMBuilder = new StAXOMBuilder(
-						OMAbstractFactory.getOMFactory(), new StreamWrapper(
-								pullParser));
-				omEntry = stAXOMBuilder.getDocumentElement();
-				list.add(omEntry);
-			}
-		}
-		return list;
-	}
-	
-	/**
-	 * Helper method to deserialize each parameter of Map.
-	 *
-	 * @param paraType the parameter type
-	 * @param omElement the OMElement
-	 * @param helper the helper
-	 * @param objectSupplier the object supplier
-	 * @param genericType the generic type
-	 * @return the object
-	 * @throws AxisFault the axis fault
-	 */
-	private static Object processMapParameterObject(Type paraType, OMElement omElement,
-			MultirefHelper helper, ObjectSupplier objectSupplier,
-			Type genericType) throws AxisFault {
-		if (paraType instanceof ParameterizedType) {
-			if (Map.class.isAssignableFrom((Class)
-					((ParameterizedType) paraType).getRawType())) {
-				return processGenericsMapElement(
-						((ParameterizedType) paraType).getActualTypeArguments(),
-						omElement, helper, omElement.getChildren(),
-						objectSupplier, paraType);
-			} else if (Collection.class	.isAssignableFrom((Class) 
-					((ParameterizedType) paraType).getRawType())) {				
-				return processGenericCollection(
-						omElement,
-						(ParameterizedType) paraType,
-						helper, objectSupplier);
-			} else {
+                XMLStreamReader pullParser = new ADBXMLStreamReaderImpl(
+                        entryQName, properties.toArray(), null,
+                        typeTable, elementFormDefault);
+
+                OMXMLParserWrapper builder = OMXMLBuilderFactory.createStAXOMBuilder(
+                        new StreamWrapper(pullParser));
+                omEntry = builder.getDocumentElement();
+                list.add(omEntry);
+            }
+        }
+        return list;
+    }
+    
+    /**
+     * Helper method to deserialize each parameter of Map.
+     *
+     * @param paraType the parameter type
+     * @param omElement the OMElement
+     * @param helper the helper
+     * @param objectSupplier the object supplier
+     * @param genericType the generic type
+     * @return the object
+     * @throws AxisFault the axis fault
+     */
+    private static Object processMapParameterObject(Type paraType, OMElement omElement,
+            MultirefHelper helper, ObjectSupplier objectSupplier,
+            Type genericType) throws AxisFault {
+        if (paraType instanceof ParameterizedType) {
+            if (Map.class.isAssignableFrom((Class)
+                    ((ParameterizedType) paraType).getRawType())) {
+                return processGenericsMapElement(
+                        ((ParameterizedType) paraType).getActualTypeArguments(),
+                        omElement, helper, omElement.getChildren(),
+                        objectSupplier, paraType);
+            } else if (Collection.class.isAssignableFrom((Class) 
+                    ((ParameterizedType) paraType).getRawType())) {
+                return processGenericCollection(
+                        omElement,
+                        (ParameterizedType) paraType,
+                        helper, objectSupplier);
+            } else {
                 throw new AxisFault("Map parameter does not support for "
                         + ((ParameterizedType) paraType).getRawType());
-			}
+            }
 
-		} else {
-			return processObject(omElement, (Class) paraType, helper, true,
-					objectSupplier, genericType);
-		}
-	}
-	
-	/**
-	 * This method instantiate a Map instance according to the expected 
-	 * parameter type of the service method. a instance HashMap<Object, Object> 
-	 * returns as the default value and in case of Exception.   
-	 *
-	 * @param genericType the generic type
-	 * @return the map instance 
-	 */
-	private static Map<Object, Object> getMapInstance(Type genericType) {
-		 Class rowType;
-		 if (genericType instanceof ParameterizedType) {
-			 rowType = (Class) ((ParameterizedType) genericType).getRawType();			 
-		 } else {
-			 rowType = (Class) genericType;
-		 }
-		
-		if (Map.class.getName().equals(rowType.getName())) {
-			return new HashMap<Object, Object>();
-			
-		} else if (ConcurrentMap.class.getName().equals(rowType.getName())) {
-			return new ConcurrentHashMap<Object, Object>();
-			
-		} else if (SortedMap.class.getName().equals(rowType.getName())) {
-			return new TreeMap<Object, Object>();
-			
-		} 
-//		TODO - Enable this logic once the Axis2 move to Java 1.6.		
-//		else if (NavigableMap.class.getName().equals(rowType.getName())) {
-//			return new TreeMap<Object, Object>();
-//			
-//		}  else if (ConcurrentNavigableMap.class.getName().equals(rowType.getName())) {
-//			return new ConcurrentSkipListMap<Object, Object>();
-//		}
-//		
-		else {
-			try {
-				return (Map<Object, Object>) rowType.newInstance();
-			} catch (Exception e) {
-				return new HashMap<Object, Object>();
-			}
-		}
-	}
-	
-	/**
-	 * Process the provided return  value and constructs OMElement accordingly.  
-	 *
-	 * @param fac the OMFactory instance
-	 * @param elementName the element name for return OMElement
-	 * @param value the actual return value
-	 * @param valueType the value type of return value
-	 * @param typeTable the type table
-	 * @param ns the OMNamespace
-	 * @param elementFormDefault the element form default
-	 * @return the map parameter object
-	 */
-	private static Object getMapParameterElement(OMFactory fac,
-			String elementName, Object value, Type valueType,
-			TypeTable typeTable, OMNamespace ns, boolean elementFormDefault) {
+        } else {
+            return processObject(omElement, (Class) paraType, helper, true,
+                    objectSupplier, genericType);
+        }
+    }
+    
+    /**
+     * This method instantiate a Map instance according to the expected 
+     * parameter type of the service method. a instance HashMap<Object, Object> 
+     * returns as the default value and in case of Exception.   
+     *
+     * @param genericType the generic type
+     * @return the map instance 
+     */
+    private static Map<Object, Object> getMapInstance(Type genericType) {
+        Class rowType;
+        if (genericType instanceof ParameterizedType) {
+            rowType = (Class) ((ParameterizedType) genericType).getRawType();
+        } else {
+            rowType = (Class) genericType;
+        }
+        
+        if (Map.class.getName().equals(rowType.getName())) {
+            return new HashMap<Object, Object>();
+            
+        } else if (ConcurrentMap.class.getName().equals(rowType.getName())) {
+            return new ConcurrentHashMap<Object, Object>();
+            
+        } else if (SortedMap.class.getName().equals(rowType.getName())) {
+            return new TreeMap<Object, Object>();
+            
+        } 
+//        TODO - Enable this logic once the Axis2 move to Java 1.6.
+//        else if (NavigableMap.class.getName().equals(rowType.getName())) {
+//            return new TreeMap<Object, Object>();
+//            
+//        }  else if (ConcurrentNavigableMap.class.getName().equals(rowType.getName())) {
+//            return new ConcurrentSkipListMap<Object, Object>();
+//        }
+//        
+        else {
+            try {
+                return (Map<Object, Object>) rowType.newInstance();
+            } catch (Exception e) {
+                return new HashMap<Object, Object>();
+            }
+        }
+    }
+    
+    /**
+     * Process the provided return  value and constructs OMElement accordingly.  
+     *
+     * @param fac the OMFactory instance
+     * @param elementName the element name for return OMElement
+     * @param value the actual return value
+     * @param valueType the value type of return value
+     * @param typeTable the type table
+     * @param ns the OMNamespace
+     * @param elementFormDefault the element form default
+     * @return the map parameter object
+     */
+    private static Object getMapParameterElement(OMFactory fac,
+            String elementName, Object value, Type valueType,
+            TypeTable typeTable, OMNamespace ns, boolean elementFormDefault) {
          //TODO - key/value can be a Collection, Array , Dom document ,OMElement etc
-	    if(value == null) {
-	        return null;
-	    }
-		if (SimpleTypeMapper.isMap(value.getClass())) {
-			List<OMElement> childList = getMapElement(fac, valueType,
-					(Map) value, typeTable, elementFormDefault);
-			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;
-		    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();
-			
-		} else if(SimpleTypeMapper.isDomDocument((Class)valueType)) {
-		    return convertDOMtoOM(fac, value);
-		    
-		} else if (SimpleTypeMapper.isObjectType((Class) valueType)) {
-			OMElement omValue;
-			omValue = fac.createOMElement(elementName, ns);
-			if (SimpleTypeMapper.isSimpleType(value)) {
-				omValue.addChild(fac.createOMText(SimpleTypeMapper
-						.getStringValue(value)));
+        if(value == null) {
+            return null;
+        }
+        if (SimpleTypeMapper.isMap(value.getClass())) {
+            List<OMElement> childList = getMapElement(fac, valueType,
+                    (Map) value, typeTable, elementFormDefault);
+            OMElement omValue;
+            if(elementFormDefault) {
+                omValue = fac.createOMElement(elementName,
+                        ns.getNamespaceURI(), ns.getPrefix());
             } else {
-			    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(),
-								new StreamWrapper(xr));
-				omValue = stAXOMBuilder.getDocumentElement();
-
-			}
-			addInstanceTypeAttribute(fac, omValue, value, typeTable);
-			return omValue;
-			
-		} else if (SimpleTypeMapper.isSimpleType(value)) {
+                omValue = fac.createOMElement(elementName, null);
+                
+            }
+            for (OMElement child : childList) {
+                omValue.addChild(child);
+            }
+            return omValue;
+            
+        } 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();
+            
+        } else if(SimpleTypeMapper.isDomDocument((Class)valueType)) {
+            return convertDOMtoOM(fac, value);
+            
+        } else if (SimpleTypeMapper.isObjectType((Class) valueType)) {
+            OMElement omValue;
+            omValue = fac.createOMElement(elementName, ns);
+            if (SimpleTypeMapper.isSimpleType(value)) {
+                omValue.addChild(fac.createOMText(SimpleTypeMapper
+                        .getStringValue(value)));
+            } else {
+                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(),
+                                new StreamWrapper(xr));
+                omValue = stAXOMBuilder.getDocumentElement();
+
+            }
+            addInstanceTypeAttribute(fac, omValue, value, typeTable);
+            return omValue;
+            
+        } else if (SimpleTypeMapper.isSimpleType(value)) {
             OMElement omValue;
             omValue = fac.createOMElement(elementName, ns);
             omValue.addChild(fac.createOMText(SimpleTypeMapper
                     .getStringValue(value)));
-            return omValue;            
+            return omValue;
         } 
-		return value;
-	}
-	
-	/**
-	 * Process generic collection.
-	 *
-	 * @param omElement the om element
-	 * @param generictype the generictype
-	 * @param helper the helper
-	 * @param objectSupplier the object supplier
-	 * @return the collection
-	 * @throws AxisFault the axis fault
-	 */
-	public static Collection<Object> processGenericCollection(OMElement omElement,
-			Type generictype, MultirefHelper helper,
-			ObjectSupplier objectSupplier) throws AxisFault {
-	QName partName = omElement.getQName();
-	Type parameter = Object.class;
-	if (generictype != null && (generictype instanceof ParameterizedType)) {
-	    ParameterizedType aType = (ParameterizedType) generictype;
-	    Type[] parameterArgTypes = aType.getActualTypeArguments();
-	    parameter = parameterArgTypes[0];
-	}
-	/*
-	 * Fix for AXIS2-5090. Use siblings with same QName instead of look for
-	 * children because list elements available on same level.
-	 */
-	Iterator parts = omElement.getParent().getChildrenWithName(partName);
-	return processGenericsElement(parameter, omElement, helper, parts,
-		objectSupplier, generictype);
-	}	
-	
-	/**
-	 * Process collection.
-	 *
-	 * @param omElement the om element
-	 * @param toReturn the to return
-	 * @param generictype the generictype
-	 * @param helper the helper
-	 * @param objectSupplier the object supplier
-	 * @param parts the parts
-	 * @param bare the bare
-	 * @return the collection
-	 * @throws AxisFault the axis fault
-	 */
-	public static Collection<Object> processGenericCollection(OMElement omElement,
-		OMElement[] toReturn, Type generictype, MultirefHelper helper,
-		ObjectSupplier objectSupplier, Iterator parts, boolean bare)
-		throws AxisFault {
-	    String currentLocalName = omElement.getLocalName();
-	    Type parameter = Object.class;
-	    List<OMElement> eleList = new ArrayList<OMElement>();
-	    // in 'Bare' style no need to add first element to the list.
-	    if (!bare) {
-		eleList.add(omElement);
-	    }
-
-	    if (generictype != null && (generictype instanceof ParameterizedType)) {
-		ParameterizedType aType = (ParameterizedType) generictype;
-		Type[] parameterArgTypes = aType.getActualTypeArguments();
-		parameter = parameterArgTypes[0];
-	    }
-
-	    while (parts.hasNext()) {
-		Object objValue = parts.next();
-		OMElement currElement;
-		if (objValue instanceof OMElement) {
-		    currElement = (OMElement) objValue;
-		} else {
-		    continue;
-		}
-		if (currentLocalName.equals(currElement.getLocalName())) {
-		    eleList.add(currElement);
-		} else {
-		    // This just a container to bring back un-proceeded OMEleemnt.
-		    toReturn[0] = currElement;
-		    break;
-		}
-	    }
-	    return processGenericsElement(parameter, omElement, helper,
-		    eleList.iterator(), objectSupplier, generictype);
-	}	
-
-	/**
-	 * Gets the collection element.
-	 *
-	 * @param fac the fac
-	 * @param type the type
-	 * @param results the results
-	 * @param name the name
-	 * @param innerName the inner name
-	 * @param elementQName the element q name
-	 * @param typeTable the type table
-	 * @param elementFormDefault the element form default
-	 * @return the collection element
-	 */
-	public static OMElement getCollectionElement(OMFactory fac, Type type,
-		Collection results, String name, String innerName,
-		QName elementQName, TypeTable typeTable, boolean elementFormDefault) {
-
-	    String elementName = (innerName == null) ? name : innerName;
-	    Iterator<Object> itr = results.iterator();
-	    List<Object> properties = new ArrayList<Object>();
-	    OMNamespace ns = fac.createOMNamespace(elementQName.getNamespaceURI(),
-		    elementQName.getPrefix());
-	    Type valueType = Object.class;
-	    if (type instanceof ParameterizedType) {
-		ParameterizedType aType = (ParameterizedType) type;
-		Type[] parameterArgTypes = aType.getActualTypeArguments();
-		valueType = parameterArgTypes[0];
-	    }
-
-	    while (itr.hasNext()) {
-		Object value = itr.next();
-		if (value != null) {
-		    value = getCollectionItemElement(fac, elementName, value,
-			    valueType, typeTable, ns, elementFormDefault);
+        return value;
+    }
+    
+    /**
+     * Process generic collection.
+     *
+     * @param omElement the om element
+     * @param generictype the generictype
+     * @param helper the helper
+     * @param objectSupplier the object supplier
+     * @return the collection
+     * @throws AxisFault the axis fault
+     */
+    public static Collection<Object> processGenericCollection(OMElement omElement,
+            Type generictype, MultirefHelper helper,
+            ObjectSupplier objectSupplier) throws AxisFault {
+    QName partName = omElement.getQName();
+    Type parameter = Object.class;
+    if (generictype != null && (generictype instanceof ParameterizedType)) {
+        ParameterizedType aType = (ParameterizedType) generictype;
+        Type[] parameterArgTypes = aType.getActualTypeArguments();
+        parameter = parameterArgTypes[0];
+    }
+    /*
+     * Fix for AXIS2-5090. Use siblings with same QName instead of look for
+     * children because list elements available on same level.
+     */
+    Iterator<OMElement> parts = omElement.getParent().getChildrenWithName(partName);
+    return processGenericsElement(parameter, omElement, helper, parts,
+        objectSupplier, generictype);
+    }
+    
+    /**
+     * Process collection.
+     *
+     * @param omElement the om element
+     * @param toReturn the to return
+     * @param generictype the generictype
+     * @param helper the helper
+     * @param objectSupplier the object supplier
+     * @param parts the parts
+     * @param bare the bare
+     * @return the collection
+     * @throws AxisFault the axis fault
+     */
+    public static Collection<Object> processGenericCollection(OMElement omElement,
+        OMElement[] toReturn, Type generictype, MultirefHelper helper,
+        ObjectSupplier objectSupplier, Iterator parts, boolean bare)
+        throws AxisFault {
+        String currentLocalName = omElement.getLocalName();
+        Type parameter = Object.class;
+        List<OMElement> eleList = new ArrayList<OMElement>();
+        // in 'Bare' style no need to add first element to the list.
+        if (!bare) {
+            eleList.add(omElement);
+        }
+
+        if (generictype != null && (generictype instanceof ParameterizedType)) {
+            ParameterizedType aType = (ParameterizedType) generictype;
+            Type[] parameterArgTypes = aType.getActualTypeArguments();
+            parameter = parameterArgTypes[0];
+        }
+
+        while (parts.hasNext()) {
+            Object objValue = parts.next();
+            OMElement currElement;
+            if (objValue instanceof OMElement) {
+                currElement = (OMElement) objValue;
+            } else {
+                continue;
+            }
+            if (currentLocalName.equals(currElement.getLocalName())) {
+                eleList.add(currElement);
+            } else {
+                // This just a container to bring back un-proceeded OMEleemnt.
+                toReturn[0] = currElement;
+                break;
+            }
+        }
+        return processGenericsElement(parameter, omElement, helper,
+            eleList.iterator(), objectSupplier, generictype);
+    }
+
+    /**
+     * Gets the collection element.
+     *
+     * @param fac the fac
+     * @param type the type
+     * @param results the results
+     * @param name the name
+     * @param innerName the inner name
+     * @param elementQName the element q name
+     * @param typeTable the type table
+     * @param elementFormDefault the element form default
+     * @return the collection element
+     */
+    public static OMElement getCollectionElement(OMFactory fac, Type type,
+        Collection results, String name, String innerName,
+        QName elementQName, TypeTable typeTable, boolean elementFormDefault) {
+
+        String elementName = (innerName == null) ? name : innerName;
+        Iterator<Object> itr = results.iterator();
+        List<Object> properties = new ArrayList<Object>();
+        OMNamespace ns = fac.createOMNamespace(elementQName.getNamespaceURI(),
+            elementQName.getPrefix());
+        Type valueType = Object.class;
+        if (type instanceof ParameterizedType) {
+            ParameterizedType aType = (ParameterizedType) type;
+            Type[] parameterArgTypes = aType.getActualTypeArguments();
+            valueType = parameterArgTypes[0];
+        }
+
+        while (itr.hasNext()) {
+            Object value = itr.next();
+            if (value != null) {
+                value = getCollectionItemElement(fac, elementName, value,
+                        valueType, typeTable, ns, elementFormDefault);
                 QName valueQName;
                 if (elementFormDefault) {
                     valueQName = new QName(ns.getNamespaceURI(), elementName,
@@ -1893,10 +1807,10 @@ public class BeanUtil {
                 } else {
                     valueQName = new QName(elementName);
                 }
-		    properties.add(valueQName);
-		    properties.add(value);
-		}
-	    }
+                properties.add(valueQName);
+                properties.add(value);
+            }
+        }
         QName eleQName;
         if (elementFormDefault) {
             eleQName = new QName(ns.getNamespaceURI(),
@@ -1904,55 +1818,55 @@ public class BeanUtil {
         } else {
             eleQName = new QName(elementQName.getLocalPart());
         }
-	    XMLStreamReader pullParser = new ADBXMLStreamReaderImpl(eleQName, properties.toArray(), null, typeTable,
-		    elementFormDefault);
+        XMLStreamReader pullParser = new ADBXMLStreamReaderImpl(eleQName, properties.toArray(), null, typeTable,
+            elementFormDefault);
 
-	    StAXOMBuilder stAXOMBuilder = new StAXOMBuilder(
-		    OMAbstractFactory.getOMFactory(), new StreamWrapper(pullParser));
-	    return stAXOMBuilder.getDocumentElement();
-	}	
-
-	/**
-	 * Gets the collection item element.
-	 *
-	 * @param fac the fac
-	 * @param elementName the element name
-	 * @param value the value
-	 * @param valueType the value type
-	 * @param typeTable the type table
-	 * @param ns the ns
-	 * @param elementFormDefault the element form default
-	 * @return the collection item element
-	 */
-	private static Object getCollectionItemElement(OMFactory fac,
-		String elementName, Object value, Type valueType,
-		TypeTable typeTable, OMNamespace ns, boolean elementFormDefault) {
-	    if (SimpleTypeMapper.isMap(value.getClass())) {
-		List<OMElement> childList = getMapElement(fac, valueType,
-			(Map) value, typeTable, elementFormDefault);
-		OMElement omValue = fac.createOMElement(elementName,
-			ns.getNamespaceURI(), ns.getPrefix());
-		for (OMElement child : childList) {
-		    omValue.addChild(child);
-		}
-		return omValue;
-
-	    } else if (SimpleTypeMapper.isCollection(value.getClass())) {
-		return getCollectionElement(
-			fac,
-			valueType,
-			(Collection) value,
-			elementName,
-			Constants.INNER_ARRAY_COMPLEX_TYPE_NAME,
-			new QName(ns.getNamespaceURI(), elementName, ns.getPrefix()),
-			typeTable, elementFormDefault);
-	    } else if (SimpleTypeMapper.isObjectType((Class) valueType)) {
-		OMElement omValue;
-		omValue = fac.createOMElement(elementName, ns);
-		if (SimpleTypeMapper.isSimpleType(value)) {
-		    omValue.addChild(fac.createOMText(SimpleTypeMapper
-			    .getStringValue(value)));
-		} else {
+        OMXMLParserWrapper builder = OMXMLBuilderFactory.createStAXOMBuilder(
+            new StreamWrapper(pullParser));
+        return builder.getDocumentElement();
+    }
+
+    /**
+     * Gets the collection item element.
+     *
+     * @param fac the fac
+     * @param elementName the element name
+     * @param value the value
+     * @param valueType the value type
+     * @param typeTable the type table
+     * @param ns the ns
+     * @param elementFormDefault the element form default
+     * @return the collection item element
+     */
+    private static Object getCollectionItemElement(OMFactory fac,
+            String elementName, Object value, Type valueType,
+            TypeTable typeTable, OMNamespace ns, boolean elementFormDefault) {
+        if (SimpleTypeMapper.isMap(value.getClass())) {
+            List<OMElement> childList = getMapElement(fac, valueType,
+                (Map) value, typeTable, elementFormDefault);
+            OMElement omValue = fac.createOMElement(elementName,
+                ns.getNamespaceURI(), ns.getPrefix());
+            for (OMElement child : childList) {
+                omValue.addChild(child);
+            }
+            return omValue;
+    
+        } else if (SimpleTypeMapper.isCollection(value.getClass())) {
+            return getCollectionElement(
+                fac,
+                valueType,
+                (Collection) value,
+                elementName,
+                Constants.INNER_ARRAY_COMPLEX_TYPE_NAME,
+                new QName(ns.getNamespaceURI(), elementName, ns.getPrefix()),
+                typeTable, elementFormDefault);
+        } else if (SimpleTypeMapper.isObjectType((Class) valueType)) {
+            OMElement omValue;
+            omValue = fac.createOMElement(elementName, ns);
+            if (SimpleTypeMapper.isSimpleType(value)) {
+                omValue.addChild(fac.createOMText(SimpleTypeMapper
+                    .getStringValue(value)));
+            } else {
                 QName name;
                 if (elementFormDefault) {
                     name = new QName(ns.getNamespaceURI(), elementName,
@@ -1961,71 +1875,71 @@ public class BeanUtil {
                     name = new QName(elementName);
                 }
                 XMLStreamReader xr = BeanUtil.getPullParser(value, name,
-			    typeTable, true, false);
-		    OMXMLParserWrapper stAXOMBuilder = OMXMLBuilderFactory
-		    .createStAXOMBuilder(OMAbstractFactory.getOMFactory(),
-			    new StreamWrapper(xr));
-		    omValue = stAXOMBuilder.getDocumentElement();
-
-		}
-		addInstanceTypeAttribute(fac, omValue, value, typeTable);
-		return omValue;
-	    }
-	    return value;
-	}
-	
-	/**
-	 * Gets the collection instance object according to the genericType passed.
-	 *
-	 * @param genericType the generic type
-	 * @return the collection instance
-	 */
-	private static Collection<Object> getCollectionInstance(Type genericType) {
-	    Class rowType;
-	    if (genericType instanceof ParameterizedType) {
-		rowType = (Class) ((ParameterizedType) genericType).getRawType();
-	    } else {
-		rowType = (Class) genericType;
-	    }
-
-	    if (Collection.class.getName().equals(rowType.getName())
-		    || List.class.getName().equals(rowType.getName())) {
-		return new ArrayList<Object>();
-
-	    } else if (Set.class.getName().equals(rowType.getName())) {
-		return new HashSet<Object>();
-
-	    } else if (Queue.class.getName().equals(rowType.getName())) {
-		return new LinkedList<Object>();
-
-	    }  else if (BlockingQueue.class.getName().equals(rowType.getName())) {
-		return new LinkedBlockingQueue<Object>();
-
-	    } 
-//	    TODO - Enable this logic once the Axis2 move to Java 1.6.
-//	    else if (BlockingDeque.class.getName().equals(rowType.getName())) {
-//		return new LinkedBlockingDeque<Object>();
+                        typeTable, true, false);
+                OMXMLParserWrapper stAXOMBuilder = OMXMLBuilderFactory
+                        .createStAXOMBuilder(OMAbstractFactory.getOMFactory(),
+                                new StreamWrapper(xr));
+                omValue = stAXOMBuilder.getDocumentElement();
+
+            }
+            addInstanceTypeAttribute(fac, omValue, value, typeTable);
+            return omValue;
+        }
+        return value;
+    }
+    
+    /**
+     * Gets the collection instance object according to the genericType passed.
+     *
+     * @param genericType the generic type
+     * @return the collection instance
+     */
+    private static Collection<Object> getCollectionInstance(Type genericType) {
+        Class rowType;
+        if (genericType instanceof ParameterizedType) {
+            rowType = (Class) ((ParameterizedType) genericType).getRawType();
+        } else {
+            rowType = (Class) genericType;
+        }
+
+        if (Collection.class.getName().equals(rowType.getName())
+            || List.class.getName().equals(rowType.getName())) {
+            return new ArrayList<Object>();
+
+        } else if (Set.class.getName().equals(rowType.getName())) {
+            return new HashSet<Object>();
+
+        } else if (Queue.class.getName().equals(rowType.getName())) {
+            return new LinkedList<Object>();
+
+        } else if (BlockingQueue.class.getName().equals(rowType.getName())) {
+            return new LinkedBlockingQueue<Object>();
+
+        } 
+//        TODO - Enable this logic once the Axis2 move to Java 1.6.
+//        else if (BlockingDeque.class.getName().equals(rowType.getName())) {
+//        return new LinkedBlockingDeque<Object>();
 //
-//	    }else if (NavigableSet.class.getName().equals(rowType.getName())
-//		    || SortedSet.class.getName().equals(rowType.getName())) {
-//		return new TreeSet<Object>();
+//        }else if (NavigableSet.class.getName().equals(rowType.getName())
+//            || SortedSet.class.getName().equals(rowType.getName())) {
+//        return new TreeSet<Object>();
 //
-//	    } 	    
-	    else {
-		try {
-		    return (Collection<Object>) rowType.newInstance();
-		} catch (Exception e) {
-		    return new ArrayList<Object>();
-		}
-	    }
-	}
-	
+//        }
+        else {
+            try {
+                return (Collection<Object>) rowType.newInstance();
+            } catch (Exception e) {
+                return new ArrayList<Object>();
+            }
+        }
+    }
+    
     private static XMLGregorianCalendar getXMLGregorianCalendar(
             OMElement beanElement) throws DatatypeConfigurationException {
         String greCal = beanElement.getText();
         XMLGregorianCalendar xmlCal = DatatypeFactory.newInstance()
                 .newXMLGregorianCalendar(greCal);
         return xmlCal;
-    }	
+    }
 
 }

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/adb/src/org/apache/axis2/databinding/utils/Constants.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/adb/src/org/apache/axis2/databinding/utils/Constants.java?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/adb/src/org/apache/axis2/databinding/utils/Constants.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/adb/src/org/apache/axis2/databinding/utils/Constants.java Sun Dec 17 22:34:08 2017
@@ -19,7 +19,6 @@
 
 package org.apache.axis2.databinding.utils;
 
-import org.apache.axiom.om.OMConstants;
 import org.apache.axis2.databinding.utils.reader.OMAttribKey;
 import org.apache.axis2.databinding.utils.reader.OMElementKey;
 
@@ -38,8 +37,4 @@ public interface Constants {
 
     static Object OM_ATTRIBUTE_KEY = new OMAttribKey();
     static Object OM_ELEMENT_KEY = new OMElementKey();
-
-    static final String IS_BINARY = OMConstants.IS_BINARY;
-    static final String DATA_HANDLER = OMConstants.DATA_HANDLER;
-    static final String OPTIMIZATION_ENABLED = OMConstants.IS_DATA_HANDLERS_AWARE;
 }

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java Sun Dec 17 22:34:08 2017
@@ -1286,7 +1286,9 @@ public class ConverterUtil {
      * @return 0 if equal , + value if greater than , - value if less than
      */
     public static int compare(int intValue, String value) {
-        return intValue - Integer.parseInt(value);
+        int other = Integer.parseInt(value);
+        return intValue < other ? -1 : (intValue == other ? 0 : 1);
+
     }
 
     /**

Modified: axis/axis2/java/core/branches/AXIS2-4091/modules/adb/src/org/apache/axis2/databinding/utils/MultirefHelper.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4091/modules/adb/src/org/apache/axis2/databinding/utils/MultirefHelper.java?rev=1818518&r1=1818517&r2=1818518&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4091/modules/adb/src/org/apache/axis2/databinding/utils/MultirefHelper.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4091/modules/adb/src/org/apache/axis2/databinding/utils/MultirefHelper.java Sun Dec 17 22:34:08 2017
@@ -25,7 +25,7 @@ import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.OMText;
-import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.OMXMLBuilderFactory;
 import org.apache.axiom.soap.SOAPBody;
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axis2.AxisFault;
@@ -105,7 +105,7 @@ public class MultirefHelper {
     }
 
     private OMElement elementClone(OMElement ele) {
-        return new StAXOMBuilder(ele.getXMLStreamReader()).getDocumentElement();
+        return OMXMLBuilderFactory.createStAXOMBuilder(ele.getXMLStreamReader()).getDocumentElement();
     }
 
     public Object processRef(Class javatype, String id,