private SDOType processComplexType(String targetNamespace, String defaultNamespace, String name, ComplexType complexType) { if (complexType == null) { return null; } boolean addedNR = addNextNamespaceResolver(complexType.getAttributesMap()); SDOType newType = startComplexType(targetNamespace, defaultNamespace, name, complexType); if (newType != null) { if (complexType.getComplexContent() != null) { processComplexContent(targetNamespace, defaultNamespace, complexType.getComplexContent(), newType); finishComplexType(newType); } else if (complexType.getSimpleContent() != null) { processSimpleContent(targetNamespace, defaultNamespace, complexType.getSimpleContent(), newType); finishComplexType(newType); } else { if (complexType.getChoice() != null) { processChoice(targetNamespace, defaultNamespace, newType, complexType.getChoice(), false); } else if (complexType.getSequence() != null) { processSequence(targetNamespace, defaultNamespace, newType, complexType.getSequence(), false); } else if (complexType.getAll() != null) { processAll(targetNamespace, defaultNamespace, newType, complexType.getAll(), false); } processOrderedAttributes(targetNamespace, defaultNamespace, newType, complexType.getOrderedAttributes()); finishComplexType(newType); } } if (addedNR) { namespaceResolvers.remove(namespaceResolvers.size() - 1); } return newType; }