Example usage for org.apache.commons.digester Digester addSetProperty

List of usage examples for org.apache.commons.digester Digester addSetProperty

Introduction

In this page you can find the example usage for org.apache.commons.digester Digester addSetProperty.

Prototype

public void addSetProperty(String pattern, String name, String value) 

Source Link

Document

Add a "set property" rule for the specified parameters.

Usage

From source file:com.npower.common.plugins.DaemonControllerPlugIn.java

/**
 * <p>/*from  w ww .ja  v  a2 s  .  co  m*/
 * Instantiate a <code>Digester</code>.
 * </p>
 * <p>
 * Subclasses may wish to override this to provide a subclass of Digester, or
 * to configure the Digester using object methods.
 * </p>
 * 
 * @return a basic instance of
 *         <code>org.apache.commons.digester.Digester</code>
 */
protected Digester newDigesterInstance() {
    Digester digester = new Digester();
    digester.setValidating(false);
    digester.addObjectCreate("daemons", ArrayList.class);
    digester.addObjectCreate("*/plug-in", "className", PlugIn.class);
    digester.addSetProperty("*/plug-in/set-property", "property", "value");
    digester.addSetNext("*/plug-in", "add");
    return digester;

}

From source file:net.jcreate.xkins.XkinsLoader.java

/**
 * Carga los skins. Mtodo privado que utilizan los dems. Usa el Digester.
 * @param in/*from ww  w  .j a va 2s  .c o  m*/
 * @param xk
 * @return
 * @throws XkinsException
 */
private Xkins loadSkins(InputStream in, Xkins xk) throws XkinsException {
    try {
        Digester digester = new Digester();
        Xkins xkLoading = new Xkins();
        URL url = this.getClass().getResource(this.dtd);
        if (url != null) {
            digester.register(this.registration, url.toString());
            //digester.setValidating(true);
        }
        digester.push(xkLoading);
        digester.addSetProperties("xkins");
        //Crea los Skins
        digester.addFactoryCreate("xkins/skin", new SkinFactory(xkLoading));
        digester.addSetProperties("xkins/skin");
        digester.addSetProperty("xkins/skin/set-property", "property", "value");
        digester.addSetTop("xkins/skin", "setXkins", XKINS_CLASS_NAME);

        digester.addObjectCreate("xkins/global-processor", PROCESSOR_CLASS_NAME);
        digester.addSetProperties("xkins/global-processor");
        digester.addSetNext("xkins/global-processor", "addProcessor", PROCESSOR_CLASS_NAME);

        this.skinDigester(digester, "xkins/");

        //Agrega el skin
        digester.addSetNext("xkins/skin", "addSkin", SKIN_CLASS_NAME);
        try {
            // Parse the input stream to initialize our database
            digester.parse(in);
            in.close();
        } catch (SAXException e) {
            System.out.println(":" + e.getMessage());
            System.out.println(":" + e);
            e.printStackTrace();
        } finally {
            if (in != null) {
                try {
                    in.close();
                } catch (Exception e) {
                }
            }
        }
        this.loadSkinsDefinition(xkLoading);
        //copio los xkins cargados al xk
        Iterator it = xkLoading.getSkins().keySet().iterator();
        while (it.hasNext()) {
            String skinName = (String) it.next();
            Skin sk = (Skin) xkLoading.getSkins().get(skinName);
            sk.setXkins(xk);
            xk.addSkin(sk);
        }
        XkinsLoadEvent xle = new XkinsLoadEvent(this);
        xle.setXkins(xk);
        xk.sendEvent(xle);
        xk.addProcessors(xkLoading.getProcessors());
        return xk;
    } catch (Throwable thr) {
        thr.printStackTrace();
        throw new XkinsException(thr);
    }
}

From source file:net.jetrix.config.ServerRuleSet.java

public void addRuleInstances(Digester digester) {
    // server parameters
    digester.addCallMethod("tetrinet-server/name", "setName", 0);
    digester.addCallMethod("tetrinet-server", "setHost", 1);
    digester.addCallParam("tetrinet-server", 0, "host");
    digester.addCallMethod("tetrinet-server/language", "setLocale", 0);
    digester.addCallMethod("tetrinet-server/timeout", "setTimeout", 0, new Class[] { Integer.TYPE });
    digester.addCallMethod("tetrinet-server/max-channels", "setMaxChannels", 0, new Class[] { Integer.TYPE });
    digester.addCallMethod("tetrinet-server/max-players", "setMaxPlayers", 0, new Class[] { Integer.TYPE });
    digester.addCallMethod("tetrinet-server/max-connections", "setMaxConnections", 0,
            new Class[] { Integer.TYPE });
    digester.addCallMethod("tetrinet-server/op-password", "setOpPassword", 0);
    digester.addCallMethod("tetrinet-server/admin-password", "setAdminPassword", 0);
    digester.addCallMethod("tetrinet-server/access-log", "setAccessLogPath", 1);
    digester.addCallParam("tetrinet-server/access-log", 0, "path");
    digester.addCallMethod("tetrinet-server/error-log", "setErrorLogPath", 1);
    digester.addCallParam("tetrinet-server/error-log", 0, "path");
    digester.addCallMethod("tetrinet-server/channels", "setChannelsFile", 1);
    digester.addCallParam("tetrinet-server/channels", 0, "path");

    // command definitions
    digester.addObjectCreate("*/command", null, "class");
    digester.addSetNext("*/command", "addCommand", "net.jetrix.commands.Command");
    digester.addCallMethod("*/command", "setAccessLevel", 1, new Class[] { Integer.TYPE });
    digester.addCallParam("*/command", 0, "access-level");

    // listeners//from   w  w  w  .j a va 2s.  c  om
    digester.addObjectCreate("*/listener", null, "class");
    digester.addSetProperties("*/listener");
    digester.addCallMethod("*/listener", "setAutoStart", 1, new Class[] { Boolean.TYPE });
    digester.addCallParam("*/listener", 0, "auto-start");
    digester.addSetNext("*/listener", "addListener", "net.jetrix.Listener");

    // services
    digester.addObjectCreate("*/service", null, "class");
    digester.addSetProperties("*/service");
    digester.addCallMethod("*/service", "setAutoStart", 1, new Class[] { Boolean.TYPE });
    digester.addCallParam("*/service", 0, "auto-start");
    digester.addSetProperty("*/service/param", "name", "value");
    digester.addSetNext("*/service", "addService", "net.jetrix.Service");

    // banlist
    digester.addCallMethod("tetrinet-server/ban/host", "addBannedHost", 0);

    // datasource
    digester.addObjectCreate("*/datasource", "net.jetrix.config.DataSourceConfig");
    digester.addSetNext("*/datasource", "addDataSource", "net.jetrix.config.DataSourceConfig");
    digester.addCallMethod("*/datasource", "setName", 1);
    digester.addCallParam("*/datasource", 0, "name");
    digester.addCallMethod("*/datasource/driver", "setDriver", 0);
    digester.addCallMethod("*/datasource/url", "setUrl", 0);
    digester.addCallMethod("*/datasource/username", "setUsername", 0);
    digester.addCallMethod("*/datasource/password", "setPassword", 0);
    digester.addCallMethod("*/datasource/min-idle", "setMinIdle", 0);
    digester.addCallMethod("*/datasource/max-active", "setMaxActive", 0);

    // mail session
    digester.addObjectCreate("*/mailserver", "net.jetrix.config.MailSessionConfig");
    digester.addSetNext("*/mailserver", "setMailSessionConfig", "net.jetrix.config.MailSessionConfig");
    digester.addCallMethod("*/mailserver", "setHostname", 1);
    digester.addCallParam("*/mailserver", 0, "host");
    digester.addCallMethod("*/mailserver", "setPort", 1, new Class[] { Integer.TYPE });
    digester.addCallParam("*/mailserver", 0, "port");
    digester.addCallMethod("*/mailserver", "setAuth", 1, new Class[] { Boolean.TYPE });
    digester.addCallParam("*/mailserver", 0, "auth");
    digester.addCallMethod("*/mailserver", "setUsername", 1);
    digester.addCallParam("*/mailserver", 0, "username");
    digester.addCallMethod("*/mailserver", "setPassword", 1);
    digester.addCallParam("*/mailserver", 0, "password");
    digester.addCallMethod("*/mailserver", "setDebug", 1, new Class[] { Boolean.TYPE });
    digester.addCallParam("*/mailserver", 0, "debug");

    // extended properties
    digester.addCallMethod("*/properties/property", "setProperty", 2);
    digester.addCallParam("*/properties/property", 0, "name");
    digester.addCallParam("*/properties/property", 1, "value");
}

From source file:org.apache.struts.tiles.xmlDefinition.XmlParser.java

/**
 * Init digester for Tiles syntax.//from  w  ww.ja  v  a  2 s.c om
 * Same as components, but with first element = tiles-definitions
 * @param digester Digester instance to use.
 */
private void initDigesterForTilesDefinitionsSyntax(Digester digester) {
    // Common constants
    String PACKAGE_NAME = "org.apache.struts.tiles.xmlDefinition";
    String DEFINITION_TAG = "tiles-definitions/definition";
    String definitionHandlerClass = PACKAGE_NAME + ".XmlDefinition";

    String PUT_TAG = DEFINITION_TAG + "/put";
    String putAttributeHandlerClass = PACKAGE_NAME + ".XmlAttribute";

    //String LIST_TAG = DEFINITION_TAG + "/putList";
    // List tag value
    String LIST_TAG = "putList";
    String DEF_LIST_TAG = DEFINITION_TAG + "/" + LIST_TAG;
    String listHandlerClass = PACKAGE_NAME + ".XmlListAttribute";
    // Tag value for adding an element in a list
    String ADD_LIST_ELE_TAG = "*/" + LIST_TAG + "/add";

    // syntax rules
    digester.addObjectCreate(DEFINITION_TAG, definitionHandlerClass);
    digester.addSetProperties(DEFINITION_TAG);
    digester.addSetNext(DEFINITION_TAG, "putDefinition", definitionHandlerClass);
    // put / putAttribute rules
    // Rules for a same pattern are called in order, but rule.end() are called
    // in reverse order.
    // SetNext and CallMethod use rule.end() method. So, placing SetNext in
    // first position ensure it will be called last (sic).
    digester.addObjectCreate(PUT_TAG, putAttributeHandlerClass);
    digester.addSetNext(PUT_TAG, "addAttribute", putAttributeHandlerClass);
    digester.addSetProperties(PUT_TAG);
    digester.addCallMethod(PUT_TAG, "setBody", 0);
    // Definition level list rules
    // This is rules for lists nested in a definition
    digester.addObjectCreate(DEF_LIST_TAG, listHandlerClass);
    digester.addSetProperties(DEF_LIST_TAG);
    digester.addSetNext(DEF_LIST_TAG, "addAttribute", putAttributeHandlerClass);
    // list elements rules
    // We use Attribute class to avoid rewriting a new class.
    // Name part can't be used in listElement attribute.
    digester.addObjectCreate(ADD_LIST_ELE_TAG, putAttributeHandlerClass);
    digester.addSetNext(ADD_LIST_ELE_TAG, "add", putAttributeHandlerClass);
    digester.addSetProperties(ADD_LIST_ELE_TAG);
    digester.addCallMethod(ADD_LIST_ELE_TAG, "setBody", 0);

    // nested list elements rules
    // Create a list handler, and add it to parent list
    String NESTED_LIST = "*/" + LIST_TAG + "/" + LIST_TAG;
    digester.addObjectCreate(NESTED_LIST, listHandlerClass);
    digester.addSetProperties(NESTED_LIST);
    digester.addSetNext(NESTED_LIST, "add", putAttributeHandlerClass);

    // item elements rules
    // We use Attribute class to avoid rewriting a new class.
    // Name part can't be used in listElement attribute.
    //String ADD_WILDCARD = LIST_TAG + "/addItem";
    // non String ADD_WILDCARD = LIST_TAG + "/addx*";
    String ADD_WILDCARD = "*/item";
    String menuItemDefaultClass = "org.apache.struts.tiles.beans.SimpleMenuItem";
    digester.addObjectCreate(ADD_WILDCARD, menuItemDefaultClass, "classtype");
    digester.addSetNext(ADD_WILDCARD, "add", "java.lang.Object");
    digester.addSetProperties(ADD_WILDCARD);

    // bean elements rules
    String BEAN_TAG = "*/bean";
    String beanDefaultClass = "org.apache.struts.tiles.beans.SimpleMenuItem";
    digester.addObjectCreate(BEAN_TAG, beanDefaultClass, "classtype");
    digester.addSetNext(BEAN_TAG, "add", "java.lang.Object");
    digester.addSetProperties(BEAN_TAG);

    // Set properties to surrounding element
    digester.addSetProperty(BEAN_TAG + "/set-property", "property", "value");
}

From source file:org.apache.tiles.definition.digester.DigesterDefinitionsReader.java

/**
 * Init digester for Tiles syntax with first element = tiles-definitions.
 *
 * @param digester Digester instance to use.
 *//* w w  w .j a v  a2  s  .  c  om*/
private void initDigesterForTilesDefinitionsSyntax(Digester digester) {
    // syntax rules
    digester.addObjectCreate(DEFINITION_TAG, DEFINITION_HANDLER_CLASS);
    digester.addRule(DEFINITION_TAG, new FillDefinitionRule());
    digester.addSetNext(DEFINITION_TAG, "addDefinition", DEFINITION_HANDLER_CLASS);

    // nested definition rules
    digester.addObjectCreate(PUT_DEFINITION_TAG, DEFINITION_HANDLER_CLASS);
    digester.addRule(PUT_DEFINITION_TAG, new FillDefinitionRule());
    digester.addSetRoot(PUT_DEFINITION_TAG, "addDefinition");
    digester.addRule(PUT_DEFINITION_TAG, new AddNestedDefinitionRule());
    digester.addObjectCreate(ADD_DEFINITION_TAG, DEFINITION_HANDLER_CLASS);
    digester.addRule(ADD_DEFINITION_TAG, new FillDefinitionRule());
    digester.addSetRoot(ADD_DEFINITION_TAG, "addDefinition");
    digester.addRule(ADD_DEFINITION_TAG, new AddNestedDefinitionRule());

    // put / putAttribute rules
    // Rules for a same pattern are called in order, but rule.end() are called
    // in reverse order.
    // SetNext and CallMethod use rule.end() method. So, placing SetNext in
    // first position ensure it will be called last (sic).
    digester.addObjectCreate(PUT_TAG, PUT_ATTRIBUTE_HANDLER_CLASS);
    digester.addRule(PUT_TAG, new FillAttributeRule());
    digester.addRule(PUT_TAG, new PutAttributeRule());
    digester.addCallMethod(PUT_TAG, "setBody", 0);
    // Definition level list rules
    // This is rules for lists nested in a definition
    digester.addObjectCreate(DEF_LIST_TAG, LIST_HANDLER_CLASS);
    digester.addSetProperties(DEF_LIST_TAG);
    digester.addRule(DEF_LIST_TAG, new PutAttributeRule());
    // list elements rules
    // We use Attribute class to avoid rewriting a new class.
    // Name part can't be used in listElement attribute.
    digester.addObjectCreate(ADD_LIST_ELE_TAG, PUT_ATTRIBUTE_HANDLER_CLASS);
    digester.addRule(ADD_LIST_ELE_TAG, new FillAttributeRule());
    digester.addSetNext(ADD_LIST_ELE_TAG, "add", PUT_ATTRIBUTE_HANDLER_CLASS);
    digester.addCallMethod(ADD_LIST_ELE_TAG, "setBody", 0);

    // nested list elements rules
    // Create a list handler, and add it to parent list
    digester.addObjectCreate(NESTED_LIST, LIST_HANDLER_CLASS);
    digester.addSetProperties(NESTED_LIST);
    digester.addSetNext(NESTED_LIST, "add", PUT_ATTRIBUTE_HANDLER_CLASS);

    // item elements rules
    // We use Attribute class to avoid rewriting a new class.
    // Name part can't be used in listElement attribute.
    //String ADD_WILDCARD = LIST_TAG + "/addItem";
    // non String ADD_WILDCARD = LIST_TAG + "/addx*";
    String menuItemDefaultClass = "org.apache.tiles.beans.SimpleMenuItem";
    digester.addObjectCreate(ADD_WILDCARD, menuItemDefaultClass, "classtype");
    digester.addSetNext(ADD_WILDCARD, "add", "java.lang.Object");
    digester.addSetProperties(ADD_WILDCARD);

    // bean elements rules
    String beanDefaultClass = "org.apache.tiles.beans.SimpleMenuItem";
    digester.addObjectCreate(BEAN_TAG, beanDefaultClass, "classtype");
    digester.addSetProperties(BEAN_TAG);
    digester.addSetNext(BEAN_TAG, "add", "java.lang.Object");

    // Set properties to surrounding element
    digester.addSetProperty(BEAN_TAG + "/set-property", "property", "value");
}

From source file:org.apache.tiles.xmlDefinition.XmlParser.java

/**
 * Init digester for Tiles syntax.//from   w ww.j  a va 2 s.co  m
 * Same as components, but with first element = tiles-definitions
 * @param digester Digester instance to use.
 */
private void initDigesterForTilesDefinitionsSyntax(Digester digester) {
    // Common constants
    String PACKAGE_NAME = "org.apache.tiles.xmlDefinition";
    String DEFINITION_TAG = "tiles-definitions/definition";
    String definitionHandlerClass = PACKAGE_NAME + ".XmlDefinition";

    String PUT_TAG = DEFINITION_TAG + "/put";
    String putAttributeHandlerClass = PACKAGE_NAME + ".XmlAttribute";

    //String LIST_TAG = DEFINITION_TAG + "/putList";
    // List tag value
    String LIST_TAG = "putList";
    String DEF_LIST_TAG = DEFINITION_TAG + "/" + LIST_TAG;
    String listHandlerClass = PACKAGE_NAME + ".XmlListAttribute";
    // Tag value for adding an element in a list
    String ADD_LIST_ELE_TAG = "*/" + LIST_TAG + "/add";

    // syntax rules
    digester.addObjectCreate(DEFINITION_TAG, definitionHandlerClass);
    digester.addSetProperties(DEFINITION_TAG);
    digester.addSetNext(DEFINITION_TAG, "putDefinition", definitionHandlerClass);
    // put / putAttribute rules
    // Rules for a same pattern are called in order, but rule.end() are called
    // in reverse order.
    // SetNext and CallMethod use rule.end() method. So, placing SetNext in
    // first position ensure it will be called last (sic).
    digester.addObjectCreate(PUT_TAG, putAttributeHandlerClass);
    digester.addSetNext(PUT_TAG, "addAttribute", putAttributeHandlerClass);
    digester.addSetProperties(PUT_TAG);
    digester.addCallMethod(PUT_TAG, "setBody", 0);
    // Definition level list rules
    // This is rules for lists nested in a definition
    digester.addObjectCreate(DEF_LIST_TAG, listHandlerClass);
    digester.addSetProperties(DEF_LIST_TAG);
    digester.addSetNext(DEF_LIST_TAG, "addAttribute", putAttributeHandlerClass);
    // list elements rules
    // We use Attribute class to avoid rewriting a new class.
    // Name part can't be used in listElement attribute.
    digester.addObjectCreate(ADD_LIST_ELE_TAG, putAttributeHandlerClass);
    digester.addSetNext(ADD_LIST_ELE_TAG, "add", putAttributeHandlerClass);
    digester.addSetProperties(ADD_LIST_ELE_TAG);
    digester.addCallMethod(ADD_LIST_ELE_TAG, "setBody", 0);

    // nested list elements rules
    // Create a list handler, and add it to parent list
    String NESTED_LIST = "*/" + LIST_TAG + "/" + LIST_TAG;
    digester.addObjectCreate(NESTED_LIST, listHandlerClass);
    digester.addSetProperties(NESTED_LIST);
    digester.addSetNext(NESTED_LIST, "add", putAttributeHandlerClass);

    // item elements rules
    // We use Attribute class to avoid rewriting a new class.
    // Name part can't be used in listElement attribute.
    //String ADD_WILDCARD = LIST_TAG + "/addItem";
    // non String ADD_WILDCARD = LIST_TAG + "/addx*";
    String ADD_WILDCARD = "*/item";
    String menuItemDefaultClass = "org.apache.tiles.beans.SimpleMenuItem";
    digester.addObjectCreate(ADD_WILDCARD, menuItemDefaultClass, "classtype");
    digester.addSetNext(ADD_WILDCARD, "add", "java.lang.Object");
    digester.addSetProperties(ADD_WILDCARD);

    // bean elements rules
    String BEAN_TAG = "*/bean";
    String beanDefaultClass = "org.apache.tiles.beans.SimpleMenuItem";
    digester.addObjectCreate(BEAN_TAG, beanDefaultClass, "classtype");
    digester.addSetNext(BEAN_TAG, "add", "java.lang.Object");
    digester.addSetProperties(BEAN_TAG);

    // Set properties to surrounding element
    digester.addSetProperty(BEAN_TAG + "/set-property", "property", "value");
}

From source file:org.junitext.runners.parameters.factory.DigesterParameterFactory.java

private void registerBaseRules(Digester digester) {
    // Add a list for the top level <tests> element
    digester.addObjectCreate("tests", ArrayList.class);

    // Add a list for each <test> element
    digester.addObjectCreate("tests/test", ParameterList.class);

    // Sets the name of the ParameterList based on the id attribute
    digester.addSetProperties("tests/test", "id", "name");

    // Add the <test> list to the top level <tests> list
    digester.addSetNext("tests/test", "add");

    // -- Basic Bean Rules

    // Create an object for any "beans" that are encountered
    // We use the wildcard so that any bean tag at any nesting level is
    // handled// www .ja  va2s.c  o m
    digester.addObjectCreate("*/bean", "java.lang.Object", "class");

    // Set the properties on the beans based on the
    // <property name="" value="" > tag
    digester.addSetProperty("*/bean/property", "name", "value");

    // Add an object set previously with the CallParamRule to the bean
    // property. This rule is used by the collections as well as properties
    // that expect beans
    Rule setPropertyWithObject = new SetPropertyWithParameterRule("name");
    digester.addRule("*/bean/property", setPropertyWithObject);

    // Add the bean to the parameter set (or to a <list>)
    digester.addSetNext("*/bean", "add");

    // --Rules for bean-based properties

    // Create beans that are associated with properties
    // We have to do this becuase the more-specific pattern overrides
    // the less specific "*/bean" pattern.
    digester.addObjectCreate("*/bean/property/bean", "java.lang.Object", "class");

    // Add nested beans as a parameter so that they can be
    // added to the properties of a parent bean
    digester.addCallParam("*/bean/property/bean", 0, true);
}

From source file:org.securityfilter.config.SecurityConfig.java

/**
 * Loads configuration from the specifued configURL.
 *
 * @param configURL The url to load./*from   ww w. ja  va2 s  .co m*/
 *
 * @exception IOException if an input/output error occurs
 * @exception SAXException if the file has invalid xml syntax
 */
public void loadConfig(InputSource input) throws IOException, SAXException {
    securityConstraints = new ArrayList();

    Digester digester = new Digester();
    digester.setValidating(false);

    // only register the DTDs if we will be validating
    registerLocalDTDs(digester);

    digester.push(this);
    digester.setUseContextClassLoader(true);
    digester.setValidating(validating);

    // realms
    digester.addObjectCreate("securityfilter-config/realm", null, "className");
    digester.addSetProperty("securityfilter-config/realm/realm-param", "name", "value");
    digester.addSetNext("securityfilter-config/realm", "addRealm", "java.lang.Object");

    // auth method, realm name
    digester.addCallMethod("securityfilter-config/login-config/auth-method", "setAuthMethod", 0);
    digester.addCallMethod("securityfilter-config/login-config/realm-name", "setRealmName", 0);

    // login, error, logout, and default pages
    digester.addCallMethod("securityfilter-config/login-config/form-login-config/form-login-page",
            "setLoginPage", 0);
    digester.addCallMethod("securityfilter-config/login-config/form-login-config/form-error-page",
            "setErrorPage", 0);
    digester.addCallMethod("securityfilter-config/login-config/form-login-config/form-logout-page",
            "setLogoutPage", 0);
    digester.addCallMethod("securityfilter-config/login-config/form-login-config/form-default-page",
            "setDefaultPage", 0);

    // persistent login manager
    digester.addObjectCreate("securityfilter-config/login-config/form-login-config/remember-me", null,
            "className");
    digester.addSetProperty(
            "securityfilter-config/login-config/form-login-config/remember-me/remember-me-param", "name",
            "value");
    digester.addSetNext("securityfilter-config/login-config/form-login-config/remember-me",
            "setPersistentLoginManager",
            "org.securityfilter.authenticator.persistent.PersistentLoginManagerInterface");

    // security-constraint
    digester.addObjectCreate("securityfilter-config/security-constraint",
            "org.securityfilter.config.SecurityConstraint");
    digester.addSetNext("securityfilter-config/security-constraint", "addSecurityConstraint",
            "org.securityfilter.config.SecurityConstraint");

    // auth-constraint
    digester.addObjectCreate("securityfilter-config/security-constraint/auth-constraint",
            "org.securityfilter.config.AuthConstraint");
    digester.addSetNext("securityfilter-config/security-constraint/auth-constraint", "setAuthConstraint",
            "org.securityfilter.config.AuthConstraint");
    digester.addCallMethod("securityfilter-config/security-constraint/auth-constraint/role-name", "addRole", 0);

    // user-data-constraint
    digester.addObjectCreate("securityfilter-config/security-constraint/user-data-constraint",
            "org.securityfilter.config.UserDataConstraint");
    digester.addSetNext("securityfilter-config/security-constraint/user-data-constraint",
            "setUserDataConstraint", "org.securityfilter.config.UserDataConstraint");
    digester.addCallMethod("securityfilter-config/security-constraint/user-data-constraint/transport-guarantee",
            "setTransportGuarantee", 0);

    // web-resource-collection
    digester.addObjectCreate("securityfilter-config/security-constraint/web-resource-collection",
            "org.securityfilter.config.WebResourceCollection");
    digester.addSetNext("securityfilter-config/security-constraint/web-resource-collection",
            "addWebResourceCollection", "org.securityfilter.config.WebResourceCollection");
    digester.addCallMethod("securityfilter-config/security-constraint/web-resource-collection/url-pattern",
            "addURLPattern", 0);
    digester.addCallMethod("securityfilter-config/security-constraint/web-resource-collection/http-method",
            "addHttpMethod", 0);

    digester.parse(input);
}