name = part.getTypeQName();
}
Mapping mapping = model.get(name);
//String clsName = null;
JType jType = null;
if (mapping != null) {
jType = mapping.getType().getTypeClass();
}
if (jType == null) {
TypeAndAnnotation typeAndAnnotation = model.getJavaType(part.getTypeQName());
if (typeAndAnnotation != null) {
jType = typeAndAnnotation.getTypeClass();
}
}
if (jType == null
&& part.isElement()
&& part.getXmlSchema() instanceof XmlSchemaElement
&& ((XmlSchemaElement)part.getXmlSchema()).getSchemaTypeName() == null) {
//anonymous inner thing.....
UnwrappedOperationInfo oInfo = (UnwrappedOperationInfo)op;
op = oInfo.getWrappedOperation();
if (part.getMessageInfo() == oInfo.getInput()) {
mapping = model.get(op.getInput().getMessagePart(0).getElementQName());
} else {
mapping = model.get(op.getOutput().getMessagePart(0).getElementQName());
}
if (mapping != null) {
jType = mapping.getType().getTypeClass();
try {
Iterator<JType> i = jType.classes();
while (i.hasNext()) {
JType jt = i.next();
if (jt.name().equalsIgnoreCase(part.getElementQName().getLocalPart())) {
jType = jt;
}
}
} catch (Throwable t) {
//ignore, JType is a type that doesn't have a classes method
}
}
}
if (jType == null) {
throw new ServiceConstructionException(new Message("NO_JAXB_CLASSMapping", LOG, name));
}
Class cls;
try {
int arrayCount = 0;
JType rootType = jType;
while (rootType.isArray()) {
rootType = rootType.elementType();
arrayCount++;
}
cls = getClassByName(rootType);
// bmargulies cannot find a way to ask the JVM to do this without creating
// an array object on the way.