List of usage examples for org.xml.sax.ext EntityResolver2 EntityResolver2
EntityResolver2
From source file:org.ajax4jsf.builder.config.BuilderConfig.java
/** * Parsing builder configuration file/*from w w w . ja v a 2 s. c om*/ * * @param configFile * @throws ParsingException */ public void parseConfig(final File configFile) throws ParsingException { getLog().info(" Parse config file " + configFile.toString()); Digester digester = new Digester(); digester.setRules(new ExtendedBaseRules()); digester.setValidating(false); digester.setNamespaceAware(false); // try { // URL dtd = // this.getClass().getClassLoader().getResource(COMPONENT_CONFIG_DTD_URI); // new // URL("resource:/com/exadel/vcp/builder/config/component-config.dtd"); getLog().debug("Register config DTD as URI " + COMPONENT_CONFIG_DTD_URI); digester.register(GENERATOR_CONFIG_PUBLIC_ID, COMPONENT_CONFIG_DTD_URI); // } catch (MalformedURLException e) { // throw new ParsingException("Malformed URL for internal DTD // reference",e); // } // setup custom entity resolver for handle file-resource path's // resolve DTD even it not pointed in file, and, for entities - resolve // it in // classpath if entity registered in DTD witn path /META-INF/schema digester.setEntityResolver(new EntityResolver2() { /* * (non-Javadoc) * * @see org.xml.sax.EntityResolver#resolveEntity(java.lang.String, * java.lang.String) */ public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException { getLog().debug("Request for entity with systemId " + systemId + " and publicId " + publicId); if (GENERATOR_CONFIG_PUBLIC_ID.equals(publicId)) { return getDTDSource(); } else if (null != publicId && null != systemId && systemId.contains(ENTITIES_FOLDER)) { int base = systemId.indexOf(ENTITIES_FOLDER); String entity = COMPONENT_SCHEMA_BASE + systemId.substring(base); getLog().debug("attempt to load entity from classpath " + entity); InputStream entityStream = BuilderConfig.class.getResourceAsStream(entity); if (null != entityStream) { return new InputSource(entityStream); } } return null; } public InputSource getExternalSubset(String name, String baseURI) throws SAXException, IOException { getLog().debug("Request for ExternalSubset with name " + name + " and baseURI " + baseURI); if (GENERATOR_CONFIG_ROOT_ELEMENT.equals(name)) { return getDTDSource(); } return null; } public InputSource resolveEntity(String name, String publicId, String baseURI, String systemId) throws SAXException, IOException { getLog().debug( "Request for extended entity with systemId " + systemId + " and publicId " + publicId); getLog().debug("additional parameters with name " + name + " and baseURI " + baseURI); if ("[dtd]".equals(name) && GENERATOR_CONFIG_PUBLIC_ID.equals(publicId)) { return getDTDSource(); } else if (null == name || (!name.startsWith("[") && !name.startsWith("&"))) { return resolveEntity(publicId, systemId); } return null; } /** * Resolve config DTD from classpath * * @return source of config file DTD */ private InputSource getDTDSource() { return new InputSource(BuilderConfig.class.getResourceAsStream(COMPONENT_CONFIG_DTD_URI)); } }); // Parsing rules. // Components String path = "components/component"; digester.addObjectCreate(path, ComponentBean.class); digester.addBeanPropertySetter(path + "/name"); digester.addBeanPropertySetter(path + "/family"); digester.addBeanPropertySetter(path + "/classname"); digester.addBeanPropertySetter(path + "/superclass"); digester.addBeanPropertySetter(path + "/description"); digester.addBeanPropertySetter(path + "/displayname"); digester.addBeanPropertySetter(path + "/icon"); // TODO - for superclass, populate from description in config file, if // exist digester.addSetProperties(path); digester.addSetNext(path, "addComponent"); path = "components/renderer"; digester.addObjectCreate(path, RendererBean.class); digester.addBeanPropertySetter(path + "/?"); digester.addSetProperties(path); digester.addSetNext(path, "addRenderer"); path = "components/component/renderer"; digester.addObjectCreate(path, RendererBean.class); digester.addBeanPropertySetter(path + "/?"); digester.addSetProperties(path); digester.addSetNext(path, "setRenderer"); path = "components/component/facet"; digester.addObjectCreate(path, JsfBean.class); digester.addBeanPropertySetter(path + "/?"); digester.addSetProperties(path); digester.addSetNext(path, "addFacet"); path = "components/component/event"; digester.addObjectCreate(path, EventBean.class); digester.addBeanPropertySetter(path + "/?"); digester.addSetProperties(path); digester.addSetNext(path, "addEvent"); // Validators path = "components/validator"; digester.addObjectCreate(path, ValidatorBean.class); digester.addBeanPropertySetter(path + "/id"); digester.addBeanPropertySetter(path + "/classname"); digester.addBeanPropertySetter(path + "/superclass"); digester.addBeanPropertySetter(path + "/description"); digester.addBeanPropertySetter(path + "/displayname"); digester.addBeanPropertySetter(path + "/icon"); // TODO - for superclass, populate from description in config file, if // exist digester.addSetProperties(path); digester.addSetNext(path, "addValidator"); path = "components/validator/property"; digester.addObjectCreate(path, PropertyBean.class); digester.addBeanPropertySetter(path + "/?"); digester.addSetProperties(path); digester.addSetNext(path, "addProperty"); // Converters path = "components/converter"; digester.addObjectCreate(path, ConverterBean.class); digester.addBeanPropertySetter(path + "/id"); digester.addBeanPropertySetter(path + "/classname"); digester.addBeanPropertySetter(path + "/superclass"); digester.addBeanPropertySetter(path + "/description"); digester.addBeanPropertySetter(path + "/displayname"); digester.addBeanPropertySetter(path + "/icon"); digester.addBeanPropertySetter(path + "/forclass"); // TODO - for superclass, populate from description in config file, if // exist digester.addSetProperties(path); digester.addSetNext(path, "addConverter"); // Functions path = "components/function"; digester.addObjectCreate(path, FunctionBean.class); digester.addBeanPropertySetter(path + "/name"); digester.addBeanPropertySetter(path + "/description"); digester.addBeanPropertySetter(path + "/method"); digester.addSetNext(path, "addFunction"); // - Tags & Tag handlers path = "components/component/tag"; digester.addObjectCreate(path, TagBean.class); digester.addBeanPropertySetter(path + "/?"); digester.addSetProperties(path); digester.addSetNext(path, "setTag"); path = "components/validator/tag"; digester.addObjectCreate(path, TagBean.class); digester.addBeanPropertySetter(path + "/?"); digester.addSetProperties(path); digester.addSetNext(path, "setTag"); path = "components/converter/tag"; digester.addObjectCreate(path, TagBean.class); digester.addBeanPropertySetter(path + "/?"); digester.addSetProperties(path); digester.addSetNext(path, "setTag"); path = "components/component/tag/test"; digester.addObjectCreate(path, TagTestClassHolder.class); digester.addBeanPropertySetter(path + "/?"); digester.addSetProperties(path); digester.addSetNext(path, "setTest"); path = "components/component/test"; digester.addObjectCreate(path, TestClassHolder.class); digester.addBeanPropertySetter(path + "/?"); digester.addSetProperties(path); digester.addSetNext(path, "setTest"); path = "components/component/taghandler"; digester.addObjectCreate(path, TagHandlerBean.class); digester.addBeanPropertySetter(path + "/?"); digester.addSetProperties(path); digester.addSetNext(path, "setTaghandler"); /* * path = "components/component/taghandler/test"; * digester.addObjectCreate(path, TestClassHolder.class); * digester.addBeanPropertySetter(path+"/?"); * digester.addSetProperties(path); digester.addSetNext(path, * "setTest"); */ // Properties path = "components/component/property"; digester.addObjectCreate(path, PropertyBean.class); digester.addBeanPropertySetter(path + "/?"); digester.addSetProperties(path); digester.addSetNext(path, "addProperty"); // path = "components/validator/property"; // digester.addObjectCreate(path, PropertyBean.class); // digester.addBeanPropertySetter(path+"/?"); // digester.addSetProperties(path); // digester.addSetNext(path, "addProperty"); path = "components/converter/property"; digester.addObjectCreate(path, PropertyBean.class); digester.addBeanPropertySetter(path + "/?"); digester.addSetProperties(path); digester.addSetNext(path, "addProperty"); path = "*/properties/property"; digester.addObjectCreate(path, PropertyBean.class); digester.addBeanPropertySetter(path + "/?"); digester.addSetProperties(path); digester.addSetNext(path, "addProperty"); // Listeners path = "components/listener"; digester.addObjectCreate(path, ListenerBean.class); digester.addBeanPropertySetter(path + "/?"); digester.addSetProperties(path); digester.addSetNext(path, "addListener"); path = "components/listener/tag"; digester.addObjectCreate(path, TagBean.class); digester.addBeanPropertySetter(path + "/?"); digester.addSetProperties(path); digester.addSetNext(path, "setTag"); path = "components/listener/taghandler"; digester.addObjectCreate(path, TagHandlerBean.class); digester.addBeanPropertySetter(path + "/?"); digester.addSetProperties(path); digester.addSetNext(path, "setTaghandler"); path = "components/listener/property"; digester.addObjectCreate(path, PropertyBean.class); digester.addBeanPropertySetter(path + "/?"); digester.addSetProperties(path); digester.addSetNext(path, "addProperty"); // Set this config as root. digester.push(this); try { digester.parse(configFile.toString()); } catch (IOException e) { // TODO Auto-generated catch block throw new ParsingException("I/O error on parsing config file ", e); } catch (SAXException e) { // TODO Auto-generated catch block throw new ParsingException("SAX Parsing error in config file ", e); } // checkComopnentProperties(); // return this; }
From source file:org.entcore.feeder.aaf.BaseImportProcessing.java
protected void parse(final Handler<Message<JsonObject>> handler, final ImportProcessing importProcessing) { final String[] files = vertx.fileSystem().readDirSync(path, getFileRegex()); final VoidHandler[] handlers = new VoidHandler[files.length + 1]; handlers[handlers.length - 1] = new VoidHandler() { @Override/* w ww .java 2 s . c om*/ protected void handle() { next(handler, importProcessing); } }; Arrays.sort(files); for (int i = files.length - 1; i >= 0; i--) { final int j = i; handlers[i] = new VoidHandler() { @Override protected void handle() { try { String file = files[j]; log.info("Parsing file : " + file); byte[] encoded = Files.readAllBytes(Paths.get(file)); String content = UNESCAPE_AAF.translate(new String(encoded, "UTF-8")); InputSource in = new InputSource(new StringReader(content)); AAFHandler sh = new AAFHandler(BaseImportProcessing.this); XMLReader xr = XMLReaderFactory.createXMLReader(); xr.setContentHandler(sh); xr.setEntityResolver(new EntityResolver2() { @Override public InputSource getExternalSubset(String name, String baseURI) throws SAXException, IOException { return null; } @Override public InputSource resolveEntity(String name, String publicId, String baseURI, String systemId) throws SAXException, IOException { return resolveEntity(publicId, systemId); } @Override public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException { if (systemId.equals("ficAlimMENESR.dtd")) { Reader reader = new FileReader(path + File.separator + "ficAlimMENESR.dtd"); return new InputSource(reader); } else { return null; } } }); xr.parse(in); importer.flush(new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> message) { if ("ok".equals(message.body().getString("status"))) { handlers[j + 1].handle(null); } else { error(message, handler); } } }); } catch (Exception e) { error(e, handler); } } }; } handlers[0].handle(null); }