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/02/12 17:33:10 UTC

svn commit: r1070108 - in /commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder: LinkedRuleBuilderImpl.java ProvidersRegistry.java

Author: simonetripodi
Date: Sat Feb 12 16:33:10 2011
New Revision: 1070108

URL: http://svn.apache.org/viewvc?rev=1070108&view=rev
Log:
when looking for a specific implementation of RuleProvider in the registry, the namespace URI has to be checked as well with the matching pattern

Modified:
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/LinkedRuleBuilderImpl.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/ProvidersRegistry.java

Modified: commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/LinkedRuleBuilderImpl.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/LinkedRuleBuilderImpl.java?rev=1070108&r1=1070107&r2=1070108&view=diff
==============================================================================
--- commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/LinkedRuleBuilderImpl.java (original)
+++ commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/LinkedRuleBuilderImpl.java Sat Feb 12 16:33:10 2011
@@ -142,7 +142,8 @@ final class LinkedRuleBuilderImpl implem
      */
     public NestedPropertiesBuilder setNestedProperties() {
         // that would be useful when adding rules via automatically generated rules binding (such annotations)
-        NestedPropertiesBuilder nestedPropertiesBuilder = this.providersRegistry.getProvider(this.keyPattern, NestedPropertiesBuilder.class);
+        NestedPropertiesBuilder nestedPropertiesBuilder =
+            this.providersRegistry.getProvider(this.keyPattern, this.namespaceURI, NestedPropertiesBuilder.class);
         if (nestedPropertiesBuilder != null) {
             return nestedPropertiesBuilder;
         }
@@ -167,7 +168,8 @@ final class LinkedRuleBuilderImpl implem
      */
     public SetPropertiesBuilder setProperties() {
         // that would be useful when adding rules via automatically generated rules binding (such annotations)
-        SetPropertiesBuilder setPropertiesBuilder = this.providersRegistry.getProvider(this.keyPattern, SetPropertiesBuilder.class);
+        SetPropertiesBuilder setPropertiesBuilder =
+            this.providersRegistry.getProvider(this.keyPattern, this.namespaceURI, SetPropertiesBuilder.class);
         if (setPropertiesBuilder != null) {
             return setPropertiesBuilder;
         }

Modified: commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/ProvidersRegistry.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/ProvidersRegistry.java?rev=1070108&r1=1070107&r2=1070108&view=diff
==============================================================================
--- commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/ProvidersRegistry.java (original)
+++ commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/ProvidersRegistry.java Sat Feb 12 16:33:10 2011
@@ -40,7 +40,9 @@ final class ProvidersRegistry {
         indexedProviders.add(provider);
     }
 
-    public <R extends Rule, RP extends RuleProvider<R>> RP getProvider(String keyPattern, Class<RP> type) {
+    public <R extends Rule, RP extends RuleProvider<R>> RP getProvider(String keyPattern,
+            /* @Nullable */ String namespaceURI,
+            Class<RP> type) {
         List<RuleProvider<? extends Rule>> indexedProviders = this.providersIndex.get(keyPattern);
 
         if (indexedProviders == null || indexedProviders.isEmpty()) {
@@ -49,7 +51,14 @@ final class ProvidersRegistry {
 
         for (RuleProvider<? extends Rule> ruleProvider  : indexedProviders) {
             if (type.isInstance(ruleProvider)) {
-                return type.cast(ruleProvider);
+                if (namespaceURI == null) {
+                    if (ruleProvider.getNamespaceURI() == null) {
+                        return type.cast(ruleProvider);
+                    }
+                } else if (ruleProvider.getNamespaceURI() != null
+                        && namespaceURI.equals(ruleProvider.getNamespaceURI())) {
+                    return type.cast(ruleProvider);
+                }
             }
         }