private void createClasses(Schema schema, SGStateInfo sInfo) { Enumeration structures = schema.getElementDecls(); //-- handle all top-level element declarations while (structures.hasMoreElements()) createClasses((ElementDecl)structures.nextElement(), sInfo); //-- handle all top-level complextypes structures = schema.getComplexTypes(); while (structures.hasMoreElements()) processComplexType((ComplexType)structures.nextElement(), sInfo); //-- handle all top-level simpletypes structures = schema.getSimpleTypes(); while (structures.hasMoreElements()) processSimpleType((SimpleType)structures.nextElement(), sInfo); //-- handle all top-level groups structures = schema.getModelGroups(); while (structures.hasMoreElements()) createClasses((ModelGroup)structures.nextElement(), sInfo); } //-- createClasses
/** * Processes the given ComplexType and creates all necessary class * to support it * @param complexType the ComplexType to process **/ private void processComplexType(ComplexType complexType, SGStateInfo sInfo) { if (complexType == null) return; ClassInfo classInfo = sInfo.resolve(complexType); if (classInfo == null) { //-- handle top-leve complextypes if (complexType.isTopLevel()) { JClass[] classes = sourceFactory.createSourceCode(complexType, sInfo); for (int i = 0; i < classes.length; i++) processJClass(classes[i], sInfo); } //-- process base complextype if necessary XMLType baseType= complexType.getBaseType(); if (baseType != null && baseType.getSchema() == complexType.getSchema()) { if (baseType.isComplexType()) processComplexType((ComplexType)baseType, sInfo); } //-- process AttributeDecl processAttributes(complexType, sInfo); //-- process ContentModel processContentModel(complexType, sInfo); } else { JClass jClass = classInfo.getJClass(); if (!sInfo.processed(jClass)) { //-- process AttributeDecl processAttributes(complexType, sInfo); //-- process ContentModel processContentModel(complexType, sInfo); processJClass(jClass, sInfo); } } } //-- processComplexType
private void createClasses(ElementDecl elementDecl, SGStateInfo sInfo) { //-- when mapping schema types, only interested in producing classes //-- for elements with anonymous complex types if (SourceGenerator.mappingSchemaType2Java()) if (elementDecl.isReference() || (elementDecl.getType()!=null && elementDecl.getType().getName()!=null)) return; if (sInfo.verbose()) { System.out.print("Creating classes for element: "); System.out.println(elementDecl.getName()); } //-- create classes for sub-elements if necessary XMLType xmlType = elementDecl.getType(); //-- No type definition if (xmlType == null) { System.out.print("Type not found for element: "); System.out.println(elementDecl.getName()); return; } //-- ComplexType else if (xmlType.isComplexType()) { JClass[] classes = sourceFactory.createSourceCode(elementDecl, sInfo); processComplexType((ComplexType)xmlType, sInfo); for (int i = 0; i < classes.length; i++) processJClass(classes[i], sInfo); } //-- SimpleType else { processSimpleType((SimpleType)xmlType, sInfo); } } //-- createClasses