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