You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by kw...@apache.org on 2017/03/02 07:55:10 UTC

svn commit: r1785085 - /sling/trunk/bundles/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ValidationModelRetrieverImpl.java

Author: kwin
Date: Thu Mar  2 07:55:09 2017
New Revision: 1785085

URL: http://svn.apache.org/viewvc?rev=1785085&view=rev
Log:
SLING-6578 only remove validator if it was previously really bound

Modified:
    sling/trunk/bundles/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ValidationModelRetrieverImpl.java

Modified: sling/trunk/bundles/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ValidationModelRetrieverImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ValidationModelRetrieverImpl.java?rev=1785085&r1=1785084&r2=1785085&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ValidationModelRetrieverImpl.java (original)
+++ sling/trunk/bundles/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ValidationModelRetrieverImpl.java Thu Mar  2 07:55:09 2017
@@ -193,11 +193,14 @@ public class ValidationModelRetrieverImp
 
     protected void removeValidator(Validator<?> validator, Map<String, Object> properties, ServiceReference<Validator<?>> serviceReference) {
         String validatorId = getValidatorIdFromServiceProperties(properties, validator, serviceReference);
-        validator = validators.remove(validatorId);
-        validatorServiceReferences.remove(validatorId);
-        if (validator != null) {
-            LOG.debug("Invalidating models cache because validator {} is no longer available", validator);
+        // check if this validator is really bound (might not be the case if another validator with a higher service ranking and the same id is bound)
+        boolean removed = validators.remove(validatorId, validator);
+        if (removed) {
+            validatorServiceReferences.remove(validatorId);
+            LOG.debug("Invalidating models cache because validator {} with id '{}' is no longer available", validator, validatorId);
             validationModelsCache.clear();
+        } else {
+            LOG.debug("Removing validator {} with id '{}' has no effect, as another validator with a higher service ranking was bound previously", validator, validatorId);
         }
     }