Example usage for org.apache.commons.digester.plugins PluginCreateRule PluginCreateRule

List of usage examples for org.apache.commons.digester.plugins PluginCreateRule PluginCreateRule

Introduction

In this page you can find the example usage for org.apache.commons.digester.plugins PluginCreateRule PluginCreateRule.

Prototype

public PluginCreateRule(Class<?> baseClass) 

Source Link

Document

Create a plugin rule where the user must specify a plugin-class or plugin-id.

Usage

From source file:com.alibaba.antx.config.descriptor.ConfigDescriptorLoader.java

/** ?descriptordigester */
protected Digester getDigester() {
    Digester digester = loadValidatorPlugins();

    // config/*  www . j  av a 2 s.co  m*/
    digester.addSetProperties("config");

    // config/group
    digester.addObjectCreate("config/group", ConfigGroup.class);
    digester.addSetProperties("config/group");
    digester.addSetNext("config/group", "addGroup");

    // config/group/property
    digester.addObjectCreate("config/group/property", ConfigProperty.class);
    digester.addSetProperties("config/group/property");
    digester.addCallMethod("config/group/property", "afterPropertiesSet");
    digester.addSetNext("config/group/property", "addProperty");

    // config/group/property/validator
    PluginCreateRule pcr = new PluginCreateRule(ConfigValidator.class);

    pcr.setPluginIdAttribute(null, "name");

    digester.addRule("config/group/property/validator", pcr);
    digester.addSetNext("config/group/property/validator", "addValidator");

    // config/script/generate
    digester.addObjectCreate("config/script/generate", ConfigGenerate.class);
    digester.addSetProperties("config/script/generate");
    digester.addSetNext("config/script/generate", "addGenerate");

    digester.clear();

    return digester;
}