skitching 2004/03/27 22:09:13 Modified: digester/src/java/org/apache/commons/digester/plugins Tag: DIGESTER_PLUGIN_REFACTORING_BRANCH PluginDeclarationRule.java Log: User-provided xml attributes are now simly stored in a Properties object on the Declaration rather than being assigned to explicit properties of a Declaration. This allows an open-ended set of declaration properties for the RuleFinder objects to inspect, and removes hard-wired English language names for these attributes. Revision Changes Path No revision No revision 1.10.2.1 +14 -41 jakarta-commons/digester/src/java/org/apache/commons/digester/plugins/PluginDeclarationRule.java Index: PluginDeclarationRule.java =================================================================== RCS file: /home/cvs/jakarta-commons/digester/src/java/org/apache/commons/digester/plugins/PluginDeclarationRule.java,v retrieving revision 1.10 retrieving revision 1.10.2.1 diff -u -r1.10 -r1.10.2.1 --- PluginDeclarationRule.java 29 Feb 2004 02:22:15 -0000 1.10 +++ PluginDeclarationRule.java 28 Mar 2004 06:09:13 -0000 1.10.2.1 @@ -16,7 +16,7 @@ package org.apache.commons.digester.plugins; -import java.io.File; +import java.util.Properties; import org.apache.commons.digester.Rule; import org.apache.commons.digester.Digester; @@ -69,17 +69,7 @@ String id = attributes.getValue("id"); String pluginClassName = attributes.getValue("class"); - String ruleMethodName = attributes.getValue("method"); - String ruleClassName = attributes.getValue("ruleclass"); - String ruleResource = attributes.getValue("resource"); - String ruleFile = attributes.getValue("file"); - String autoSetPropertiesStr = attributes.getValue("setprops"); - - if (debug) { - log.debug( - "mapping id [" + id + "] -> [" + pluginClassName + "]"); - } - + if (id == null) { throw new PluginInvalidInputException( "mandatory attribute id not present on tag" + @@ -92,38 +82,20 @@ " <" + name + ">"); } - Declaration newDecl = new Declaration(pluginClassName); - newDecl.setId(id); - - if (ruleMethodName != null) { - newDecl.setRuleMethod(ruleMethodName); - } - - if (ruleClassName != null) { - Class ruleClass; - try { - ruleClass = digester.getClassLoader().loadClass(ruleClassName); - } catch(ClassNotFoundException cnfe) { - throw new ClassNotFoundException( - "Rule class [" + ruleClassName + "] not found."); + int nAttrs = attributes.getLength(); + Properties props = new Properties(); + for(int i=0; i<nAttrs; ++i) { + String key = attributes.getLocalName(i); + if ((key == null) || (key.length() == 0)) { + key = attributes.getQName(i); } - newDecl.setRuleClass(ruleClass); + String value = attributes.getValue(i); + props.setProperty(key, value); } - if (ruleResource != null) { - newDecl.setRuleResource(ruleResource); - } - - if (ruleFile != null) { - newDecl.setRuleFile(new File(ruleFile)); - } - - if (autoSetPropertiesStr != null) { - newDecl.setAutoSetProperties( - Boolean.valueOf(autoSetPropertiesStr).booleanValue()); - } - - newDecl.init(digester); + Declaration newDecl = new Declaration(pluginClassName); + newDecl.setId(id); + newDecl.setProperties(props); PluginRules rc = (PluginRules) digester.getRules(); PluginManager pm = rc.getPluginManager(); @@ -155,6 +127,7 @@ " which has already been mapped by some other id."); } + newDecl.init(digester, pm); pm.addDeclaration(newDecl); } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]