You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by sc...@apache.org on 2008/08/02 18:12:20 UTC

svn commit: r682002 - /webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/JAXBWrapperToolImpl.java

Author: scheu
Date: Sat Aug  2 09:12:20 2008
New Revision: 682002

URL: http://svn.apache.org/viewvc?rev=682002&view=rev
Log:
Quick Debug Trace Fix

Modified:
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/JAXBWrapperToolImpl.java

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/JAXBWrapperToolImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/JAXBWrapperToolImpl.java?rev=682002&r1=682001&r2=682002&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/JAXBWrapperToolImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/JAXBWrapperToolImpl.java Sat Aug  2 09:12:20 2008
@@ -67,15 +67,24 @@
                     jaxbComplexTypeObj.getClass().getName());
             log.debug("The input child xmlnames are: " + toString(childNames));
         }
-        // Get the PropertyDescriptorPlus map.
+        
+        // Check the PropertyDescriptorPlus map if debug is enabled.
         // The method makes sure that each child name has a matching jaxb property
-        checkPropertyDescriptorMap(jaxbComplexTypeObj.getClass(), childNames, pdMap);
+        if (log.isDebugEnabled()) {
+            checkPropertyDescriptorMap(jaxbComplexTypeObj.getClass(), childNames, pdMap);
+        }
 
         // Get the corresponsing objects from the jaxb bean
         ArrayList<Object> objList = new ArrayList<Object>();
         for (String childName : childNames) {
             PropertyDescriptorPlus propInfo = pdMap.get(childName);
             Object object = null;
+            if (propInfo == null) {
+                throw new JAXBWrapperException(
+                      Messages.getMessage("JAXBWrapperErr6", 
+                      jaxbComplexTypeObj.getClass().getName(), 
+                      childName));
+            }
             try {
                 object = propInfo.get(jaxbComplexTypeObj);
             } catch (Throwable e) {
@@ -123,8 +132,10 @@
             log.debug("The input child xmlnames are: " + toString(childNames));
         }
 
-        // Just like unWrap, get the property info map
-        checkPropertyDescriptorMap(jaxbClass, childNames, pdMap);
+        // Just like unWrap, check the property descriptor map to make sure it is accurate
+        if (log.isDebugEnabled()) {
+            checkPropertyDescriptorMap(jaxbClass, childNames, pdMap);
+        }
 
         // The jaxb object always has a default constructor.  Create the object
         Object jaxbObject = null;
@@ -142,6 +153,11 @@
         for (String childName : childNames) {
             PropertyDescriptorPlus propInfo = pdMap.get(childName);
             Object value = childObjects.get(childName);
+            if (propInfo == null) {
+                throw new JAXBWrapperException(Messages.getMessage("JAXBWrapperErr6", 
+                                                                   jaxbClass.getName(), 
+                                                                   childName));
+            }
             try {
                 propInfo.set(jaxbObject, value);
             } catch (Throwable t) {
@@ -161,32 +177,37 @@
         return jaxbObject;
     }
 
-    /** Makes sure that each xmlChildName is present in the odMap */
+    /** 
+     * This code checks the pdMap to make sure that a PropertyDescriptor
+     * exists for each child name.  This code should only be called when
+     * debug is enabled or an exception occurs.  (It is too slow for the mainline path) 
+     * @param jaxbClass
+     * @param xmlChildNames
+     * @param pdMap
+     * @throws JAXBWrapperException
+     */
     private void checkPropertyDescriptorMap(Class jaxbClass,
                                             List<String> xmlChildNames,
                                             Map<String, PropertyDescriptorPlus> pdMap)
-            throws JAXBWrapperException {
-        // The following code is slow, and doc/lit wrapped is in the main
-        // performance flow.  So only do this check if debug is enabled.
-        if (log.isDebugEnabled()) {
-            for (int i = 0; i < xmlChildNames.size(); i++) {
-                String xmlChildName = xmlChildNames.get(i);
-                PropertyDescriptorPlus pd = pdMap.get(xmlChildName);
-                if (pd == null) {
-                    // Each xml child name must have a matching property.  
-                    
+    throws JAXBWrapperException {
+        for (int i = 0; i < xmlChildNames.size(); i++) {
+            String xmlChildName = xmlChildNames.get(i);
+            PropertyDescriptorPlus pd = pdMap.get(xmlChildName);
+            if (pd == null) {
+                // Each xml child name must have a matching property.  
+                if (log.isDebugEnabled()) {
                     log.debug(
                     "Error occurred trying to match an xml name to a child of a jaxb object");
                     log.debug("  The JAXBClass is:" + jaxbClass.getName());
                     log.debug("  The child name that we are looking for is:" + xmlChildName);
                     log.debug("  The JAXBClass has the following child xml names:" +
-                            toString(pdMap.keySet()));
+                              toString(pdMap.keySet()));
                     log.debug("  Complete list of child names that we are looking for:" +
-                            toString(xmlChildNames));
-                    
-                    throw new JAXBWrapperException(
-                            Messages.getMessage("JAXBWrapperErr6", jaxbClass.getName(), xmlChildName));
+                              toString(xmlChildNames));
                 }
+
+                throw new JAXBWrapperException(
+                                               Messages.getMessage("JAXBWrapperErr6", jaxbClass.getName(), xmlChildName));
             }
         }
     }