Author: ozeigermann Date: Sun Feb 13 23:13:25 2005 New Revision: 153727 URL: http://svn.apache.org/viewcvs?view=rev&rev=153727 Log: - Rigid protection of guts by making member variables private and passing umodifiable list back from getMatchingActions. - Added copy contructor to allow copying of member variables from sub classes
Modified: jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/DefaultRuleManager.java Modified: jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/DefaultRuleManager.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/DefaultRuleManager.java?view=diff&r1=153726&r2=153727 ============================================================================== --- jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/DefaultRuleManager.java (original) +++ jakarta/commons/proper/digester/branches/digester2/src/java/org/apache/commons/digester2/DefaultRuleManager.java Sun Feb 13 23:13:25 2005 @@ -19,6 +19,7 @@ package org.apache.commons.digester2; +import java.util.Collections; import java.util.Map; import java.util.HashMap; import java.util.List; @@ -58,37 +59,56 @@ * Map of namespace-prefix to namespace-uri, used only by the * addAction() method. */ - protected HashMap namespaces = new HashMap(); + private HashMap namespaces = new HashMap(); /** * The list of all actions in the cache. This set allows us to * iterate over the set of actions to invoke the startParse/finishParse * methods. */ - protected ArrayList actions = new ArrayList(20); + private ArrayList actions = new ArrayList(20); /** * Map of expanded-pattern -> list-of-actions, so that we can * find the pattern that matches the current xml element, then * return the list of actions. */ - protected MultiHashMap rules = new MultiHashMap(); + private MultiHashMap rules = new MultiHashMap(); + + // --------------------------------------------------------- + // Ctor + // --------------------------------------------------------- + + /** + * Default ctor. + */ + public DefaultRuleManager() { + } + + /** + * Returns a clone of this object. The Action objects currently + * registered are not copied, as Action objects are required to be + * re-entrant and thread-safe. + */ + public DefaultRuleManager(DefaultRuleManager manager) { + this.namespaces = (HashMap) manager.namespaces.clone(); + this.actions = (ArrayList) manager.actions.clone(); + this.rules = (MultiHashMap) manager.rules.clone(); + } + + // --------------------------------------------------------- // Public Methods // --------------------------------------------------------- /** - * Return a clone of this object. The Action objects currently + * Returns a clone of this object. The Action objects currently * registered are not copied, as Action objects are required to be * re-entrant and thread-safe. */ public RuleManager copy() { - DefaultRuleManager copy = new DefaultRuleManager(); - copy.namespaces = (HashMap) this.namespaces.clone(); - copy.actions = (ArrayList) this.actions.clone(); - copy.rules = (MultiHashMap) this.rules.clone(); - return copy; + return new DefaultRuleManager(this); } /** @@ -229,7 +249,7 @@ return java.util.Collections.EMPTY_LIST; } else { - return actionList; + return Collections.unmodifiableList(actionList); } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]