Author: kwin Date: Mon Nov 24 15:13:44 2014 New Revision: 1641407 URL: http://svn.apache.org/r1641407 Log: SLING-4194 use ValueMap for the validator arguments instead of a simple map
Modified: sling/trunk/contrib/extensions/validation/api/src/main/java/org/apache/sling/validation/api/ParameterizedValidator.java sling/trunk/contrib/extensions/validation/api/src/main/java/org/apache/sling/validation/api/Validator.java sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ParameterizedValidatorImpl.java sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/util/JCRBuilder.java sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/validators/RegexValidator.java sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/ValidatorTypeUtilTest.java sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/DateValidator.java sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/ExtendedStringValidator.java sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/IntegerValidator.java sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/StringArrayValidator.java sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/StringValidator.java Modified: sling/trunk/contrib/extensions/validation/api/src/main/java/org/apache/sling/validation/api/ParameterizedValidator.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/validation/api/src/main/java/org/apache/sling/validation/api/ParameterizedValidator.java?rev=1641407&r1=1641406&r2=1641407&view=diff ============================================================================== --- sling/trunk/contrib/extensions/validation/api/src/main/java/org/apache/sling/validation/api/ParameterizedValidator.java (original) +++ sling/trunk/contrib/extensions/validation/api/src/main/java/org/apache/sling/validation/api/ParameterizedValidator.java Mon Nov 24 15:13:44 2014 @@ -18,7 +18,7 @@ */ package org.apache.sling.validation.api; -import java.util.Map; +import org.apache.sling.api.resource.ValueMap; /** * Defines a validator instance with information about the type and the parameterization of the validator. @@ -28,7 +28,7 @@ public interface ParameterizedValidator public abstract Validator<?> getValidator(); - public abstract Map<String, String> getParameters(); + public abstract ValueMap getParameters(); public abstract Class<?> getType(); Modified: sling/trunk/contrib/extensions/validation/api/src/main/java/org/apache/sling/validation/api/Validator.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/validation/api/src/main/java/org/apache/sling/validation/api/Validator.java?rev=1641407&r1=1641406&r2=1641407&view=diff ============================================================================== --- sling/trunk/contrib/extensions/validation/api/src/main/java/org/apache/sling/validation/api/Validator.java (original) +++ sling/trunk/contrib/extensions/validation/api/src/main/java/org/apache/sling/validation/api/Validator.java Mon Nov 24 15:13:44 2014 @@ -68,5 +68,5 @@ public interface Validator <T> { * @return validation error message if validation was not successful, {@code null} otherwise. In case an empty string is returned a generic validation error message is used. * @throws org.apache.sling.validation.api.exceptions.SlingValidationException if some expected arguments are missing from the arguments map */ - String validate(T data, ValueMap valueMap, Map<String, String> arguments) throws SlingValidationException; + String validate(T data, ValueMap valueMap, ValueMap arguments) throws SlingValidationException; } Modified: sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ParameterizedValidatorImpl.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ParameterizedValidatorImpl.java?rev=1641407&r1=1641406&r2=1641407&view=diff ============================================================================== --- sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ParameterizedValidatorImpl.java (original) +++ sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ParameterizedValidatorImpl.java Mon Nov 24 15:13:44 2014 @@ -1,17 +1,16 @@ package org.apache.sling.validation.impl; -import java.util.Map; - +import org.apache.sling.api.resource.ValueMap; import org.apache.sling.validation.api.ParameterizedValidator; import org.apache.sling.validation.api.Validator; import org.apache.sling.validation.impl.util.ValidatorTypeUtil; public class ParameterizedValidatorImpl implements ParameterizedValidator { private final Validator<?> validator; - private final Map<String, String> parameters; + private final ValueMap parameters; private final Class<?> type; - public ParameterizedValidatorImpl(Validator<?> validator, Map<String, String> parameters) { + public ParameterizedValidatorImpl(Validator<?> validator, ValueMap parameters) { super(); this.validator = validator; this.parameters = parameters; @@ -31,7 +30,7 @@ public class ParameterizedValidatorImpl * @see org.apache.sling.validation.impl.ParameterizedValidator#getParameters() */ @Override - public Map<String, String> getParameters() { + public ValueMap getParameters() { return parameters; } Modified: sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/util/JCRBuilder.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/util/JCRBuilder.java?rev=1641407&r1=1641406&r2=1641407&view=diff ============================================================================== --- sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/util/JCRBuilder.java (original) +++ sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/util/JCRBuilder.java Mon Nov 24 15:13:44 2014 @@ -28,6 +28,7 @@ import java.util.Set; import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ValueMap; +import org.apache.sling.api.wrappers.ValueMapDecorator; import org.apache.sling.commons.osgi.PropertiesUtil; import org.apache.sling.validation.api.ChildResource; import org.apache.sling.validation.api.ParameterizedValidator; @@ -72,7 +73,7 @@ public class JCRBuilder { } // get type of validator String[] validatorArguments = validatorProperties.get(Constants.VALIDATOR_ARGUMENTS, String[].class); - Map<String, String> validatorArgumentsMap = new HashMap<String, String>(); + Map<String, Object> validatorArgumentsMap = new HashMap<String, Object>(); if (validatorArguments != null) { for (String arg : validatorArguments) { String[] keyValuePair = arg.split("="); @@ -82,7 +83,7 @@ public class JCRBuilder { validatorArgumentsMap.put(keyValuePair[0], keyValuePair[1]); } } - parameterizedValidators.add(new ParameterizedValidatorImpl(v, validatorArgumentsMap)); + parameterizedValidators.add(new ParameterizedValidatorImpl(v, new ValueMapDecorator(validatorArgumentsMap))); } } ResourceProperty f = new ResourcePropertyImpl(fieldName, propertyMultiple, parameterizedValidators); Modified: sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/validators/RegexValidator.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/validators/RegexValidator.java?rev=1641407&r1=1641406&r2=1641407&view=diff ============================================================================== --- sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/validators/RegexValidator.java (original) +++ sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/validators/RegexValidator.java Mon Nov 24 15:13:44 2014 @@ -18,15 +18,15 @@ */ package org.apache.sling.validation.impl.validators; +import java.util.regex.Pattern; + +import org.apache.commons.lang3.StringUtils; import org.apache.felix.scr.annotations.Component; import org.apache.felix.scr.annotations.Service; import org.apache.sling.api.resource.ValueMap; import org.apache.sling.validation.api.Validator; import org.apache.sling.validation.api.exceptions.SlingValidationException; -import java.util.Map; -import java.util.regex.Pattern; - /** * Performs regular expressions validation on the supplied data with the help of the {@link Pattern} class. This {@code Validator} expects a * mandatory parameter in the arguments map: {@link RegexValidator#REGEX_PARAM}. @@ -38,13 +38,13 @@ public class RegexValidator implements V public static final String REGEX_PARAM = "regex"; @Override - public String validate(String data, ValueMap valueMap, Map<String, String> arguments) + public String validate(String data, ValueMap valueMap, ValueMap arguments) throws SlingValidationException { if (arguments == null) { throw new SlingValidationException("Cannot perform data validation with null parameters"); } - String regex = arguments.get(REGEX_PARAM); - if (regex == null) { + String regex = arguments.get(REGEX_PARAM, ""); + if (StringUtils.isEmpty(regex)) { throw new SlingValidationException("Mandatory " + REGEX_PARAM + " is missing from the arguments map."); } Pattern pattern = Pattern.compile(regex); @@ -54,6 +54,4 @@ public class RegexValidator implements V return "Property does not match the pattern " + regex; } - - } Modified: sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/ValidatorTypeUtilTest.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/ValidatorTypeUtilTest.java?rev=1641407&r1=1641406&r2=1641407&view=diff ============================================================================== --- sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/ValidatorTypeUtilTest.java (original) +++ sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/ValidatorTypeUtilTest.java Mon Nov 24 15:13:44 2014 @@ -60,7 +60,7 @@ public class ValidatorTypeUtilTest { private class InnerStringValidator implements Validator<String> { @Override - public String validate(String data, ValueMap valueMap, Map<String, String> arguments) + public String validate(String data, ValueMap valueMap, ValueMap arguments) throws SlingValidationException { return null; } @@ -77,7 +77,7 @@ public class ValidatorTypeUtilTest { public void testGetValidatorTypeWithAnonymousClass() { Assert.assertThat((Class<String>)ValidatorTypeUtil.getValidatorType(new Validator<String>() { @Override - public String validate(String data, ValueMap valueMap, Map<String, String> arguments) + public String validate(String data, ValueMap valueMap, ValueMap arguments) throws SlingValidationException { return null; } @@ -95,7 +95,7 @@ public class ValidatorTypeUtilTest { public void testGetValidatorTypeWithCollectionType() { ValidatorTypeUtil.getValidatorType(new Validator<Collection<String>>() { @Override - public String validate(Collection<String> data, ValueMap valueMap, Map<String, String> arguments) + public String validate(Collection<String> data, ValueMap valueMap, ValueMap arguments) throws SlingValidationException { return null; } @@ -104,7 +104,7 @@ public class ValidatorTypeUtilTest { private class InnerStringValidatorWithAdditionalBaseClass extends GenericTypeParameterBaseClass<Integer> implements Validator<String> { @Override - public String validate(String data, ValueMap valueMap, Map<String, String> arguments) + public String validate(String data, ValueMap valueMap, ValueMap arguments) throws SlingValidationException { return null; } Modified: sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/DateValidator.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/DateValidator.java?rev=1641407&r1=1641406&r2=1641407&view=diff ============================================================================== --- sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/DateValidator.java (original) +++ sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/DateValidator.java Mon Nov 24 15:13:44 2014 @@ -19,7 +19,6 @@ package org.apache.sling.validation.impl.util.examplevalidators; import java.util.Date; -import java.util.Map; import org.apache.sling.api.resource.ValueMap; import org.apache.sling.validation.api.Validator; @@ -28,7 +27,7 @@ import org.apache.sling.validation.api.e public class DateValidator implements Validator<Date> { @Override - public String validate(Date data, ValueMap valueMap, Map<String, String> arguments) throws SlingValidationException { + public String validate(Date data, ValueMap valueMap, ValueMap arguments) throws SlingValidationException { return null; } Modified: sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/ExtendedStringValidator.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/ExtendedStringValidator.java?rev=1641407&r1=1641406&r2=1641407&view=diff ============================================================================== --- sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/ExtendedStringValidator.java (original) +++ sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/ExtendedStringValidator.java Mon Nov 24 15:13:44 2014 @@ -18,29 +18,24 @@ */ package org.apache.sling.validation.impl.util.examplevalidators; -import java.util.Map; - import org.apache.sling.api.resource.ValueMap; import org.apache.sling.validation.api.exceptions.SlingValidationException; public class ExtendedStringValidator extends AbstractValidatorWithAdditionalType<Boolean, String, Integer> { @Override - public String validate(String data, ValueMap valueMap, Map<String, String> arguments) + public String validate(String data, ValueMap valueMap, ValueMap arguments) throws SlingValidationException { - // TODO Auto-generated method stub return null; } @Override public Boolean getA() { - // TODO Auto-generated method stub return null; } @Override public Integer getB() { - // TODO Auto-generated method stub return null; } Modified: sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/IntegerValidator.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/IntegerValidator.java?rev=1641407&r1=1641406&r2=1641407&view=diff ============================================================================== --- sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/IntegerValidator.java (original) +++ sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/IntegerValidator.java Mon Nov 24 15:13:44 2014 @@ -18,8 +18,6 @@ */ package org.apache.sling.validation.impl.util.examplevalidators; -import java.util.Map; - import org.apache.sling.api.resource.ValueMap; import org.apache.sling.validation.api.Validator; import org.apache.sling.validation.api.exceptions.SlingValidationException; @@ -27,7 +25,7 @@ import org.apache.sling.validation.api.e public class IntegerValidator implements Validator<Integer> { @Override - public String validate(Integer data, ValueMap valueMap, Map<String, String> arguments) + public String validate(Integer data, ValueMap valueMap, ValueMap arguments) throws SlingValidationException { return null; } Modified: sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/StringArrayValidator.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/StringArrayValidator.java?rev=1641407&r1=1641406&r2=1641407&view=diff ============================================================================== --- sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/StringArrayValidator.java (original) +++ sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/StringArrayValidator.java Mon Nov 24 15:13:44 2014 @@ -18,8 +18,6 @@ */ package org.apache.sling.validation.impl.util.examplevalidators; -import java.util.Map; - import org.apache.sling.api.resource.ValueMap; import org.apache.sling.validation.api.Validator; import org.apache.sling.validation.api.exceptions.SlingValidationException; @@ -27,7 +25,7 @@ import org.apache.sling.validation.api.e public class StringArrayValidator implements Validator<String[]> { @Override - public String validate(String[] data, ValueMap valueMap, Map<String, String> arguments) + public String validate(String[] data, ValueMap valueMap, ValueMap arguments) throws SlingValidationException { return null; } Modified: sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/StringValidator.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/StringValidator.java?rev=1641407&r1=1641406&r2=1641407&view=diff ============================================================================== --- sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/StringValidator.java (original) +++ sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/util/examplevalidators/StringValidator.java Mon Nov 24 15:13:44 2014 @@ -18,8 +18,6 @@ */ package org.apache.sling.validation.impl.util.examplevalidators; -import java.util.Map; - import org.apache.sling.api.resource.ValueMap; import org.apache.sling.validation.api.Validator; import org.apache.sling.validation.api.exceptions.SlingValidationException; @@ -27,7 +25,7 @@ import org.apache.sling.validation.api.e public class StringValidator implements Validator<String> { @Override - public String validate(String data, ValueMap valueMap, Map<String, String> arguments) + public String validate(String data, ValueMap valueMap, ValueMap arguments) throws SlingValidationException { return null; }