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 15:03:40 UTC

svn commit: r1785150 - in /sling/trunk/bundles/extensions/validation/core/src/main/java/org/apache/sling/validation/impl: ValidationModelRetrieverImpl.java resourcemodel/ResourceValidationModelProviderImpl.java

Author: kwin
Date: Thu Mar  2 15:03:40 2017
New Revision: 1785150

URL: http://svn.apache.org/viewvc?rev=1785150&view=rev
Log:
SLING-6588 extend logging and fix handling of validation models with no applicablePaths property

Modified:
    sling/trunk/bundles/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ValidationModelRetrieverImpl.java
    sling/trunk/bundles/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/resourcemodel/ResourceValidationModelProviderImpl.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=1785150&r1=1785149&r2=1785150&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 15:03:40 2017
@@ -51,8 +51,6 @@ import org.slf4j.LoggerFactory;
 @Component
 public class ValidationModelRetrieverImpl implements ValidationModelRetriever {
 
-    public static final String CACHE_INVALIDATION_EVENT_TOPIC = "org/apache/sling/validation/cache/INVALIDATE";
-
     /** 
      * Map of validation providers (key=service properties), Declarative Services 1.3 takes care that the list is ordered according to {@link ServiceReference#compareTo(Object)}.
      * Highest ranked service is the last one in the list.
@@ -90,6 +88,7 @@ public class ValidationModelRetrieverImp
             try {
                 resourceResolver = resourceResolverFactory.getServiceResourceResolver(null);
                 while ((currentResourceType = resourceResolver.getParentResourceType(currentResourceType)) != null) {
+                    LOG.debug("Retrieving validation models for resource super type {}...", currentResourceType);
                     ValidationModel modelToMerge = getModel(currentResourceType, resourcePath);
                     if (modelToMerge != null) {
                         if (baseModel == null) {
@@ -133,11 +132,17 @@ public class ValidationModelRetrieverImp
         // fill trie with data from model providers (all models for the given resource type, independent of resource path)
         // lowest ranked model provider inserts first (i.e. higher ranked should overwrite)
         for (ValidationModelProvider modelProvider : modelProviders) {
-            for (ValidationModel model : modelProvider.getModels(resourceType, validators)) {
+            LOG.debug("Retrieving validation models with resource type {} from provider {}...", resourceType, modelProvider.getClass().getName());
+            List<ValidationModel> models = modelProvider.getModels(resourceType, validators);
+            for (ValidationModel model : models) {
                 for (String applicablePath : model.getApplicablePaths()) {
+                    LOG.debug("Found validation model for resource type {} for applicable path {}", resourceType, applicablePath);
                     modelsForResourceType.insert(applicablePath, model);
                 }
             }
+            if (models.isEmpty()) {
+                LOG.debug("Found no validation model with resource type {} from provider {}", resourceType, modelProvider.getClass().getName());
+            }
         }
         return modelsForResourceType;
     }

Modified: sling/trunk/bundles/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/resourcemodel/ResourceValidationModelProviderImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/resourcemodel/ResourceValidationModelProviderImpl.java?rev=1785150&r1=1785149&r2=1785150&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/resourcemodel/ResourceValidationModelProviderImpl.java (original)
+++ sling/trunk/bundles/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/resourcemodel/ResourceValidationModelProviderImpl.java Thu Mar  2 15:03:40 2017
@@ -43,7 +43,6 @@ import org.apache.sling.validation.impl.
 import org.apache.sling.validation.impl.model.ParameterizedValidatorImpl;
 import org.apache.sling.validation.impl.model.ResourcePropertyImpl;
 import org.apache.sling.validation.impl.model.ValidationModelBuilder;
-import org.apache.sling.validation.impl.util.Trie;
 import org.apache.sling.validation.model.ChildResource;
 import org.apache.sling.validation.model.ParameterizedValidator;
 import org.apache.sling.validation.model.ResourceProperty;
@@ -216,6 +215,8 @@ public class ResourceValidationModelProv
         if (cacheEntry == null) {
             cacheEntry = doGetModels(relativeResourceType, validatorsMap);
             validationModelCacheByResourceType.put(relativeResourceType, cacheEntry);
+        } else {
+            LOG.debug("Found entry in cache for resource type {}", relativeResourceType);
         }
         return cacheEntry;
     }
@@ -237,6 +238,7 @@ public class ResourceValidationModelProv
             String[] searchPaths = resourceResolver.getSearchPath();
             for (String searchPath : searchPaths) {
                 final String queryString = String.format(MODEL_XPATH_QUERY, searchPath, relativeResourceType);
+                LOG.debug("Looking for validation models with query '{}'", queryString);
                 Iterator<Resource> models = resourceResolver.findResources(queryString, "xpath");
                 while (models.hasNext()) {
                     Resource model = models.next();
@@ -245,7 +247,7 @@ public class ResourceValidationModelProv
                     try {
                         ValidationModelBuilder modelBuilder = new ValidationModelBuilder();
                         ValueMap validationModelProperties = model.adaptTo(ValueMap.class);
-                        modelBuilder.addApplicablePaths(validationModelProperties.get(ResourceValidationModelProviderImpl.APPLICABLE_PATHS, String[].class));
+                        modelBuilder.addApplicablePaths(validationModelProperties.get(ResourceValidationModelProviderImpl.APPLICABLE_PATHS, new String[]{}));
                         Resource propertiesResource = model.getChild(ResourceValidationModelProviderImpl.PROPERTIES);
                         modelBuilder.resourceProperties(buildProperties(validatorsMap, propertiesResource));
                         modelBuilder.childResources(buildChildren(model, model, validatorsMap));