protected static void generateProtocolSchema(Document xmldoc, Element parent, String... suffixes) throws Exception { for(String suffix: suffixes) { String package_name=PROT_PACKAGE + (suffix == null || suffix.isEmpty()? "" : "." + suffix); Set<Class<?>> classes=getClasses(Protocol.class, package_name); for (Class<?> clazz : classes) classToXML(xmldoc, parent, clazz, package_name); } }
private static void classToXML(Document xmldoc, Element parent, Class<?> clazz, String preAppendToSimpleClassName) throws Exception { int mods=clazz.getModifiers(); boolean isConcreteClass=!Modifier.isAbstract(mods); boolean is_public=Modifier.isPublic(mods); boolean generate=is_public && isConcreteClass && !clazz.isAnonymousClass(); if(!generate) return; XmlInclude incl=Util.getAnnotation(clazz, XmlInclude.class); if(incl != null) { String[] schemas=incl.schema(); if(schemas != null) { for(String schema: schemas) { Element incl_el=xmldoc.createElement(incl.type() == XmlInclude.Type.IMPORT? "xs:import" : "xs:include"); if(incl.namespace() != null && !incl.namespace().isEmpty()) incl_el.setAttribute("namespace",incl.namespace()); incl_el.setAttribute("schemaLocation", schema); Node first_child=xmldoc.getDocumentElement().getFirstChild(); if(first_child == null) xmldoc.getDocumentElement().appendChild(incl_el); else xmldoc.getDocumentElement().insertBefore(incl_el, first_child); } } if(incl.alias() != null && !incl.alias().isEmpty()) xmldoc.getDocumentElement().setAttribute("xmlns:" + incl.alias(), incl.namespace()); } parent.appendChild(createXMLTree(xmldoc, clazz, preAppendToSimpleClassName)); }
complexType.appendChild(allType); generateProtocolSchema(xmldoc, allType, PACKAGES);
private static void classToXML(Document xmldoc, Element parent, Class<?> clazz, String preAppendToSimpleClassName) throws Exception { int mods=clazz.getModifiers(); boolean isConcreteClass=!Modifier.isAbstract(mods); boolean is_public=Modifier.isPublic(mods); boolean generate=is_public && isConcreteClass && !clazz.isAnonymousClass(); if(!generate) return; XmlInclude incl=Util.getAnnotation(clazz, XmlInclude.class); if(incl != null) { String[] schemas=incl.schema(); if(schemas != null) { for(String schema: schemas) { Element incl_el=xmldoc.createElement(incl.type() == XmlInclude.Type.IMPORT? "xs:import" : "xs:include"); if(incl.namespace() != null && !incl.namespace().isEmpty()) incl_el.setAttribute("namespace",incl.namespace()); incl_el.setAttribute("schemaLocation", schema); Node first_child=xmldoc.getDocumentElement().getFirstChild(); if(first_child == null) xmldoc.getDocumentElement().appendChild(incl_el); else xmldoc.getDocumentElement().insertBefore(incl_el, first_child); } } if(incl.alias() != null && !incl.alias().isEmpty()) xmldoc.getDocumentElement().setAttribute("xmlns:" + incl.alias(), incl.namespace()); } parent.appendChild(createXMLTree(xmldoc, clazz, preAppendToSimpleClassName)); }
complexType.appendChild(allType); generateProtocolSchema(xmldoc, allType, PACKAGES);
protected static void generateProtocolSchema(Document xmldoc, Element parent, String... suffixes) throws Exception { for(String suffix: suffixes) { String package_name=PROT_PACKAGE + (suffix == null || suffix.isEmpty()? "" : "." + suffix); Set<Class<?>> classes=getClasses(Protocol.class, package_name); for (Class<?> clazz : classes) classToXML(xmldoc, parent, clazz, package_name); } }
private static void classToXML(Document xmldoc, Element parent, Class<?> clazz, String preAppendToSimpleClassName) throws Exception { int mods=clazz.getModifiers(); boolean isConcreteClass=!Modifier.isAbstract(mods); boolean is_public=Modifier.isPublic(mods); boolean generate=is_public && isConcreteClass && !clazz.isAnonymousClass(); if(!generate) return; XmlInclude incl=Util.getAnnotation(clazz, XmlInclude.class); if(incl != null) { String[] schemas=incl.schema(); if(schemas != null) { for(String schema: schemas) { Element incl_el=xmldoc.createElement(incl.type() == XmlInclude.Type.IMPORT? "xs:import" : "xs:include"); if(incl.namespace() != null && !incl.namespace().isEmpty()) incl_el.setAttribute("namespace",incl.namespace()); incl_el.setAttribute("schemaLocation", schema); Node first_child=xmldoc.getDocumentElement().getFirstChild(); if(first_child == null) xmldoc.getDocumentElement().appendChild(incl_el); else xmldoc.getDocumentElement().insertBefore(incl_el, first_child); } } if(incl.alias() != null && !incl.alias().isEmpty()) xmldoc.getDocumentElement().setAttribute("xmlns:" + incl.alias(), incl.namespace()); } parent.appendChild(createXMLTree(xmldoc, clazz, preAppendToSimpleClassName)); }
complexType.appendChild(allType); generateProtocolSchema(xmldoc, allType, PACKAGES);
protected static void generateProtocolSchema(Document xmldoc, Element parent, String... suffixes) throws Exception { for(String suffix: suffixes) { String package_name=PROT_PACKAGE + (suffix == null || suffix.isEmpty()? "" : "." + suffix); Set<Class<?>> classes=getClasses(Protocol.class, package_name); for (Class<?> clazz : classes) classToXML(xmldoc, parent, clazz, package_name); } }