String db = dataType.getDataBinding();
while ("java:array".equals(db)) {
dataType = (DataType)dataType.getLogical();
db = dataType.getDataBinding();
}
XMLTypeHelper helper = helpers.get(db);
if (helper == null) {
DataBinding dataBinding = dataBindings.getDataBinding(db);
if (dataBinding == null) {
QName element = name;
if (element == null || dataType.getLogical() instanceof XMLType) {
XMLType xmlType = (XMLType)dataType.getLogical();
if (xmlType.getElementName() != null) {
element = xmlType.getElementName();
}
}
return new ElementInfo(element, new TypeInfo(ANYTYPE_QNAME, false, null));
// throw new ServiceRuntimeException("No data binding for " + db);
}
helper = dataBinding.getXMLTypeHelper();
if (helper == null) {
// Default to JAXB
helper = helpers.get(JAXBDataBinding.NAME);
if (helper == null) {
helper = dataBindings.getDataBinding(JAXBDataBinding.NAME).getXMLTypeHelper();
helpers.put(JAXBDataBinding.NAME, helper);
}
}
helpers.put(db, helper);
}
TypeInfo typeInfo = helper.getTypeInfo(javaType.isArray() ? javaType.getComponentType() : javaType,
dataType.getLogical());
ElementInfo element = new ElementInfo(name, typeInfo);
element.setMany(byte[].class != javaType && javaType.isArray());
element.setNillable(!javaType.isPrimitive());
return element;