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}));
- }
}
}
}
Show replies by date