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);
+ }
}
}