Author: kwin
Date: Fri Dec 5 08:51:57 2014
New Revision: 1643198
URL: http://svn.apache.org/viewvc?rev=1643198&view=rev
Log:
SLING-4214, either children or properties must be set on each Validation model
Modified:
sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ValidationServiceImpl.java
sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/ValidationServiceImplTest.java
Modified:
sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ValidationServiceImpl.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ValidationServiceImpl.java?rev=1643198&r1=1643197&r2=1643198&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ValidationServiceImpl.java
(original)
+++
sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ValidationServiceImpl.java
Fri Dec 5 08:51:57 2014
@@ -331,25 +331,25 @@ public class ValidationServiceImpl imple
String[] applicablePaths =
PropertiesUtil.toStringArray(validationModelProperties.get(Constants.APPLICABLE_PATHS,
String[].class));
Resource r = model.getChild(Constants.PROPERTIES);
- if (r != null) {
- Set<ResourceProperty> resourceProperties =
JCRBuilder.buildProperties(validators, r);
- if (!resourceProperties.isEmpty()) {
- List<ChildResource> children =
JCRBuilder.buildChildren(model, model, validators);
- vm = new JCRValidationModel(jcrPath,
resourceProperties, validatedResourceType, applicablePaths, children);
- modelsForResourceType =
validationModelsCache.get(validatedResourceType);
- /**
- * if the modelsForResourceType is null the
canAcceptModel will return true: performance optimisation so that
- * the Trie is created only if the model is
accepted
- */
-
- if (canAcceptModel(vm, searchPath,
searchPaths, modelsForResourceType)) {
- if (modelsForResourceType == null) {
- modelsForResourceType = new
Trie<JCRValidationModel>();
-
validationModelsCache.put(validatedResourceType, modelsForResourceType);
- }
- for (String applicablePath :
vm.getApplicablePaths()) {
-
modelsForResourceType.insert(applicablePath, vm);
- }
+ Set<ResourceProperty> resourceProperties =
JCRBuilder.buildProperties(validators, r);
+ List<ChildResource> children =
JCRBuilder.buildChildren(model, model, validators);
+ if (resourceProperties.isEmpty() &&
children.isEmpty()) {
+ LOG.warn("Incomplete validation model resource {}.
Neither children nor properties set.", model.getPath());
+ } else {
+ vm = new JCRValidationModel(jcrPath,
resourceProperties, validatedResourceType, applicablePaths, children);
+ modelsForResourceType =
validationModelsCache.get(validatedResourceType);
+ /**
+ * if the modelsForResourceType is null the
canAcceptModel will return true: performance
+ * optimisation so that the Trie is created only
if the model is accepted
+ */
+
+ if (canAcceptModel(vm, searchPath, searchPaths,
modelsForResourceType)) {
+ if (modelsForResourceType == null) {
+ modelsForResourceType = new
Trie<JCRValidationModel>();
+
validationModelsCache.put(validatedResourceType, modelsForResourceType);
+ }
+ for (String applicablePath :
vm.getApplicablePaths()) {
+
modelsForResourceType.insert(applicablePath, vm);
}
}
}
Modified:
sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/ValidationServiceImplTest.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/ValidationServiceImplTest.java?rev=1643198&r1=1643197&r2=1643198&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/ValidationServiceImplTest.java
(original)
+++
sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/ValidationServiceImplTest.java
Fri Dec 5 08:51:57 2014
@@ -284,7 +284,7 @@ public class ValidationServiceImplTest {
Assert.assertFalse(vr.isValid());
// check for correct error message
Map<String, List<String>> expectedFailureMessages = new
HashMap<String, List<String>>();
- expectedFailureMessages.put("field2", Arrays.asList("Property does
not match the pattern abc"));
+ expectedFailureMessages.put("field1", Arrays.asList("Property does
not match the pattern abc"));
Assert.assertThat(vr.getFailureMessages().entrySet(),
Matchers.equalTo(expectedFailureMessages.entrySet()));
} finally {
if (model1 != null) {