Modified: sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/ValidationServiceImplTest.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/ValidationServiceImplTest.java?rev=1720802&r1=1720801&r2=1720802&view=diff ============================================================================== --- sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/ValidationServiceImplTest.java (original) +++ sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/ValidationServiceImplTest.java Fri Dec 18 14:50:39 2015 @@ -40,8 +40,8 @@ import org.apache.sling.api.resource.Val import org.apache.sling.api.wrappers.ValueMapDecorator; import org.apache.sling.jcr.resource.JcrResourceConstants; import org.apache.sling.testing.mock.sling.junit.SlingContext; +import org.apache.sling.validation.ValidationFailure; import org.apache.sling.validation.ValidationResult; -import org.apache.sling.validation.Validator; import org.apache.sling.validation.exceptions.SlingValidationException; import org.apache.sling.validation.impl.model.ChildResourceImpl; import org.apache.sling.validation.impl.model.ResourcePropertyBuilder; @@ -51,6 +51,10 @@ import org.apache.sling.validation.impl. import org.apache.sling.validation.model.ChildResource; import org.apache.sling.validation.model.ResourceProperty; import org.apache.sling.validation.model.ValidationModel; +import org.apache.sling.validation.spi.DefaultValidationFailure; +import org.apache.sling.validation.spi.DefaultValidationResult; +import org.apache.sling.validation.spi.ValidationContext; +import org.apache.sling.validation.spi.Validator; import org.hamcrest.Matchers; import org.junit.Assert; import org.junit.Before; @@ -93,24 +97,21 @@ public class ValidationServiceImplTest { HashMap<String, Object> hashMap = new HashMap<String, Object>(); hashMap.put("field1", "1"); ValidationResult vr = validationService.validate(new ValueMapDecorator(hashMap), vm); - Map<String, List<String>> expectedFailureMessages = new HashMap<String, List<String>>(); - expectedFailureMessages - .put("field1", - Arrays.asList("Property was expected to be of type 'class java.util.Date' but cannot be converted to that type.")); - Assert.assertThat(vr.getFailureMessages().entrySet(), Matchers.equalTo(expectedFailureMessages.entrySet())); + Assert.assertThat(vr.getFailures(), Matchers.<ValidationFailure>contains(new DefaultValidationFailure("Property was expected to be of type 'class java.util.Date' but cannot be converted to that type.", "field1"))); } @Test public void testValidateNeverCalledWithNullValues() throws Exception { Validator<String> myValidator = new Validator<String>() { @Override - public String validate(@Nonnull String data, @Nonnull ValueMap valueMap, Resource resource, @Nonnull ValueMap arguments) + public @Nonnull ValidationResult validate(@Nonnull String data, @Nonnull ValidationContext context, @Nonnull ValueMap arguments) throws SlingValidationException { Assert.assertNotNull("data parameter for validate should never be null", data); - Assert.assertNotNull("valueMap parameter for validate should never be null", valueMap); - Assert.assertNull("resource cannot be set if validate was called only with a value map", resource); + Assert.assertNotNull("location of context parameter for validate should never be null", context.getLocation()); + Assert.assertNotNull("valueMap of context parameter for validate should never be null", context.getValueMap()); + Assert.assertNull("resource of context parameter for validate cannot be set if validate was called only with a value map", context.getResource()); Assert.assertNotNull("arguments parameter for validate should never be null", arguments); - return null; + return DefaultValidationResult.VALID; } }; propertyBuilder.validator(myValidator); @@ -120,7 +121,7 @@ public class ValidationServiceImplTest { HashMap<String, Object> hashMap = new HashMap<String, Object>(); hashMap.put("field1", "1"); ValidationResult vr = validationService.validate(new ValueMapDecorator(hashMap), vm); - Assert.assertThat(vr.getFailureMessages().entrySet(), Matchers.empty()); + Assert.assertThat(vr.getFailures(), Matchers.hasSize(0)); Assert.assertTrue(vr.isValid()); } @@ -139,9 +140,7 @@ public class ValidationServiceImplTest { hashMap.put("field3", ""); ValidationResult vr = validationService.validate(new ValueMapDecorator(hashMap), vm); - Map<String, List<String>> expectedFailureMessages = new HashMap<String, List<String>>(); - expectedFailureMessages.put("field4", Arrays.asList("Missing required property.")); - Assert.assertThat(vr.getFailureMessages().entrySet(), Matchers.equalTo(expectedFailureMessages.entrySet())); + Assert.assertThat(vr.getFailures(), Matchers.<ValidationFailure>contains(new DefaultValidationFailure("Missing required property.", "field4"))); } @Test() @@ -152,7 +151,7 @@ public class ValidationServiceImplTest { HashMap<String, Object> hashMap = new HashMap<String, Object>(); hashMap.put("field2", "1"); ValidationResult vr = validationService.validate(new ValueMapDecorator(hashMap), vm); - Assert.assertThat(vr.getFailureMessages().entrySet(), Matchers.empty()); + Assert.assertThat(vr.getFailures(), Matchers.hasSize(0)); Assert.assertTrue(vr.isValid()); } @@ -168,8 +167,7 @@ public class ValidationServiceImplTest { ValidationResult vr = validationService.validate(new ValueMapDecorator(hashMap), vm); Assert.assertFalse(vr.isValid()); // check for correct error message Map<String, List<String>> - Assert.assertThat(vr.getFailureMessages(), - Matchers.hasEntry("field1", Arrays.asList("Property does not match the pattern abc"))); + Assert.assertThat(vr.getFailures(), Matchers.<ValidationFailure>contains(new DefaultValidationFailure("Property does not match the pattern 'abc'", "field1"))); } @Test @@ -188,9 +186,8 @@ public class ValidationServiceImplTest { ValidationResult vr = validationService.validate(new ValueMapDecorator(hashMap), vm); - Assert.assertFalse(vr.isValid()); // check for correct error message Map<String, List<String>> - Assert.assertThat(vr.getFailureMessages(), - Matchers.hasEntry("field2", Arrays.asList("Property does not match the pattern " + TEST_REGEX))); + Assert.assertFalse(vr.isValid()); + Assert.assertThat(vr.getFailures(), Matchers.<ValidationFailure> hasItem(new DefaultValidationFailure("Property does not match the pattern '" + TEST_REGEX + "'", "field2"))); } @Test @@ -222,9 +219,7 @@ public class ValidationServiceImplTest { ValidationResult vr = validationService.validate(testResource, vm); Assert.assertFalse("resource should have been considered invalid", vr.isValid()); - Assert.assertThat(vr.getFailureMessages(), - Matchers.hasEntry("child/grandchild/field1", Arrays.asList("Missing required property."))); - Assert.assertThat(vr.getFailureMessages().keySet(), Matchers.hasSize(1)); + Assert.assertThat(vr.getFailures(), Matchers.<ValidationFailure>contains(new DefaultValidationFailure("Missing required property.", "child/grandchild/field1"))); } @Test @@ -243,7 +238,7 @@ public class ValidationServiceImplTest { JcrConstants.NT_UNSTRUCTURED, JcrConstants.NT_UNSTRUCTURED, true); ValidationResult vr = validationService.validate(testResource, vm); - Assert.assertThat(vr.getFailureMessages().entrySet(), Matchers.empty()); + Assert.assertThat(vr.getFailures(), Matchers.hasSize(0)); Assert.assertTrue(vr.isValid()); } @@ -269,7 +264,7 @@ public class ValidationServiceImplTest { rr.create(resourceChild, "grandchild", properties); ValidationResult vr = validationService.validate(testResource, vm); - Assert.assertThat(vr.getFailureMessages().entrySet(), Matchers.empty()); + Assert.assertThat(vr.getFailures(), Matchers.hasSize(0)); Assert.assertTrue(vr.isValid()); } @@ -277,11 +272,16 @@ public class ValidationServiceImplTest { public void testResourceWithValidatorLeveragingTheResource() throws Exception { Validator<String> extendedValidator = new Validator<String>() { @Override - @CheckForNull - public String validate(String data, ValueMap valueMap, Resource resource, ValueMap arguments) + @Nonnull + public ValidationResult validate(@Nonnull String data, @Nonnull ValidationContext context, @Nonnull ValueMap arguments) throws SlingValidationException { - Assert.assertThat(resource.getPath(), Matchers.equalTo("/content/validation/1/resource")); - return null; + Resource resource = context.getResource(); + if (resource == null) { + Assert.fail("Resource must not be null"); + } else { + Assert.assertThat(resource.getPath(), Matchers.equalTo("/content/validation/1/resource")); + } + return DefaultValidationResult.VALID; } }; @@ -296,8 +296,7 @@ public class ValidationServiceImplTest { Resource testResource = ResourceUtil.getOrCreateResource(rr, "/content/validation/1/resource", properties, JcrConstants.NT_UNSTRUCTURED, true); ValidationResult vr = validationService.validate(testResource, vm); - // until we upgrade to a newer version of hamcrest we must use this workaround (https://github.com/hamcrest/JavaHamcrest/issues/35) - Assert.assertThat(vr.getFailureMessages().entrySet(), Matchers.empty()); + Assert.assertTrue(vr.isValid()); } @Test @@ -331,15 +330,12 @@ public class ValidationServiceImplTest { ValidationResult vr = validationService.validate(testResource, vm); Assert.assertFalse("resource should have been considered invalid", vr.isValid()); - Assert.assertThat(vr.getFailureMessages(), - Matchers.hasEntry("child2/grandchild.*", Arrays.asList("Missing required child resource."))); - Assert.assertThat(vr.getFailureMessages(), - Matchers.hasEntry("child3/grandchild.*", Arrays.asList("Missing required child resource."))); - Assert.assertThat(vr.getFailureMessages(), - Matchers.hasEntry("child3/field1", Arrays.asList("Missing required property."))); - Assert.assertThat(vr.getFailureMessages(), - Matchers.hasEntry("siblingchild.*", Arrays.asList("Missing required child resource."))); - Assert.assertThat(vr.getFailureMessages().keySet(), Matchers.hasSize(4)); + + Assert.assertThat(vr.getFailures(), Matchers.<ValidationFailure>containsInAnyOrder( + new DefaultValidationFailure("Missing required child resource.", "child2/grandchild.*"), + new DefaultValidationFailure("Missing required child resource.", "child3/grandchild.*"), + new DefaultValidationFailure("Missing required property.", "child3/field1"), + new DefaultValidationFailure("Missing required child resource.", "siblingchild.*"))); } @Test @@ -365,11 +361,10 @@ public class ValidationServiceImplTest { ValidationResult vr = validationService.validate(testResource, vm); Assert.assertFalse("resource should have been considered invalid", vr.isValid()); - Assert.assertThat(vr.getFailureMessages(), - Matchers.hasEntry("field3", Arrays.asList("Property does not match the pattern \\d"))); - Assert.assertThat(vr.getFailureMessages(), - Matchers.hasEntry("otherfield.*", Arrays.asList("Missing required property."))); - Assert.assertThat(vr.getFailureMessages().keySet(), Matchers.hasSize(2)); + + Assert.assertThat(vr.getFailures(), Matchers.<ValidationFailure>contains( + new DefaultValidationFailure("Property does not match the pattern '\\d'", "field3"), + new DefaultValidationFailure("Missing required property.", "otherfield.*"))); } @Test @@ -387,9 +382,7 @@ public class ValidationServiceImplTest { ValidationResult vr = validationService.validate(testResource, vm); Assert.assertFalse("resource should have been considered invalid", vr.isValid()); - Assert.assertThat(vr.getFailureMessages(), - Matchers.hasEntry("field[1]", Arrays.asList("Property does not match the pattern \\d"))); - Assert.assertThat(vr.getFailureMessages().keySet(), Matchers.hasSize(1)); + Assert.assertThat(vr.getFailures(), Matchers.<ValidationFailure>contains(new DefaultValidationFailure("Property does not match the pattern '\\d'", "field[1]"))); } @Test() @@ -449,11 +442,9 @@ public class ValidationServiceImplTest { ValidationResult vr = validationService.validateResourceRecursively(testResource, true, ignoreResourceType3Filter, false); Assert.assertFalse("resource should have been considered invalid", vr.isValid()); - Assert.assertThat(vr.getFailureMessages(), - Matchers.hasEntry("field1", Arrays.asList("Missing required property."))); - Assert.assertThat(vr.getFailureMessages(), - Matchers.hasEntry("child2/field2", Arrays.asList("Missing required property."))); - Assert.assertThat(vr.getFailureMessages().keySet(), Matchers.hasSize(2)); + Assert.assertThat(vr.getFailures(), Matchers.<ValidationFailure>contains( + new DefaultValidationFailure("Missing required property.", "field1"), + new DefaultValidationFailure("Missing required property.", "child2/field2"))); } @Test(expected = IllegalArgumentException.class) @@ -471,7 +462,7 @@ public class ValidationServiceImplTest { Resource testResource = ResourceUtil.getOrCreateResource(rr, "/content/validation/1/resource", "resourcetype1", JcrConstants.NT_UNSTRUCTURED, true); - ValidationResult vr = validationService.validateResourceRecursively(testResource, true, null, false); + validationService.validateResourceRecursively(testResource, true, null, false); } @Test()
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=1720802&r1=1720801&r2=1720802&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 Fri Dec 18 14:50:39 2015 @@ -47,8 +47,6 @@ import org.apache.sling.testing.mock.jcr import org.apache.sling.testing.mock.jcr.MockQueryResultHandler; import org.apache.sling.testing.mock.sling.ResourceResolverType; import org.apache.sling.testing.mock.sling.junit.SlingContext; -import org.apache.sling.validation.Validator; -import org.apache.sling.validation.impl.Constants; import org.apache.sling.validation.impl.model.ChildResourceImpl; import org.apache.sling.validation.impl.model.ResourcePropertyBuilder; import org.apache.sling.validation.impl.model.ValidationModelBuilder; @@ -57,6 +55,7 @@ import org.apache.sling.validation.model import org.apache.sling.validation.model.ParameterizedValidator; import org.apache.sling.validation.model.ResourceProperty; import org.apache.sling.validation.model.ValidationModel; +import org.apache.sling.validation.spi.Validator; import org.hamcrest.Matchers; import org.junit.After; import org.junit.Assert; @@ -299,10 +298,10 @@ public class ResourceValidationModelProv private Resource createValidationModelResource(ResourceResolver rr, String root, String name, ValidationModel model) throws Exception { Map<String, Object> modelProperties = new HashMap<String, Object>(); - modelProperties.put(Constants.VALIDATED_RESOURCE_TYPE, model.getValidatedResourceType()); - modelProperties.put(Constants.APPLICABLE_PATHS, model.getApplicablePaths()); + modelProperties.put(ResourceValidationModelProviderImpl.VALIDATED_RESOURCE_TYPE, model.getValidatedResourceType()); + modelProperties.put(ResourceValidationModelProviderImpl.APPLICABLE_PATHS, model.getApplicablePaths()); modelProperties - .put(JcrResourceConstants.SLING_RESOURCE_TYPE_PROPERTY, Constants.VALIDATION_MODEL_RESOURCE_TYPE); + .put(JcrResourceConstants.SLING_RESOURCE_TYPE_PROPERTY, ResourceValidationModelProviderImpl.VALIDATION_MODEL_RESOURCE_TYPE); modelProperties.put(JcrConstants.JCR_PRIMARYTYPE, JcrConstants.NT_UNSTRUCTURED); Resource modelResource = ResourceUtil.getOrCreateResource(rr, root + "/" + name, modelProperties, JcrResourceConstants.NT_SLING_FOLDER, true); @@ -333,7 +332,7 @@ public class ResourceValidationModelProv return; } Resource propertiesResource = ResourceUtil.getOrCreateResource(rr, - model.getPath() + "/" + Constants.PROPERTIES, JcrConstants.NT_UNSTRUCTURED, null, true); + model.getPath() + "/" + ResourceValidationModelProviderImpl.PROPERTIES, JcrConstants.NT_UNSTRUCTURED, null, true); for (ResourceProperty property : properties) { Map<String, Object> modelPropertyJCRProperties = new HashMap<String, Object>(); modelPropertyJCRProperties.put(JcrConstants.JCR_PRIMARYTYPE, JcrConstants.NT_UNSTRUCTURED); @@ -343,12 +342,12 @@ public class ResourceValidationModelProv ModifiableValueMap values = propertyResource.adaptTo(ModifiableValueMap.class); Pattern pattern = property.getNamePattern(); if (pattern != null) { - values.put(Constants.NAME_REGEX, pattern.pattern()); + values.put(ResourceValidationModelProviderImpl.NAME_REGEX, pattern.pattern()); } - values.put(Constants.PROPERTY_MULTIPLE, property.isMultiple()); - values.put(Constants.OPTIONAL, !property.isRequired()); + values.put(ResourceValidationModelProviderImpl.PROPERTY_MULTIPLE, property.isMultiple()); + values.put(ResourceValidationModelProviderImpl.OPTIONAL, !property.isRequired()); Resource validators = ResourceUtil.getOrCreateResource(rr, propertyResource.getPath() + "/" - + Constants.VALIDATORS, JcrConstants.NT_UNSTRUCTURED, null, true); + + ResourceValidationModelProviderImpl.VALIDATORS, JcrConstants.NT_UNSTRUCTURED, null, true); if (validators != null) { for (ParameterizedValidator validator : property.getValidators()) { Map<String, Object> validatorProperties = new HashMap<String, Object>(); @@ -356,7 +355,7 @@ public class ResourceValidationModelProv Map<String, Object> parameters = validator.getParameters(); if (!parameters.isEmpty()) { // convert to right format - validatorProperties.put(Constants.VALIDATOR_ARGUMENTS, + validatorProperties.put(ResourceValidationModelProviderImpl.VALIDATOR_ARGUMENTS, convertMapToJcrValidatorArguments(parameters)); } ResourceUtil.getOrCreateResource(rr, validators.getPath() + "/" @@ -383,13 +382,13 @@ public class ResourceValidationModelProv private Resource createValidationModelChildResource(Resource parentResource, ChildResource child) throws PersistenceException { ResourceResolver rr = parentResource.getResourceResolver(); - Resource modelChildren = rr.create(parentResource, Constants.CHILDREN, primaryTypeUnstructuredMap); + Resource modelChildren = rr.create(parentResource, ResourceValidationModelProviderImpl.CHILDREN, primaryTypeUnstructuredMap); Resource modelResource = rr.create(modelChildren, child.getName(), primaryTypeUnstructuredMap); ModifiableValueMap mvm = modelResource.adaptTo(ModifiableValueMap.class); if (child.getNamePattern() != null) { - mvm.put(Constants.NAME_REGEX, child.getNamePattern() ); + mvm.put(ResourceValidationModelProviderImpl.NAME_REGEX, child.getNamePattern() ); } - mvm.put(Constants.OPTIONAL, !child.isRequired()); + mvm.put(ResourceValidationModelProviderImpl.OPTIONAL, !child.isRequired()); createValidationModelProperties(modelResource, child.getProperties()); // recursion for all childs for (ChildResource grandChild : child.getChildren()) { Modified: sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/ValidatorTypeUtilTest.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/ValidatorTypeUtilTest.java?rev=1720802&r1=1720801&r2=1720802&view=diff ============================================================================== --- sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/ValidatorTypeUtilTest.java (original) +++ sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/ValidatorTypeUtilTest.java Fri Dec 18 14:50:39 2015 @@ -22,9 +22,8 @@ import java.util.Collection; import javax.annotation.Nonnull; -import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ValueMap; -import org.apache.sling.validation.Validator; +import org.apache.sling.validation.ValidationResult; import org.apache.sling.validation.exceptions.SlingValidationException; import org.apache.sling.validation.impl.util.examplevalidators.DerivedStringValidator; import org.apache.sling.validation.impl.util.examplevalidators.ExtendedStringValidator; @@ -33,6 +32,9 @@ import org.apache.sling.validation.impl. import org.apache.sling.validation.impl.util.examplevalidators.StringArrayValidator; import org.apache.sling.validation.impl.util.examplevalidators.StringValidator; import org.apache.sling.validation.impl.validators.RegexValidator; +import org.apache.sling.validation.spi.DefaultValidationResult; +import org.apache.sling.validation.spi.ValidationContext; +import org.apache.sling.validation.spi.Validator; import org.hamcrest.CoreMatchers; import org.hamcrest.Matchers; import org.junit.Assert; @@ -61,11 +63,10 @@ public class ValidatorTypeUtilTest { } private class InnerStringValidator implements Validator<String> { - @Override - public String validate(@Nonnull String data, @Nonnull ValueMap valueMap, Resource resource, @Nonnull ValueMap arguments) + public @Nonnull ValidationResult validate(@Nonnull String data, @Nonnull ValidationContext context, @Nonnull ValueMap arguments) throws SlingValidationException { - return null; + return DefaultValidationResult.VALID; } } @@ -80,9 +81,9 @@ public class ValidatorTypeUtilTest { public void testGetValidatorTypeWithAnonymousClass() { Assert.assertThat((Class<String>)ValidatorTypeUtil.getValidatorType(new Validator<String>() { @Override - public String validate(@Nonnull String data, @Nonnull ValueMap valueMap, Resource resource, @Nonnull ValueMap arguments) + public @Nonnull ValidationResult validate(@Nonnull String data, @Nonnull ValidationContext context, @Nonnull ValueMap arguments) throws SlingValidationException { - return null; + return DefaultValidationResult.VALID; } }), Matchers.equalTo(String.class)); @@ -98,18 +99,18 @@ public class ValidatorTypeUtilTest { public void testGetValidatorTypeWithCollectionType() { ValidatorTypeUtil.getValidatorType(new Validator<Collection<String>>() { @Override - public String validate(@Nonnull Collection<String> data, @Nonnull ValueMap valueMap, Resource resource, @Nonnull ValueMap arguments) + public @Nonnull ValidationResult validate(@Nonnull Collection<String> data, @Nonnull ValidationContext context, @Nonnull ValueMap arguments) throws SlingValidationException { - return null; + return DefaultValidationResult.VALID; } }); } private class InnerStringValidatorWithAdditionalBaseClass extends GenericTypeParameterBaseClass<Integer> implements Validator<String> { @Override - public String validate(@Nonnull String data, @Nonnull ValueMap valueMap, Resource resource, @Nonnull ValueMap arguments) + public @Nonnull ValidationResult validate(@Nonnull String data, @Nonnull ValidationContext context, @Nonnull ValueMap arguments) throws SlingValidationException { - return null; + return DefaultValidationResult.VALID; } } Modified: sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/AbstractValidatorWithAdditionalType.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/AbstractValidatorWithAdditionalType.java?rev=1720802&r1=1720801&r2=1720802&view=diff ============================================================================== --- sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/AbstractValidatorWithAdditionalType.java (original) +++ sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/AbstractValidatorWithAdditionalType.java Fri Dec 18 14:50:39 2015 @@ -18,7 +18,7 @@ */ package org.apache.sling.validation.impl.util.examplevalidators; -import org.apache.sling.validation.Validator; +import org.apache.sling.validation.spi.Validator; public abstract class AbstractValidatorWithAdditionalType<A,T,B> implements Validator<T>{ public abstract A getA(); Modified: sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/DateValidator.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/DateValidator.java?rev=1720802&r1=1720801&r2=1720802&view=diff ============================================================================== --- sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/DateValidator.java (original) +++ sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/DateValidator.java Fri Dec 18 14:50:39 2015 @@ -22,16 +22,18 @@ import java.util.Date; import javax.annotation.Nonnull; -import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ValueMap; -import org.apache.sling.validation.Validator; +import org.apache.sling.validation.ValidationResult; import org.apache.sling.validation.exceptions.SlingValidationException; +import org.apache.sling.validation.spi.DefaultValidationResult; +import org.apache.sling.validation.spi.ValidationContext; +import org.apache.sling.validation.spi.Validator; public class DateValidator implements Validator<Date> { @Override - public String validate(@Nonnull Date data, @Nonnull ValueMap valueMap, Resource resource, @Nonnull ValueMap arguments) throws SlingValidationException { - return null; + public @Nonnull ValidationResult validate(@Nonnull Date data, @Nonnull ValidationContext context, @Nonnull ValueMap arguments) throws SlingValidationException { + return DefaultValidationResult.VALID; } } Modified: sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/ExtendedStringValidator.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/ExtendedStringValidator.java?rev=1720802&r1=1720801&r2=1720802&view=diff ============================================================================== --- sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/ExtendedStringValidator.java (original) +++ sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/ExtendedStringValidator.java Fri Dec 18 14:50:39 2015 @@ -18,19 +18,20 @@ */ package org.apache.sling.validation.impl.util.examplevalidators; -import javax.annotation.CheckForNull; import javax.annotation.Nonnull; -import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ValueMap; +import org.apache.sling.validation.ValidationResult; import org.apache.sling.validation.exceptions.SlingValidationException; +import org.apache.sling.validation.spi.DefaultValidationResult; +import org.apache.sling.validation.spi.ValidationContext; public class ExtendedStringValidator extends AbstractValidatorWithAdditionalType<Boolean, String, Integer> { @Override - public @CheckForNull String validate(@Nonnull String data, @Nonnull ValueMap valueMap, Resource resource, @Nonnull ValueMap arguments) + public @Nonnull ValidationResult validate(@Nonnull String data, @Nonnull ValidationContext context, @Nonnull ValueMap arguments) throws SlingValidationException { - return null; + return DefaultValidationResult.VALID; } @Override Modified: sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/IntegerValidator.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/IntegerValidator.java?rev=1720802&r1=1720801&r2=1720802&view=diff ============================================================================== --- sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/IntegerValidator.java (original) +++ sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/IntegerValidator.java Fri Dec 18 14:50:39 2015 @@ -20,17 +20,19 @@ package org.apache.sling.validation.impl import javax.annotation.Nonnull; -import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ValueMap; -import org.apache.sling.validation.Validator; +import org.apache.sling.validation.ValidationResult; import org.apache.sling.validation.exceptions.SlingValidationException; +import org.apache.sling.validation.spi.DefaultValidationResult; +import org.apache.sling.validation.spi.ValidationContext; +import org.apache.sling.validation.spi.Validator; public class IntegerValidator implements Validator<Integer> { @Override - public String validate(@Nonnull Integer data, @Nonnull ValueMap valueMap, Resource resource, @Nonnull ValueMap arguments) + public @Nonnull ValidationResult validate(@Nonnull Integer data, @Nonnull ValidationContext context, @Nonnull ValueMap arguments) throws SlingValidationException { - return null; + return DefaultValidationResult.VALID; } } Modified: sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/StringArrayValidator.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/StringArrayValidator.java?rev=1720802&r1=1720801&r2=1720802&view=diff ============================================================================== --- sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/StringArrayValidator.java (original) +++ sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/StringArrayValidator.java Fri Dec 18 14:50:39 2015 @@ -20,17 +20,19 @@ package org.apache.sling.validation.impl import javax.annotation.Nonnull; -import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ValueMap; -import org.apache.sling.validation.Validator; +import org.apache.sling.validation.ValidationResult; import org.apache.sling.validation.exceptions.SlingValidationException; +import org.apache.sling.validation.spi.DefaultValidationResult; +import org.apache.sling.validation.spi.ValidationContext; +import org.apache.sling.validation.spi.Validator; public class StringArrayValidator implements Validator<String[]> { @Override - public String validate(@Nonnull String[] data, @Nonnull ValueMap valueMap, Resource resource, @Nonnull ValueMap arguments) + public @Nonnull ValidationResult validate(@Nonnull String[] data, @Nonnull ValidationContext context, @Nonnull ValueMap arguments) throws SlingValidationException { - return null; + return DefaultValidationResult.VALID; } } Modified: sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/StringValidator.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/StringValidator.java?rev=1720802&r1=1720801&r2=1720802&view=diff ============================================================================== --- sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/StringValidator.java (original) +++ sling/trunk/bundles/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/StringValidator.java Fri Dec 18 14:50:39 2015 @@ -20,17 +20,19 @@ package org.apache.sling.validation.impl import javax.annotation.Nonnull; -import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ValueMap; -import org.apache.sling.validation.Validator; +import org.apache.sling.validation.ValidationResult; import org.apache.sling.validation.exceptions.SlingValidationException; +import org.apache.sling.validation.spi.DefaultValidationResult; +import org.apache.sling.validation.spi.ValidationContext; +import org.apache.sling.validation.spi.Validator; public class StringValidator implements Validator<String> { @Override - public String validate(@Nonnull String data, @Nonnull ValueMap valueMap, Resource resource, @Nonnull ValueMap arguments) + public @Nonnull ValidationResult validate(@Nonnull String data, @Nonnull ValidationContext context, @Nonnull ValueMap arguments) throws SlingValidationException { - return null; + return DefaultValidationResult.VALID; } } Modified: sling/trunk/bundles/extensions/validation/examples/src/main/java/org/apache/sling/validation/examples/models/UserModel.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/validation/examples/src/main/java/org/apache/sling/validation/examples/models/UserModel.java?rev=1720802&r1=1720801&r2=1720802&view=diff ============================================================================== --- sling/trunk/bundles/extensions/validation/examples/src/main/java/org/apache/sling/validation/examples/models/UserModel.java (original) +++ sling/trunk/bundles/extensions/validation/examples/src/main/java/org/apache/sling/validation/examples/models/UserModel.java Fri Dec 18 14:50:39 2015 @@ -18,7 +18,7 @@ */ package org.apache.sling.validation.examples.models; -import java.util.HashMap; +import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -27,6 +27,7 @@ import javax.inject.Inject; import org.apache.sling.api.resource.Resource; import org.apache.sling.models.annotations.Model; +import org.apache.sling.validation.ValidationFailure; import org.apache.sling.validation.ValidationResult; import org.apache.sling.validation.ValidationService; import org.apache.sling.validation.model.ValidationModel; @@ -37,7 +38,7 @@ public class UserModel { private static final String INVALID = "INVALID"; private Resource resource; - private Map<String, List<String>> errors = new HashMap<String, List<String>>(); + private List<ValidationFailure> errors = new LinkedList<ValidationFailure>(); @Inject private ValidationService validationService; @@ -74,7 +75,7 @@ public class UserModel { return isAdmin; } - public Map<String, List<String>> getErrors() { + public List<ValidationFailure> getErrors() { return errors; } @@ -84,7 +85,7 @@ public class UserModel { if (model != null) { ValidationResult result = validationService.validate(resource, model); if (!result.isValid()) { - errors = result.getFailureMessages(); + errors = result.getFailures(); } } } Modified: sling/trunk/bundles/extensions/validation/examples/src/main/java/org/apache/sling/validation/examples/servlets/ModifyUserServlet.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/validation/examples/src/main/java/org/apache/sling/validation/examples/servlets/ModifyUserServlet.java?rev=1720802&r1=1720801&r2=1720802&view=diff ============================================================================== --- sling/trunk/bundles/extensions/validation/examples/src/main/java/org/apache/sling/validation/examples/servlets/ModifyUserServlet.java (original) +++ sling/trunk/bundles/extensions/validation/examples/src/main/java/org/apache/sling/validation/examples/servlets/ModifyUserServlet.java Fri Dec 18 14:50:39 2015 @@ -34,6 +34,7 @@ import org.apache.sling.api.servlets.Sli import org.apache.sling.commons.json.JSONArray; import org.apache.sling.commons.json.JSONException; import org.apache.sling.commons.json.JSONObject; +import org.apache.sling.validation.ValidationFailure; import org.apache.sling.validation.ValidationResult; import org.apache.sling.validation.ValidationService; import org.apache.sling.validation.model.ValidationModel; @@ -70,16 +71,14 @@ public class ModifyUserServlet extends S JSONObject json = new JSONObject(); try { json.put("success", false); - JSONObject messages = new JSONObject(); - for (Map.Entry<String, List<String>> entry : vr.getFailureMessages().entrySet()) { - String key = entry.getKey(); - JSONArray errors = new JSONArray(); - for (String message : entry.getValue()) { - errors.put(message); - } - messages.put(key, errors); + JSONArray failures = new JSONArray(); + for (ValidationFailure failure : vr.getFailures()) { + JSONObject failureJson = new JSONObject(); + failureJson.put("message", failure.getMessage()); + failureJson.put("location", failure.getLocation()); + failures.put(failureJson); } - json.put("messages", messages); + json.put("failures", failures); response.getWriter().print(json.toString()); response.setStatus(400); } catch (JSONException e) { Modified: sling/trunk/bundles/extensions/validation/examples/src/main/resources/SLING-INF/apps/validationdemo/components/user/user.jsp URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/validation/examples/src/main/resources/SLING-INF/apps/validationdemo/components/user/user.jsp?rev=1720802&r1=1720801&r2=1720802&view=diff ============================================================================== --- sling/trunk/bundles/extensions/validation/examples/src/main/resources/SLING-INF/apps/validationdemo/components/user/user.jsp (original) +++ sling/trunk/bundles/extensions/validation/examples/src/main/resources/SLING-INF/apps/validationdemo/components/user/user.jsp Fri Dec 18 14:50:39 2015 @@ -19,6 +19,7 @@ java.util.Map, java.util.List, org.apache.sling.api.resource.Resource, + org.apache.sling.validation.ValidationFailure, org.apache.sling.validation.examples.models.UserModel "%> <%@taglib prefix="sling" uri="http://sling.apache.org/taglibs/sling" %> @@ -46,14 +47,10 @@ </table> <h3>Validation Errors</h3> <% - for (Map.Entry<String, List<String>> entry : user.getErrors().entrySet()) { + for (ValidationFailure error : user.getErrors()) { %> -<span><strong>Key:</strong> <%= entry.getKey() %></span><br> +<span><strong>Key:</strong> <%= error.getLocation() %></span><br> +<span><%= error.getMessage() %></span><br> <% - for (String message : entry.getValue()) { -%> -<span><%= message %></span><br> -<% - } } %> \ No newline at end of file Modified: sling/trunk/bundles/extensions/validation/test-services/src/main/java/org/apache/sling/validation/testservices/ValidationPostResponse.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/validation/test-services/src/main/java/org/apache/sling/validation/testservices/ValidationPostResponse.java?rev=1720802&r1=1720801&r2=1720802&view=diff ============================================================================== --- sling/trunk/bundles/extensions/validation/test-services/src/main/java/org/apache/sling/validation/testservices/ValidationPostResponse.java (original) +++ sling/trunk/bundles/extensions/validation/test-services/src/main/java/org/apache/sling/validation/testservices/ValidationPostResponse.java Fri Dec 18 14:50:39 2015 @@ -25,9 +25,11 @@ import java.util.Map; import javax.servlet.http.HttpServletResponse; +import org.apache.sling.commons.json.JSONArray; import org.apache.sling.commons.json.JSONException; import org.apache.sling.commons.json.JSONObject; import org.apache.sling.servlets.post.AbstractPostResponse; +import org.apache.sling.validation.ValidationFailure; import org.apache.sling.validation.ValidationResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -50,9 +52,14 @@ public class ValidationPostResponse exte if (validationResult != null) { try { jsonResponse.put("valid", validationResult.isValid()); - for (Map.Entry<String, List<String>> entry : validationResult.getFailureMessages().entrySet()) { - jsonResponse.put(entry.getKey(), entry.getValue()); + JSONArray failures = new JSONArray(); + for (ValidationFailure failure : validationResult.getFailures()) { + JSONObject failureJson = new JSONObject(); + failureJson.put("message", failure.getMessage()); + failureJson.put("location", failure.getLocation()); + failures.put(failureJson); } + jsonResponse.put("failures", failures); } catch (JSONException e) { LOG.error("JSON error during response send operation.", e); }
