Author: kwin
Date: Mon Aug 17 13:36:33 2015
New Revision: 1696271

URL: http://svn.apache.org/r1696271
Log:
SLING-4951 remove path constraint for validation resources (that it has to be 
placed below a resource named "validation")

Modified:
    
sling/trunk/bundles/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/resourcemodel/ResourceValidationModelProviderImpl.java
    
sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/resourcemodel/ResourceValidationModelProviderImplTest.java

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=1696271&r1=1696270&r2=1696271&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
 Mon Aug 17 13:36:33 2015
@@ -70,8 +70,7 @@ import org.slf4j.LoggerFactory;
 @Component
 public class ResourceValidationModelProviderImpl implements 
ValidationModelProvider, EventHandler {
 
-    static final String MODEL_XPATH_QUERY = "/jcr:root%s/" + 
Constants.MODELS_HOME
-            + "/*[@sling:resourceType=\"%s\" and @%s=\"%s\"]";
+    static final String MODEL_XPATH_QUERY = 
"/jcr:root%s/*[@sling:resourceType=\""+Constants.VALIDATION_MODEL_RESOURCE_TYPE+"\"
 and @"+Constants.VALIDATED_RESOURCE_TYPE+"=\"%s\"]";
     static final String[] TOPICS = { SlingConstants.TOPIC_RESOURCE_REMOVED, 
SlingConstants.TOPIC_RESOURCE_CHANGED,
             SlingConstants.TOPIC_RESOURCE_ADDED };
 
@@ -187,8 +186,7 @@ public class ResourceValidationModelProv
         Collection<ValidationModel> validationModels = new 
ArrayList<ValidationModel>();
         String[] searchPaths = resourceResolver.getSearchPath();
         for (String searchPath : searchPaths) {
-            final String queryString = String.format(MODEL_XPATH_QUERY, 
searchPath,
-                    Constants.VALIDATION_MODEL_RESOURCE_TYPE, 
Constants.VALIDATED_RESOURCE_TYPE, relativeResourceType);
+            final String queryString = String.format(MODEL_XPATH_QUERY, 
searchPath, relativeResourceType);
             Iterator<Resource> models = 
resourceResolver.findResources(queryString, "xpath");
             while (models.hasNext()) {
                 Resource model = models.next();

Modified: 
sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/resourcemodel/ResourceValidationModelProviderImplTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/resourcemodel/ResourceValidationModelProviderImplTest.java?rev=1696271&r1=1696270&r2=1696271&view=diff
==============================================================================
--- 
sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/resourcemodel/ResourceValidationModelProviderImplTest.java
 (original)
+++ 
sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/resourcemodel/ResourceValidationModelProviderImplTest.java
 Mon Aug 17 13:36:33 2015
@@ -220,6 +220,25 @@ public class ResourceValidationModelProv
     }
 
     @Test
+    public void testGetValidationModelOutsideSearchPath() throws Exception {
+        // build two models manually (which are identical except for the 
applicable path)
+        ValidationModel model1 = modelBuilder.build("sling/validation/test");
+
+        Resource contentValidatorsRoot = ResourceUtil.getOrCreateResource(rr, 
"/content",
+                (Map<String, Object>) null, "sling:Folder", true);
+        try {
+            // build models in JCR outside any search path /apps or /libs
+            createValidationModelResource(rr, contentValidatorsRoot.getPath(), 
"testValidationModel1", model1);
+
+            // check that no model is found
+            Collection<ValidationModel> models = 
modelProvider.getModel("sling/validation/test", validatorMap, rr);
+            Assert.assertThat("Model was placed outside resource resolver 
search path but still found", models, Matchers.empty());
+        } finally {
+            rr.delete(contentValidatorsRoot);
+        }
+    }
+
+    @Test
     public void testGetValidationModelWithChildren() throws Exception {
         // build two models manually (which are identical except for the 
applicable path)
         ResourcePropertyBuilder resourcePropertyBuilder = new 
ResourcePropertyBuilder();


Reply via email to