}
}
private void eagerInitializeTypes()
{
TypeMappingImpl typeMapping = serviceMetaData.getTypeMapping();
List<TypeMappingMetaData> typeMappings = serviceMetaData.getTypesMetaData().getTypeMappings();
registeredTypes = new ArrayList<Class>(typeMappings.size());
for (TypeMappingMetaData tmMetaData : typeMappings)
{
String javaTypeName = tmMetaData.getJavaTypeName();
QName xmlType = tmMetaData.getXmlType();
if (xmlType != null)
{
List<Class> types = typeMapping.getJavaTypes(xmlType);
// TODO: Clarification. In which cases is the type already registered?
boolean registered = false;
for (Class current : types)
{
if (current.getName().equals(javaTypeName))
{
registeredTypes.add(current);
registered = true;
break;
}
}
if (registered == false)
{
try
{
ClassLoader classLoader = getClassLoader();
Class javaType = JavaUtils.loadJavaType(javaTypeName, classLoader);
if (JavaUtils.isPrimitive(javaTypeName))
javaType = JavaUtils.getWrapperType(javaType);
// Needed for runtime JAXB context
registeredTypes.add(javaType);
if (getEncodingStyle() == Use.ENCODED && javaType.isArray())
{
typeMapping.register(javaType, xmlType, new SOAPArraySerializerFactory(), new SOAPArrayDeserializerFactory());
}
else
{
if (getType() == Type.JAXWS)
{
typeMapping.register(javaType, xmlType, new JAXBSerializerFactory(), new JAXBDeserializerFactory());
}
else
{
typeMapping.register(javaType, xmlType, new JBossXBSerializerFactory(), new JBossXBDeserializerFactory());
}
}
}
catch (ClassNotFoundException e)
{