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