private static Element constructElementForComplexType()

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;
	}