use of com.ibm.commons.xml.Format in project org.openntf.nsfodp by OpenNTF.
the class AbstractSchemaServlet method doGet.
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
try {
Document doc = DOMUtil.createDocument(namespace, "xs:schema");
doc.setXmlStandalone(true);
Element schema = doc.getDocumentElement();
schema.setAttribute("xmlns:xs", "http://www.w3.org/2001/XMLSchema");
schema.setAttribute("xmlns:" + extMap.get(namespace), namespace);
schema.setAttribute("targetNamespace", namespace);
schema.setAttribute("elementFormDefault", "qualified");
for (String importUri : this.imports) {
schema.setAttribute("xmlns:" + extMap.get(importUri), importUri);
Element importEl = DOMUtil.createElement(doc, schema, "xs:import");
importEl.setAttribute("namespace", importUri);
// importEl.setAttribute("schemaLocation", URI.create(req.getRequestURL().toString()).resolve(extMap.get(importUri) + ".xsd").toString());
importEl.setAttribute("schemaLocation", extMap.get(importUri) + ".xsd");
}
outSimpleTypes(schema);
SharableRegistryImpl facesRegistry = new SharableRegistryImpl(getClass().getPackage().getName());
// $NON-NLS-1$
List<Object> libraries = ExtensionManager.findServices((List<Object>) null, LibraryServiceLoader.class, "com.ibm.xsp.Library");
libraries.stream().filter(lib -> lib instanceof XspLibrary).map(XspLibrary.class::cast).map(lib -> new LibraryWrapper(lib.getLibraryId(), lib)).map(wrapper -> {
SimpleRegistryProvider provider = new SimpleRegistryProvider();
provider.init(wrapper);
return provider;
}).map(XspRegistryProvider::getRegistry).forEach(facesRegistry::addDepend);
facesRegistry.refreshReferences();
@SuppressWarnings("unchecked") List<FacesDefinition> defs = (List<FacesDefinition>) (List<?>) facesRegistry.findDefs();
defs.stream().filter(FacesDefinition::isTag).filter(def -> StringUtil.equals(namespace, def.getNamespaceUri())).forEach(def -> outComponentDefinition(def, schema, facesRegistry, false));
resp.setContentType("text/xml");
DOMUtil.serialize(resp.getOutputStream(), doc, new Format(2, true, "UTF-8"));
} catch (Throwable e) {
e.printStackTrace();
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getLocalizedMessage());
resp.setContentType("text/plain");
e.printStackTrace(new PrintWriter(resp.getOutputStream()));
resp.getOutputStream().flush();
e.printStackTrace();
}
}
Aggregations