Class AbstractMethodRule
- java.lang.Object
-
- org.apache.commons.digester3.Rule
-
- org.apache.commons.digester3.AbstractMethodRule
-
- Direct Known Subclasses:
SetNextRule
,SetRootRule
,SetTopRule
public abstract class AbstractMethodRule extends Rule
- Since:
- 3.0
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean
fireOnBegin
Should this rule be invoked whenbegin(String, String, Attributes)
(true) orend(String, String)
(false) methods are invoked, false by default.protected java.lang.String
methodName
The method name to call on the parent object.protected java.lang.Class<?>
paramType
The Java class name of the parameter type expected by the method.protected java.lang.String
paramTypeName
The Java class name of the parameter type expected by the method.protected boolean
useExactMatch
Should we use exact matching.
-
Constructor Summary
Constructors Constructor Description AbstractMethodRule(java.lang.String methodName)
Construct a "set next" rule with the specified method name.AbstractMethodRule(java.lang.String methodName, java.lang.Class<?> paramType)
Construct a "set next" rule with the specified method name.AbstractMethodRule(java.lang.String methodName, java.lang.String paramTypeName)
Construct a "set next" rule with the specified method name.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
begin(java.lang.String namespace, java.lang.String name, org.xml.sax.Attributes attributes)
This method is called when the beginning of a matching XML element is encountered.void
end(java.lang.String namespace, java.lang.String name)
This method is called when the end of a matching XML element is encountered.protected abstract java.lang.Object
getChild()
Returns the argument object of method has to be invoked.protected abstract java.lang.Object
getParent()
Returns the target object of method has to be invoked.private void
invoke()
Just performs the method execution.boolean
isExactMatch()
Is exact matching being used.boolean
isFireOnBegin()
Returns the flag this rule be invoked whenbegin(String, String, Attributes)
(true) orend(String, String)
(false) methods are invoked, false by default.void
setExactMatch(boolean useExactMatch)
Set whether exact matching is enabled.void
setFireOnBegin(boolean fireOnBegin)
Sets this rule be invoked whenbegin(String, String, Attributes)
(true) orend(String, String)
(false) methods are invoked, false by default.java.lang.String
toString()
-
Methods inherited from class org.apache.commons.digester3.Rule
body, finish, getDigester, getNamespaceURI, setDigester, setNamespaceURI
-
-
-
-
Field Detail
-
methodName
protected java.lang.String methodName
The method name to call on the parent object.
-
paramTypeName
protected java.lang.String paramTypeName
The Java class name of the parameter type expected by the method.
-
paramType
protected java.lang.Class<?> paramType
The Java class name of the parameter type expected by the method.
-
useExactMatch
protected boolean useExactMatch
Should we use exact matching. Default is no.
-
fireOnBegin
protected boolean fireOnBegin
Should this rule be invoked whenbegin(String, String, Attributes)
(true) orend(String, String)
(false) methods are invoked, false by default.
-
-
Constructor Detail
-
AbstractMethodRule
public AbstractMethodRule(java.lang.String methodName)
Construct a "set next" rule with the specified method name. The method's argument type is assumed to be the class of the child object.- Parameters:
methodName
- Method name of the parent method to call
-
AbstractMethodRule
public AbstractMethodRule(java.lang.String methodName, java.lang.Class<?> paramType)
Construct a "set next" rule with the specified method name.- Parameters:
methodName
- Method name of the parent method to callparamType
- Java class of the parent method's argument (if you wish to use a primitive type, specify the corresonding Java wrapper class instead, such asjava.lang.Boolean
for aboolean
parameter)
-
AbstractMethodRule
public AbstractMethodRule(java.lang.String methodName, java.lang.String paramTypeName)
Construct a "set next" rule with the specified method name.- Parameters:
methodName
- Method name of the parent method to callparamTypeName
- Java class of the parent method's argument (if you wish to use a primitive type, specify the corresonding Java wrapper class instead, such asjava.lang.Boolean
for aboolean
parameter)
-
-
Method Detail
-
isExactMatch
public boolean isExactMatch()
Is exact matching being used.
This rule uses
org.apache.commons.beanutils.MethodUtils
to introspect the relevent objects so that the right method can be called. Originally,MethodUtils.invokeExactMethod
was used. This matches methods very strictly and so may not find a matching method when one exists. This is still the behaviour when exact matching is enabled.When exact matching is disabled,
MethodUtils.invokeMethod
is used. This method finds more methods but is less precise when there are several methods with correct signatures. So, if you want to choose an exact signature you might need to enable this property.The default setting is to disable exact matches.
- Returns:
- true if exact matching is enabled
- Since:
- Digester Release 1.1.1
-
setFireOnBegin
public void setFireOnBegin(boolean fireOnBegin)
Sets this rule be invoked whenbegin(String, String, Attributes)
(true) orend(String, String)
(false) methods are invoked, false by default.- Parameters:
fireOnBegin
- flag to mark this rule be invoked whenbegin(String, String, Attributes)
(true) orend(String, String)
(false) methods are invoked, false by default.
-
isFireOnBegin
public boolean isFireOnBegin()
Returns the flag this rule be invoked whenbegin(String, String, Attributes)
(true) orend(String, String)
(false) methods are invoked, false by default.- Returns:
- the flag this rule be invoked when
begin(String, String, Attributes)
(true) orend(String, String)
(false) methods are invoked, false by default.
-
setExactMatch
public void setExactMatch(boolean useExactMatch)
Set whether exact matching is enabled.
See
isExactMatch()
.- Parameters:
useExactMatch
- should this rule use exact method matching- Since:
- Digester Release 1.1.1
-
begin
public void begin(java.lang.String namespace, java.lang.String name, org.xml.sax.Attributes attributes) throws java.lang.Exception
This method is called when the beginning of a matching XML element is encountered.- Overrides:
begin
in classRule
- Parameters:
namespace
- the namespace URI of the matching element, or an empty string if the parser is not namespace aware or the element has no namespacename
- the local name if the parser is namespace aware, or just the element name otherwiseattributes
- The attribute list of this element- Throws:
java.lang.Exception
- if any error occurs
-
end
public void end(java.lang.String namespace, java.lang.String name) throws java.lang.Exception
This method is called when the end of a matching XML element is encountered.- Overrides:
end
in classRule
- Parameters:
namespace
- the namespace URI of the matching element, or an empty string if the parser is not namespace aware or the element has no namespacename
- the local name if the parser is namespace aware, or just the element name otherwise- Throws:
java.lang.Exception
- if any error occurs
-
invoke
private void invoke() throws java.lang.Exception
Just performs the method execution.- Throws:
java.lang.Exception
- if any error occurs.
-
getChild
protected abstract java.lang.Object getChild()
Returns the argument object of method has to be invoked.- Returns:
- the argument object of method has to be invoked.
-
getParent
protected abstract java.lang.Object getParent()
Returns the target object of method has to be invoked.- Returns:
- the target object of method has to be invoked.
-
toString
public final java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-