You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by si...@apache.org on 2011/01/31 21:34:33 UTC
svn commit: r1065755 -
/commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/RulesBinderImpl.java
Author: simonetripodi
Date: Mon Jan 31 20:34:33 2011
New Revision: 1065755
URL: http://svn.apache.org/viewvc?rev=1065755&view=rev
Log:
added the data structure where storing the rule providers binding + accessing method
Modified:
commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/RulesBinderImpl.java
Modified: commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/RulesBinderImpl.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/RulesBinderImpl.java?rev=1065755&r1=1065754&r2=1065755&view=diff
==============================================================================
--- commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/RulesBinderImpl.java (original)
+++ commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/RulesBinderImpl.java Mon Jan 31 20:34:33 2011
@@ -19,6 +19,7 @@ package org.apache.commons.digester3;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -49,6 +50,28 @@ final class RulesBinderImpl implements R
private final List<ErrorMessage> errors = new ArrayList<ErrorMessage>();
/**
+ * The data structure where storing the providers binding.
+ */
+ private final Map<String, List<RuleProvider<? extends Rule>>> providers;
+
+ /**
+ * Creates a new {@link RulesBinder} instance with no bound providers.
+ */
+ public RulesBinderImpl() {
+ this(new LinkedHashMap<String, List<RuleProvider<? extends Rule>>>());
+ }
+
+ /**
+ * Creates a new {@link RulesBinder} instance with already bound providers,
+ * useful when creating child Digester from an existing configuration.
+ *
+ * @param providers the data structure where storing the providers binding.
+ */
+ public RulesBinderImpl(Map<String, List<RuleProvider<? extends Rule>>> providers) {
+ this.providers = providers;
+ }
+
+ /**
* {@inheritDoc}
*/
public void addError(String messagePattern, Object... arguments) {
@@ -403,6 +426,28 @@ final class RulesBinderImpl implements R
};
}
+ /**
+ * Add a provider in the data structure where storing the providers binding.
+ *
+ * @param <R> The rule will be created by the given provider
+ * @param provider The provider has to be stored in the data structure
+ * @return The provider itself has to be stored in the data structure
+ */
+ private <R extends Rule> RuleProvider<R> addProvider(RuleProvider<R> provider) {
+ if (keyPattern == null) {
+ return provider;
+ }
+
+ List<RuleProvider<? extends Rule>> providerLits = providers.get(keyPattern);
+ if (providerLits == null) {
+ providerLits = new ArrayList<RuleProvider<? extends Rule>>();
+ providers.put(keyPattern, providerLits);
+ }
+ providerLits.add(provider);
+
+ return provider;
+ }
+
};
}