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


Reply via email to