[jbossws-commits] JBossWS SVN: r16103 - stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/umdm.

jbossws-commits at lists.jboss.org jbossws-commits at lists.jboss.org
Thu Apr 5 04:34:36 EDT 2012


Author: ropalka
Date: 2012-04-05 04:34:35 -0400 (Thu, 05 Apr 2012)
New Revision: 16103

Modified:
   stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/umdm/EndpointMetaData.java
Log:
[JBWS-3474] fixing regression

Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/umdm/EndpointMetaData.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/umdm/EndpointMetaData.java	2012-04-05 08:08:46 UTC (rev 16102)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/umdm/EndpointMetaData.java	2012-04-05 08:34:35 UTC (rev 16103)
@@ -482,6 +482,7 @@
    {
       TypeMappingImpl typeMapping = serviceMetaData.getTypeMapping();
       List<TypeMappingMetaData> typeMappings = serviceMetaData.getTypesMetaData().getTypeMappings();
+      List<Class> registeredTypes = new ArrayList<Class>(typeMappings.size());
       for (TypeMappingMetaData tmMetaData : typeMappings)
       {
          String javaTypeName = tmMetaData.getJavaTypeName();
@@ -490,27 +491,44 @@
          {
             List<Class> types = typeMapping.getJavaTypes(xmlType);
 
-            try
+            // TODO: Clarification. In which cases is the type already registered?
+            boolean registered = false;
+            for (Class current : types)
             {
-               ClassLoader classLoader = getClassLoader();
-               Class javaType = JavaUtils.loadJavaType(javaTypeName, classLoader);
+               if (current.getName().equals(javaTypeName))
+               {
+                  registeredTypes.add(current);
+                  registered = true;
+                  break;
+               }
+            }
 
-               if (JavaUtils.isPrimitive(javaTypeName))
-                  javaType = JavaUtils.getWrapperType(javaType);
+            if (registered == false)
+            {
+               try
+               {
+                  ClassLoader classLoader = getClassLoader();
+                  Class javaType = JavaUtils.loadJavaType(javaTypeName, classLoader);
 
-               if (getEncodingStyle() == Use.ENCODED && javaType.isArray())
-               {
-                  typeMapping.register(javaType, xmlType, new SOAPArraySerializerFactory(), new SOAPArrayDeserializerFactory());
+                  if (JavaUtils.isPrimitive(javaTypeName))
+                     javaType = JavaUtils.getWrapperType(javaType);
+
+                  registeredTypes.add(javaType);
+
+                  if (getEncodingStyle() == Use.ENCODED && javaType.isArray())
+                  {
+                     typeMapping.register(javaType, xmlType, new SOAPArraySerializerFactory(), new SOAPArrayDeserializerFactory());
+                  }
+                  else
+                  {
+                     typeMapping.register(javaType, xmlType, new JBossXBSerializerFactory(), new JBossXBDeserializerFactory());
+                  }
                }
-               else
+               catch (ClassNotFoundException e)
                {
-                  typeMapping.register(javaType, xmlType, new JBossXBSerializerFactory(), new JBossXBDeserializerFactory());
+                  log.warn(BundleUtils.getMessage(bundle, "CANNOT_LOAD_CLASS", new Object[]{ xmlType,  javaTypeName}));
                }
             }
-            catch (ClassNotFoundException e)
-            {
-               log.warn(BundleUtils.getMessage(bundle, "CANNOT_LOAD_CLASS", new Object[]{ xmlType,  javaTypeName}));
-            }
          }
       }
    }



More information about the jbossws-commits mailing list