Example usage for org.apache.commons.digester3.binder AbstractRulesModule AbstractRulesModule

List of usage examples for org.apache.commons.digester3.binder AbstractRulesModule AbstractRulesModule

Introduction

In this page you can find the example usage for org.apache.commons.digester3.binder AbstractRulesModule AbstractRulesModule.

Prototype

AbstractRulesModule

Source Link

Usage

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;
}