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