Class CmsSetNextRule
CmsObject
and as a further argument the top stack instance.
If no subsequent CallParamRule are matched for CmsObject
which is the case in the OpenCms usage the first argument CmsObject
will be null at method invocation time.
This is an alternative for
if a parent to child-property configuration has been done but the setter for that
property requires additional arguments that are only available at real runtime
of the application.SetNextRule
The top stack element (child) that has to be set is matched against the constructor
given : It is used as argument on the position
where the Class[]Class[] has an instance of the same type as it's own Class.
- Since:
- 6.0.0
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected StringThe body text collected from this element.protected StringThe method name to call on the parent object.protected intThe number of parameters to collect fromMethodParamrules.protected Class<?>[]The parameter types of the parameters to be collected.protected booleanShouldMethodUtils.invokeExactMethodbe used for reflection. -
Constructor Summary
ConstructorsConstructorDescriptionCmsSetNextRule(String methodName, Class<?> clazz) Construct a "call method" rule with the specified method name.CmsSetNextRule(String methodName, Class<?>[] clazzes) Construct a "call method" rule with the specified method name and additional parameters. -
Method Summary
Modifier and TypeMethodDescriptionvoidbegin(String namespace, String name, Attributes attributes) Process the start of this element.voidProcess the body text of this element.voidProcess the end of this element.voidClean up after parsing is complete.booleanReturns true ifMethodUtils.invokeExactMethodshall be used for the reflection.protected voidprocessMethodCallResult(Object result) Subclasses may override this method to perform additional processing of the invoked method's result.voidsetDigester(org.apache.commons.digester3.Digester aDigester) Set the associated digester.voidsetUseExactMatch(boolean useExactMatch) Set the value to use forMethodUtils.invokeExactMethodto use.toString()Returns a printable version of this Rule.Methods inherited from class org.apache.commons.digester3.Rule
finish, getDigester, getNamespaceURI, setNamespaceURI
-
Field Details
-
m_bodyText
The body text collected from this element. -
m_methodName
The method name to call on the parent object. -
m_paramCount
The number of parameters to collect fromMethodParamrules. If this value is zero, a single parameter will be collected from the body of this element. -
m_paramTypes
The parameter types of the parameters to be collected. -
m_useExactMatch
ShouldMethodUtils.invokeExactMethodbe used for reflection.
-
-
Constructor Details
-
CmsSetNextRule
Construct a "call method" rule with the specified method name.The 1st argument of the method will be of type
. It's value will remain null (except subsequentCmsObjectwould put a value which currently is impossible at initialization time within OpenCms).CallParamRuleThe 2nd argument will be the top-stack element at digestion time. That instance has to be of the same type as the
clazzargument to succeed.- Parameters:
methodName- Method name of the parent method to callclazz- The class of the top-stack element (child) that will be present at digestion-time
-
CmsSetNextRule
Construct a "call method" rule with the specified method name and additional parameters.The 1st argument of the method will be of type
. It's value will remain null (except subsequentCmsObjectwould put a value which currently is impossible at initialization time within OpenCms).CallParamRuleThe further arguments will be filled by the subsequent
matches. If the firstCallParamRuleClassin the given array matches the top stack element (child) that value will be used. If at digestion time no parameters are found for the given types their values for invocation of the method remain null.- Parameters:
methodName- Method name of the parent method to callclazzes- an array with all parameter types for the method to invoke at digestion time
-
-
Method Details
-
begin
Process the start of this element.- Overrides:
beginin classorg.apache.commons.digester3.Rule- 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 for this element- Throws:
Exception- if something goes wrong
-
body
Process the body text of this element.- Overrides:
bodyin classorg.apache.commons.digester3.Rule- 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 otherwisebodyText- The body text of this element- Throws:
Exception- if something goes wrong
-
end
Process the end of this element.- Overrides:
endin classorg.apache.commons.digester3.Rule- 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:
Exception- if something goes wrong
-
finish
Clean up after parsing is complete.- 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:
Exception- if something goes wrong
-
getUseExactMatch
Returns true ifMethodUtils.invokeExactMethodshall be used for the reflection.- Returns:
- true if
MethodUtils.invokeExactMethodshall be used for the reflection.
-
setDigester
Set the associated digester.The digester gets assigned to use the OpenCms conform logging If needed, this class loads the parameter classes from their names.
- Overrides:
setDigesterin classorg.apache.commons.digester3.Rule- Parameters:
aDigester- the associated digester to set
-
setUseExactMatch
Set the value to use forMethodUtils.invokeExactMethodto use.- Parameters:
useExactMatch- the value to use forMethodUtils.invokeExactMethodto use
-
toString
Returns a printable version of this Rule. -
processMethodCallResult
Subclasses may override this method to perform additional processing of the invoked method's result.- Parameters:
result- the Object returned by the method invoked, possibly null
-