org.apache.commons.digester.xmlrules

Class DigesterRuleParser

Implemented Interfaces:
RuleSet

public class DigesterRuleParser
extends RuleSetBase

This is a RuleSet that parses XML into Digester rules, and then adds those rules to a 'target' Digester.
Since:
1.2

Nested Class Summary

private class
DigesterRuleParser.BeanPropertySetterRuleFactory
Factory for creating a BeanPropertySetterRule.
protected class
DigesterRuleParser.CallMethodRuleFactory
Factory for creating a CallMethodRule.
protected class
DigesterRuleParser.CallParamRuleFactory
Factory for creating a CallParamRule.
protected class
DigesterRuleParser.FactoryCreateRuleFactory
Factory for creating a FactoryCreateRule
private class
DigesterRuleParser.IncludeRule
A rule for including one rules XML file within another.
protected class
DigesterRuleParser.ObjectCreateRuleFactory
Factory for creating a ObjectCreateRule
protected class
DigesterRuleParser.ObjectParamRuleFactory
Factory for creating a ObjectParamRule
private class
DigesterRuleParser.PatternRule
A rule for extracting the pattern matching strings from the rules XML.
protected class
DigesterRuleParser.PatternStack
A stack whose toString method returns a '/'-separated concatenation of all the elements in the stack.
private class
DigesterRuleParser.RulesPrefixAdapter
Wraps a Rules object.
protected class
DigesterRuleParser.SetNestedPropertiesAliasRule
A rule for adding a attribute-property alias to the custom alias mappings of the containing SetNestedPropertiesRule rule.
protected class
DigesterRuleParser.SetNestedPropertiesRuleFactory
Factory for creating a SetNestedPropertiesRule
protected class
DigesterRuleParser.SetNextRuleFactory
Factory for creating a SetNextRuleFactory
protected class
DigesterRuleParser.SetPropertiesAliasRule
A rule for adding a attribute-property alias to the custom alias mappings of the containing SetPropertiesRule rule.
protected class
DigesterRuleParser.SetPropertiesRuleFactory
Factory for creating a SetPropertiesRule
protected class
DigesterRuleParser.SetPropertyRuleFactory
Factory for creating a SetPropertyRule
protected class
DigesterRuleParser.SetRootRuleFactory
Factory for creating a SetRootRuleFactory
protected class
DigesterRuleParser.SetTopRuleFactory
Factory for creating a SetTopRuleFactory

Field Summary

static String
DIGESTER_PUBLIC_ID
protected String
basePath
See setBasePath(String).
private String
digesterDtdUrl
path to the DTD
private Set
includedFiles
Used to detect circular includes
protected DigesterRuleParser.PatternStack
patternStack
A stack used to maintain the current pattern.
protected Digester
targetDigester
This is the digester to which we are adding the rules that we parse from the Rules XML document.

Fields inherited from class org.apache.commons.digester.RuleSetBase

namespaceURI

Constructor Summary

DigesterRuleParser()
Constructs a DigesterRuleParser.
DigesterRuleParser(Digester targetDigester)
Constructs a rule set for converting XML digester rule descriptions into Rule objects, and adding them to the given Digester
DigesterRuleParser(Digester targetDigester, DigesterRuleParser.PatternStack stack, Set includedFiles)
Constructs a rule set for parsing an XML digester rule file that has been included within an outer XML digester rule file.

Method Summary

void
add(Rule rule)
Adds a rule the the target digester.
void
addRuleInstances(Digester digester)
Add to the given digester the set of Rule instances used to parse an XML document defining Digester rules.
protected String
getDigesterRulesDTD()
Returns the location of the DTD used to validate the digester rules XML document.
void
setBasePath(String path)
Set a base pattern beneath which all the rules loaded by this object will be registered.
void
setDigesterRulesDTD(String dtdURL)
Sets the location of the digester rules DTD.
void
setTarget(Digester d)
Sets the digester into which to add the parsed rules

Methods inherited from class org.apache.commons.digester.RuleSetBase

addRuleInstances, getNamespaceURI

Field Details

DIGESTER_PUBLIC_ID

public static final String DIGESTER_PUBLIC_ID

basePath

protected String basePath

digesterDtdUrl

private String digesterDtdUrl
path to the DTD

includedFiles

private Set includedFiles
Used to detect circular includes

patternStack

protected DigesterRuleParser.PatternStack patternStack
A stack used to maintain the current pattern. The Rules XML document type allows nesting of patterns. If an element defines a matching pattern, the resulting pattern is a concatenation of that pattern with all the ancestor elements' patterns. Hence the need for a stack.

targetDigester

protected Digester targetDigester
This is the digester to which we are adding the rules that we parse from the Rules XML document.

Constructor Details

DigesterRuleParser

public DigesterRuleParser()
Constructs a DigesterRuleParser. This object will be inoperable until the target digester is set, via setTarget(Digester)

DigesterRuleParser

public DigesterRuleParser(Digester targetDigester)
Constructs a rule set for converting XML digester rule descriptions into Rule objects, and adding them to the given Digester
Parameters:
targetDigester - the Digester to add the rules to

DigesterRuleParser

private DigesterRuleParser(Digester targetDigester,
                           DigesterRuleParser.PatternStack stack,
                           Set includedFiles)
Constructs a rule set for parsing an XML digester rule file that has been included within an outer XML digester rule file. In this case, we must pass the pattern stack and the target digester to the rule set, as well as the list of files that have already been included, for cycle detection.
Parameters:
targetDigester - the Digester to add the rules to
stack - Stack containing the prefix pattern string to be prepended to any pattern parsed by this rule set.

Method Details

add

public void add(Rule rule)
Adds a rule the the target digester. After a rule has been created by parsing the XML, it is added to the digester by calling this method. Typically, this method is called via reflection, when executing a SetNextRule, from the Digester that is parsing the rules XML.
Parameters:
rule - a Rule to add to the target digester.

addRuleInstances

public void addRuleInstances(Digester digester)
Add to the given digester the set of Rule instances used to parse an XML document defining Digester rules. When the digester parses an XML file, it will add the resulting rules & patterns to the 'target digester' that was passed in this RuleSet's constructor.

If you extend this class to support additional rules, your implementation should of this method should call this implementation first: i.e. super.addRuleInstances(digester);

Specified by:
addRuleInstances in interface RuleSet
Overrides:
addRuleInstances in interface RuleSetBase

getDigesterRulesDTD

protected String getDigesterRulesDTD()
Returns the location of the DTD used to validate the digester rules XML document.

setBasePath

public void setBasePath(String path)
Set a base pattern beneath which all the rules loaded by this object will be registered. If this string is not empty, and does not end in a "/", then one will be added.
Since:
1.6

setDigesterRulesDTD

public void setDigesterRulesDTD(String dtdURL)
Sets the location of the digester rules DTD. This is the DTD used to validate the rules XML file.

setTarget

public void setTarget(Digester d)
Sets the digester into which to add the parsed rules
Parameters:
d - the Digester to add the rules to

Copyright 2001-2005 The Apache Software Foundation.