Class FinderFromClass
- java.lang.Object
-
- org.apache.commons.digester.plugins.RuleFinder
-
- org.apache.commons.digester.plugins.strategies.FinderFromClass
-
public class FinderFromClass extends RuleFinder
A rule-finding algorithm which expects the caller to specify a classname and methodname as plugin properties.- Since:
- 1.6
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
DFLT_METHOD_ATTR
static java.lang.String
DFLT_METHOD_NAME
static java.lang.String
DFLT_RULECLASS_ATTR
private java.lang.String
dfltMethodName
private java.lang.String
methodAttr
private java.lang.String
ruleClassAttr
-
Constructor Summary
Constructors Constructor Description FinderFromClass()
FinderFromClass(java.lang.String ruleClassAttr, java.lang.String methodAttr, java.lang.String dfltMethodName)
Create a rule-finder which invokes a user-specified method on a user-specified class whenever dynamic rules for a plugin need to be loaded.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description RuleLoader
findLoader(Digester digester, java.lang.Class pluginClass, java.util.Properties p)
If there exists a property with the name matching constructor param ruleClassAttr, then load the specified class, locate the appropriate rules-adding method on that class, and return an object encapsulating that info.
-
-
-
Field Detail
-
DFLT_RULECLASS_ATTR
public static java.lang.String DFLT_RULECLASS_ATTR
-
DFLT_METHOD_ATTR
public static java.lang.String DFLT_METHOD_ATTR
-
DFLT_METHOD_NAME
public static java.lang.String DFLT_METHOD_NAME
-
ruleClassAttr
private java.lang.String ruleClassAttr
-
methodAttr
private java.lang.String methodAttr
-
dfltMethodName
private java.lang.String dfltMethodName
-
-
Constructor Detail
-
FinderFromClass
public FinderFromClass()
-
FinderFromClass
public FinderFromClass(java.lang.String ruleClassAttr, java.lang.String methodAttr, java.lang.String dfltMethodName)
Create a rule-finder which invokes a user-specified method on a user-specified class whenever dynamic rules for a plugin need to be loaded. See the findRules method for more info.- Parameters:
ruleClassAttr
- must be non-null.methodAttr
- may be null.dfltMethodName
- may be null.
-
-
Method Detail
-
findLoader
public RuleLoader findLoader(Digester digester, java.lang.Class pluginClass, java.util.Properties p) throws PluginException
If there exists a property with the name matching constructor param ruleClassAttr, then load the specified class, locate the appropriate rules-adding method on that class, and return an object encapsulating that info.If there is no matching property provided, then just return null.
The returned object (when non-null) will invoke the target method on the selected class whenever its addRules method is invoked. The target method is expected to have the following prototype:
public static void xxxxx(Digester d, String patternPrefix);
The target method can be specified in several ways. If this object's constructor was passed a non-null methodAttr parameter, and the properties defines a value with that key, then that is taken as the target method name. If there is no matching property, or the constructor was passed null for methodAttr, then the dfltMethodName passed to the constructor is used as the name of the method on the target class. And if that was null, then DFLT_METHOD_NAME will be used.
When the user explicitly declares a plugin in the input xml, the xml attributes on the declaration tag are passed here as properties, so the user can select any class in the classpath (and any method on that class provided it has the correct prototype) as the source of dynamic rules for the plugged-in class.
- Specified by:
findLoader
in classRuleFinder
- Throws:
PluginException
-
-