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