| java.lang.Object org.apache.commons.digester.Rule
All known Subclasses: org.apache.commons.digester.BeanPropertySetterRule, org.apache.commons.digester.SetRootRule, org.apache.commons.digester.FactoryCreateRule, org.apache.commons.digester.ObjectCreateRule, org.apache.commons.digester.SetNextRule, org.apache.commons.digester.NodeCreateRule, org.apache.commons.digester.plugins.PluginCreateRule, org.apache.commons.digester.ObjectParamRule, org.apache.commons.digester.plugins.PluginDeclarationRule, org.apache.commons.digester.SetTopRule, org.apache.commons.digester.PathCallParamRule, org.apache.commons.digester.SetPropertyRule, org.apache.commons.digester.CallMethodRule, org.apache.commons.digester.SetNestedPropertiesRule, org.apache.commons.digester.CallParamRule, org.apache.commons.digester.SetPropertiesRule,
Rule | abstract public class Rule (Code) | | Concrete implementations of this class implement actions to be taken when
a corresponding nested pattern of XML elements has been matched.
Writing a custom Rule is considered perfectly normal when using Digester,
and is encouraged whenever the default set of Rule classes don't meet your
requirements; the digester framework can help process xml even when the
built-in rules aren't quite what is needed. Creating a custom Rule is
just as easy as subclassing javax.servlet.http.HttpServlet for webapps,
or javax.swing.Action for GUI applications.
If a rule wishes to manipulate a digester stack (the default object stack,
a named stack, or the parameter stack) then it should only ever push
objects in the rule's begin method and always pop exactly the same
number of objects off the stack during the rule's end method. Of course
peeking at the objects on the stacks can be done from anywhere.
Rule objects should be stateless, ie they should not update any instance
member during the parsing process. A rule instance that changes state
will encounter problems if invoked in a "nested" manner; this can happen
if the same instance is added to digester multiple times or if a
wildcard pattern is used which can match both an element and a child of the
same element. The digester object stack and named stacks should be used to
store any state that a rule requires, making the rule class safe under all
possible uses.
|
Field Summary | |
protected Digester | digester The Digester with which this Rule is associated. | protected String | namespaceURI The namespace URI for which this Rule is relevant, if any. |
Constructor Summary | |
public | Rule(Digester digester) Constructor sets the associated Digester. | public | Rule() Base constructor. |
Method Summary | |
public void | begin(Attributes attributes) This method is called when the beginning of a matching XML element
is encountered. | public void | begin(String namespace, String name, Attributes attributes) This method is called when the beginning of a matching XML element
is encountered. | public void | body(String text) This method is called when the body of a matching XML element
is encountered. | public void | body(String namespace, String name, String text) This method is called when the body of a matching XML element is
encountered. | public void | end() This method is called when the end of a matching XML element
is encountered. | public void | end(String namespace, String name) This method is called when the end of a matching XML element
is encountered. | public void | finish() This method is called after all parsing methods have been
called, to allow Rules to remove temporary data. | public Digester | getDigester() Return the Digester with which this Rule is associated. | public String | getNamespaceURI() Return the namespace URI for which this Rule is relevant, if any. | public void | setDigester(Digester digester) Set the Digester with which this Rule is associated. | public void | setNamespaceURI(String namespaceURI) Set the namespace URI for which this Rule is relevant, if any. |
digester | protected Digester digester(Code) | | The Digester with which this Rule is associated.
|
namespaceURI | protected String namespaceURI(Code) | | The namespace URI for which this Rule is relevant, if any.
|
Rule | public Rule()(Code) | | Base constructor.
Now the digester will be set when the rule is added.
|
begin | public void begin(String namespace, String name, Attributes attributes) throws Exception(Code) | | This method is called when the beginning of a matching XML element
is encountered. The default implementation delegates to the deprecated
method
Rule.begin(Attributes) begin without the
namespace and name parameters, to retain
backwards compatibility.
Parameters: namespace - the namespace URI of the matching element, or an empty string if the parser is not namespace aware or the element hasno namespace Parameters: name - the local name if the parser is namespace aware, or just the element name otherwise Parameters: attributes - The attribute list of this element since: Digester 1.4 |
body | public void body(String text) throws Exception(Code) | | This method is called when the body of a matching XML element
is encountered. If the element has no body, this method is
called with an empty string as the body text.
Parameters: text - The text of the body of this elementRule.body(String,String,String) body |
body | public void body(String namespace, String name, String text) throws Exception(Code) | | This method is called when the body of a matching XML element is
encountered. If the element has no body, this method is
called with an empty string as the body text.
The default implementation delegates to the deprecated method
Rule.body(String) body without the namespace and
name parameters, to retain backwards compatibility.
Parameters: namespace - the namespace URI of the matching element, or an empty string if the parser is not namespace aware or the element hasno namespace Parameters: name - the local name if the parser is namespace aware, or just the element name otherwise Parameters: text - The text of the body of this element since: Digester 1.4 |
end | public void end(String namespace, String name) throws Exception(Code) | | This method is called when the end of a matching XML element
is encountered. The default implementation delegates to the deprecated
method
Rule.end end without the
namespace and name parameters, to retain
backwards compatibility.
Parameters: namespace - the namespace URI of the matching element, or an empty string if the parser is not namespace aware or the element hasno namespace Parameters: name - the local name if the parser is namespace aware, or just the element name otherwise since: Digester 1.4 |
finish | public void finish() throws Exception(Code) | | This method is called after all parsing methods have been
called, to allow Rules to remove temporary data.
|
getDigester | public Digester getDigester()(Code) | | Return the Digester with which this Rule is associated.
|
getNamespaceURI | public String getNamespaceURI()(Code) | | Return the namespace URI for which this Rule is relevant, if any.
|
setDigester | public void setDigester(Digester digester)(Code) | | Set the Digester with which this Rule is associated.
|
setNamespaceURI | public void setNamespaceURI(String namespaceURI)(Code) | | Set the namespace URI for which this Rule is relevant, if any.
Parameters: namespaceURI - Namespace URI for which this Rule is relevant,or null to match independent of namespace. |
|
|