in taverna-wsdl-generic/src/main/java/org/apache/taverna/wsdl/xmlsplitter/XMLSplitterSerialisationHelper.java [116:155]
private static Element constructElementForComplexType(
ComplexTypeDescriptor descriptor, List<String> existingsTypes) {
Element result = new Element("complextype", XScuflNS);
if (existingsTypes.contains(descriptor.getQname().toString())) {
result.setAttribute("id", descriptor.getQname().toString());
populateElement(result, descriptor);
result.removeAttribute("qname");
} else {
existingsTypes.add(descriptor.getQname().toString());
populateElement(result, descriptor);
Element elements = new Element("elements", XScuflNS);
for (TypeDescriptor desc : descriptor.getElements()) {
Element element = null;
if (desc instanceof ComplexTypeDescriptor) {
element = constructElementForComplexType(
(ComplexTypeDescriptor) desc, existingsTypes);
} else if (desc instanceof ArrayTypeDescriptor) {
element = constructElementForArrayType(
(ArrayTypeDescriptor) desc, existingsTypes);
} else if (desc instanceof BaseTypeDescriptor) {
element = new Element("basetype", XScuflNS);
populateElement(element, desc);
}
if (element != null)
elements.addContent(element);
}
result.addContent(elements);
List<TypeDescriptor> attributeDescriptors = descriptor.getAttributes();
if (attributeDescriptors != null && attributeDescriptors.size() > 0) {
Element attributes = new Element("attributes", XScuflNS);
for (TypeDescriptor desc : attributeDescriptors) {
Element attribute = new Element("attribute", XScuflNS);
populateElement(attribute, desc);
attributes.addContent(attribute);
}
result.addContent(attributes);
}
}
return result;
}