Java源码示例:org.apache.tomcat.util.digester.Rule

示例1
@Override
public void addRuleInstances(Digester digester) {

    digester.addCallMethod(PREFIX + "/tlibversion", "setTlibVersion", 0);
    digester.addCallMethod(PREFIX + "/tlib-version", "setTlibVersion", 0);
    digester.addCallMethod(PREFIX + "/jspversion", "setJspVersion", 0);
    digester.addCallMethod(PREFIX + "/jsp-version", "setJspVersion", 0);
    digester.addRule(PREFIX, new Rule() {
        // for TLD 2.0 and later, jsp-version is set by version attribute
        @Override
        public void begin(String namespace, String name, Attributes attributes) {
            TaglibXml taglibXml = (TaglibXml) digester.peek();
            taglibXml.setJspVersion(attributes.getValue("version"));
        }
    });
    digester.addCallMethod(PREFIX + "/shortname", "setShortName", 0);
    digester.addCallMethod(PREFIX + "/short-name", "setShortName", 0);

    // Elements not permitted
    digester.addRule(PREFIX + "/uri", new ElementNotAllowedRule());
    digester.addRule(PREFIX + "/info", new ElementNotAllowedRule());
    digester.addRule(PREFIX + "/description", new ElementNotAllowedRule());
    digester.addRule(PREFIX + "/listener/listener-class", new ElementNotAllowedRule());

    digester.addRule(VALIDATOR_PREFIX, new ElementNotAllowedRule());
    digester.addRule(TAG_PREFIX, new ElementNotAllowedRule());
    digester.addRule(TAGFILE_PREFIX, new ElementNotAllowedRule());
    digester.addRule(FUNCTION_PREFIX, new ElementNotAllowedRule());
}
 
示例2
@Override
public void addRuleInstances(Digester digester) {

    digester.addCallMethod(PREFIX + "/tlibversion", "setTlibVersion", 0);
    digester.addCallMethod(PREFIX + "/tlib-version", "setTlibVersion", 0);
    digester.addCallMethod(PREFIX + "/jspversion", "setJspVersion", 0);
    digester.addCallMethod(PREFIX + "/jsp-version", "setJspVersion", 0);
    digester.addRule(PREFIX, new Rule() {
        // for TLD 2.0 and later, jsp-version is set by version attribute
        @Override
        public void begin(String namespace, String name, Attributes attributes) {
            TaglibXml taglibXml = (TaglibXml) digester.peek();
            taglibXml.setJspVersion(attributes.getValue("version"));
        }
    });
    digester.addCallMethod(PREFIX + "/shortname", "setShortName", 0);
    digester.addCallMethod(PREFIX + "/short-name", "setShortName", 0);

    // common rules
    digester.addCallMethod(PREFIX + "/uri", "setUri", 0);
    digester.addCallMethod(PREFIX + "/info", "setInfo", 0);
    digester.addCallMethod(PREFIX + "/description", "setInfo", 0);
    digester.addCallMethod(PREFIX + "/listener/listener-class", "addListener", 0);

    // validator
    digester.addObjectCreate(VALIDATOR_PREFIX, ValidatorXml.class.getName());
    digester.addCallMethod(VALIDATOR_PREFIX + "/validator-class", "setValidatorClass", 0);
    digester.addCallMethod(VALIDATOR_PREFIX + "/init-param", "addInitParam", 2);
    digester.addCallParam(VALIDATOR_PREFIX + "/init-param/param-name", 0);
    digester.addCallParam(VALIDATOR_PREFIX + "/init-param/param-value", 1);
    digester.addSetNext(VALIDATOR_PREFIX, "setValidator", ValidatorXml.class.getName());


    // tag
    digester.addObjectCreate(TAG_PREFIX, TagXml.class.getName());
    addDescriptionGroup(digester, TAG_PREFIX);
    digester.addCallMethod(TAG_PREFIX + "/name", "setName", 0);
    digester.addCallMethod(TAG_PREFIX + "/tagclass", "setTagClass", 0);
    digester.addCallMethod(TAG_PREFIX + "/tag-class", "setTagClass", 0);
    digester.addCallMethod(TAG_PREFIX + "/teiclass", "setTeiClass", 0);
    digester.addCallMethod(TAG_PREFIX + "/tei-class", "setTeiClass", 0);
    digester.addCallMethod(TAG_PREFIX + "/bodycontent", "setBodyContent", 0);
    digester.addCallMethod(TAG_PREFIX + "/body-content", "setBodyContent", 0);

    digester.addRule(TAG_PREFIX + "/variable", new ScriptVariableRule());
    digester.addCallMethod(TAG_PREFIX + "/variable/name-given", "setNameGiven", 0);
    digester.addCallMethod(TAG_PREFIX + "/variable/name-from-attribute",
            "setNameFromAttribute", 0);
    digester.addCallMethod(TAG_PREFIX + "/variable/variable-class", "setClassName", 0);
    digester.addRule(TAG_PREFIX + "/variable/declare",
            new GenericBooleanRule(Variable.class, "setDeclare"));
    digester.addCallMethod(TAG_PREFIX + "/variable/scope", "setScope", 0);

    digester.addRule(TAG_PREFIX + "/attribute", new TagAttributeRule());
    digester.addCallMethod(TAG_PREFIX + "/attribute/description", "setDescription", 0);
    digester.addCallMethod(TAG_PREFIX + "/attribute/name", "setName", 0);
    digester.addRule(TAG_PREFIX + "/attribute/required",
            new GenericBooleanRule(Attribute.class, "setRequired"));
    digester.addRule(TAG_PREFIX + "/attribute/rtexprvalue",
            new GenericBooleanRule(Attribute.class, "setRequestTime"));
    digester.addCallMethod(TAG_PREFIX + "/attribute/type", "setType", 0);
    digester.addCallMethod(TAG_PREFIX + "/attribute/deferred-value", "setDeferredValue");
    digester.addCallMethod(TAG_PREFIX + "/attribute/deferred-value/type",
            "setExpectedTypeName", 0);
    digester.addCallMethod(TAG_PREFIX + "/attribute/deferred-method", "setDeferredMethod");
    digester.addCallMethod(TAG_PREFIX + "/attribute/deferred-method/method-signature",
            "setMethodSignature", 0);
    digester.addRule(TAG_PREFIX + "/attribute/fragment",
            new GenericBooleanRule(Attribute.class, "setFragment"));

    digester.addRule(TAG_PREFIX + "/dynamic-attributes",
            new GenericBooleanRule(TagXml.class, "setDynamicAttributes"));
    digester.addSetNext(TAG_PREFIX, "addTag", TagXml.class.getName());

    // tag-file
    digester.addObjectCreate(TAGFILE_PREFIX, TagFileXml.class.getName());
    addDescriptionGroup(digester, TAGFILE_PREFIX);
    digester.addCallMethod(TAGFILE_PREFIX + "/name", "setName", 0);
    digester.addCallMethod(TAGFILE_PREFIX + "/path", "setPath", 0);
    digester.addSetNext(TAGFILE_PREFIX, "addTagFile", TagFileXml.class.getName());

    // function
    digester.addCallMethod(FUNCTION_PREFIX, "addFunction", 3);
    digester.addCallParam(FUNCTION_PREFIX + "/name", 0);
    digester.addCallParam(FUNCTION_PREFIX + "/function-class", 1);
    digester.addCallParam(FUNCTION_PREFIX + "/function-signature", 2);
}