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 ContentModelGroup * @param cmGroup the ContentModelGroup to process * @param sInfo the current source generator state information **/ private void processContentModel(ContentModelGroup cmGroup, SGStateInfo sInfo) { Enumeration enum = cmGroup.enumerate(); while (enum.hasMoreElements()) { Structure struct = (Structure)enum.nextElement(); switch(struct.getStructureType()) { case Structure.ELEMENT: ElementDecl eDecl = (ElementDecl)struct; if (eDecl.isReference()) continue; createClasses(eDecl, sInfo); break; case Structure.GROUP: processContentModel((Group)struct, sInfo); //handle nested groups if (!((cmGroup instanceof ComplexType) || (cmGroup instanceof ModelGroup))) { createClasses((Group)struct, sInfo); } break; default: break; } } } //-- process
/** * Creates Java Source code (Object model) for the given XML Schema * @param schema the XML schema to generate the Java sources for * @param packageName the package for the generated source files **/ public void generateSource(Schema schema, String packageName) { SGStateInfo sInfo = new SGStateInfo(); sInfo.packageName = packageName; if(sInfo.packageName==null) sInfo.packageName=SourceGenerator.getJavaPackage(schema.getTargetNamespace()); sInfo.setPromptForOverwrite(warnOnOverwrite); sInfo.setVerbose(verbose); createClasses(schema, sInfo); } //-- generateSource