List of usage examples for org.apache.commons.digester3.binder AbstractRulesModule AbstractRulesModule
AbstractRulesModule
From source file:org.efaps.maven.jetty.configuration.ServerDefinition.java
/** * Initializes a new instanc of the server definition a a XML file. * * @param _url path to the XML file within the server definition * @return configured instance from the XML file *//*from www.j a va 2s . c om*/ public static ServerDefinition read(final String _url) { ServerDefinition ret = null; try { final DigesterLoader loader = DigesterLoader.newLoader(new AbstractRulesModule() { @Override protected void configure() { forPattern("server").createObject().ofType(ServerDefinition.class).then().setProperties(); forPattern("server/parameter").callMethod("addIniParam").withParamCount(2) .withParamTypes(String.class, String.class).then().callParam().fromAttribute("key") .ofIndex(0).then().callParam().ofIndex(1); forPattern("server/filter").createObject().ofType(FilterDefinition.class).then() .setNext("addFilter"); forPattern("server/filter").setProperties(); forPattern("server/filter/parameter").callMethod("addIniParam").withParamCount(2) .withParamTypes(String.class, String.class).then().callParam().fromAttribute("key") .ofIndex(0).then().callParam().ofIndex(1); forPattern("server/servlet").createObject().ofType(ServletDefinition.class).then() .setNext("addServlet"); forPattern("server/servlet").setProperties(); forPattern("server/servlet/parameter").callMethod("addIniParam").withParamCount(2) .withParamTypes(String.class, String.class).then().callParam().fromAttribute("key") .ofIndex(0).then().callParam().ofIndex(1); } }); final Digester digester = loader.newDigester(); ret = (ServerDefinition) digester.parse(_url); } catch (final IOException e) { ServerDefinition.LOG.error(_url.toString() + " is not readable", e); } catch (final SAXException e) { ServerDefinition.LOG.error(_url.toString() + " seems to be invalide XML", e); } return ret; }