protected List<JavaField> buildFields(final Method method, final MessageInfo message) {
List<JavaField> fields = new ArrayList<JavaField>();
final Class<?> returnType = method.getReturnType();
JavaField field = new JavaField();
if (CollectionUtils.isEmpty(message.getMessageParts())) {
return fields;
}
MessagePartInfo part = message.getMessageParts().get(0);
field.setName(part.getName().getLocalPart());
if (!returnType.isAssignableFrom(void.class)) {
String type;
if (returnType.isArray()) {
if (isBuiltInTypes(returnType.getComponentType())) {
type = returnType.getComponentType().getSimpleName() + "[]";
} else {
type = returnType.getComponentType().getName() + "[]";
}
} else {
type = returnType.getName();
}
field.setType(type);
field.setTargetNamespace("");
}
fields.add(field);
final Class[] paramClasses = method.getParameterTypes();
for (MessagePartInfo mpi : message.getMessageParts()) {
int idx = mpi.getIndex();
if (idx > 0) {
String name = mpi.getName().getLocalPart();
String type;
Class clz = paramClasses[idx - 1];
if (clz.isArray()) {
if (isBuiltInTypes(clz.getComponentType())) {
type = clz.getComponentType().getSimpleName() + "[]";
} else {
type = clz.getComponentType().getName() + "[]";
}
} else {
type = clz.getName();
}
fields.add(new JavaField(name, type, ""));
}
}
return fields;