Author: amilas
Date: Thu Mar 18 05:20:12 2010
New Revision: 924637

URL: http://svn.apache.org/viewvc?rev=924637&view=rev
Log:
Currently adb parsing avoids the local part check for the parts comes after an 
array. For those part elements if the part is not
there becase of minOccurszero then those parts pase with the wrong class type. 
so need to check the class type as above

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=924637&r1=924636&r2=924637&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
 Thu Mar 18 05:20:12 2010
@@ -574,12 +574,34 @@ public class BeanUtil {
             omElement = ProcessElement(classType, omElement, helper, parts,
                     currentLocalName, retObjs, count, objectSupplier, 
genericType);
             while (omElement != null) {
-                count ++;
-                omElement = ProcessElement((Class)javaTypes[count], omElement,
+                count++;
+                // if the local part is not match. this means element is not 
present
+                // due to min occurs zero.
+                // we need to hard code arg and item since that has been used 
in RPCService client
+                // and some test cases
+                while ((parameterNames != null) &&
+                        
(!omElement.getQName().getLocalPart().startsWith("arg")) &&
+                        
(!omElement.getQName().getLocalPart().startsWith("item")) &&
+                        
!omElement.getQName().getLocalPart().equals(parameterNames[count])) {
+                    // POJO handles OMElement in a differnt way so need this 
check for OMElement
+                    Class paramClassType = (Class) javaTypes[count];
+                    if 
(!paramClassType.getName().equals(OMElement.class.getName())) {
+                        count++;
+                    } else {
+                        break;
+                    }
+                }
+
+                currentLocalName = omElement.getLocalName();
+                classType = (Class) javaTypes[count];
+                if (genericParameterTypes != null) {
+                    genericType = genericParameterTypes[count];
+                }
+                omElement = ProcessElement((Class) javaTypes[count], omElement,
                         helper, parts, omElement.getLocalName(), retObjs, 
count,
                         objectSupplier, genericType);
             }
-            count ++;
+            count++;
         }
 
         // Ensure that we have at least a zero element array


Reply via email to