You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bval.apache.org by mb...@apache.org on 2018/02/21 23:21:42 UTC

[1/5] bval git commit: Oracle compiler complaint

Repository: bval
Updated Branches:
  refs/heads/bv2 65886272a -> f09af4ddb


Oracle compiler complaint


Project: http://git-wip-us.apache.org/repos/asf/bval/repo
Commit: http://git-wip-us.apache.org/repos/asf/bval/commit/c6c0c48f
Tree: http://git-wip-us.apache.org/repos/asf/bval/tree/c6c0c48f
Diff: http://git-wip-us.apache.org/repos/asf/bval/diff/c6c0c48f

Branch: refs/heads/bv2
Commit: c6c0c48f21f0740e1833d1e88124338eb4ef780f
Parents: 6588627
Author: Matt Benson <mb...@apache.org>
Authored: Wed Feb 21 16:40:36 2018 -0600
Committer: Matt Benson <mb...@apache.org>
Committed: Wed Feb 21 16:40:36 2018 -0600

----------------------------------------------------------------------
 .../java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/bval/blob/c6c0c48f/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java b/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
index df99bf9..3e67cee 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintAnnotationAttributes.java
@@ -134,7 +134,7 @@ public enum ConstraintAnnotationAttributes {
     public <C extends Annotation> Worker<C> analyze(final Class<C> clazz) {
         if (clazz.getName().startsWith("javax.validation.constraint.")) { // cache only APIs classes to avoid memory leaks
             @SuppressWarnings("unchecked")
-            final Worker<C> w = (Worker<C>) WORKER_CACHE.computeIfAbsent(clazz, Worker::new);
+            final Worker<C> w = (Worker<C>) WORKER_CACHE.computeIfAbsent((Class<?>) clazz, Worker::new);
             return w;
         }
         return new Worker<C>(clazz);


[5/5] bval git commit: TCK test fixes

Posted by mb...@apache.org.
TCK test fixes


Project: http://git-wip-us.apache.org/repos/asf/bval/repo
Commit: http://git-wip-us.apache.org/repos/asf/bval/commit/f09af4dd
Tree: http://git-wip-us.apache.org/repos/asf/bval/tree/f09af4dd
Diff: http://git-wip-us.apache.org/repos/asf/bval/diff/f09af4dd

Branch: refs/heads/bv2
Commit: f09af4ddb73d636cc4ce3748295ef932f8ee9e56
Parents: 2850b94
Author: Matt Benson <mb...@apache.org>
Authored: Wed Feb 21 17:21:33 2018 -0600
Committer: Matt Benson <mb...@apache.org>
Committed: Wed Feb 21 17:21:33 2018 -0600

----------------------------------------------------------------------
 .../ComputeConstraintValidatorClass.java        | 15 +++--
 .../bval/jsr/metadata/ReflectionBuilder.java    | 68 ++++++++++++++------
 2 files changed, 60 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/bval/blob/f09af4dd/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ComputeConstraintValidatorClass.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ComputeConstraintValidatorClass.java b/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ComputeConstraintValidatorClass.java
index 64d913f..d2595ea 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ComputeConstraintValidatorClass.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ComputeConstraintValidatorClass.java
@@ -23,6 +23,7 @@ import java.lang.reflect.Type;
 import java.lang.reflect.WildcardType;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 import java.util.function.Function;
 import java.util.function.Supplier;
@@ -139,7 +140,7 @@ class ComputeConstraintValidatorClass<A extends Annotation>
         @SuppressWarnings("unchecked")
         final Class<A> constraintType = (Class<A>) constraint.annotationType();
 
-        Exceptions.raiseIf(set.size() > 1 || !composed && set.isEmpty(), UnexpectedTypeException::new,
+        Exceptions.raiseIf(set.size() > 1 || !composed && set.isEmpty(), ConstraintDefinitionException::new,
             "%d cross-parameter %ss found for constraint type %s", set.size(), CV, constraintType);
 
         final Class<? extends ConstraintValidator<A, ?>> result = set.iterator().next().getType();
@@ -153,10 +154,14 @@ class ComputeConstraintValidatorClass<A extends Annotation>
     private Class<? extends ConstraintValidator<A, ?>> findAnnotatedElementValidator(
         Set<ConstraintValidatorInfo<A>> infos) {
 
-        final Map<Class<?>, Class<? extends ConstraintValidator<?, ?>>> validators =
-            infos.stream().filter(info -> info.getSupportedTargets().contains(ValidationTarget.ANNOTATED_ELEMENT))
-                .map(ConstraintValidatorInfo::getType)
-                .collect(Collectors.toMap(ComputeConstraintValidatorClass::getValidatedType, Function.identity()));
+        final Map<Class<?>, Class<? extends ConstraintValidator<?, ?>>> validators = infos.stream()
+            .filter(info -> info.getSupportedTargets().contains(ValidationTarget.ANNOTATED_ELEMENT))
+            .map(ConstraintValidatorInfo::getType).collect(
+                Collectors.toMap(ComputeConstraintValidatorClass::getValidatedType, Function.identity(), (v1, v2) -> {
+                    Exceptions.raiseUnless(Objects.equals(v1, v2), UnexpectedTypeException::new,
+                        "Detected collision of constraint and target type between %s and %s", v1, v2);
+                    return v1;
+                }));
 
         final Map<Type, Class<? extends ConstraintValidator<?, ?>>> candidates = new HashMap<>();
 

http://git-wip-us.apache.org/repos/asf/bval/blob/f09af4dd/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/ReflectionBuilder.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/ReflectionBuilder.java b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/ReflectionBuilder.java
index fc21ea7..776012d 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/ReflectionBuilder.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/ReflectionBuilder.java
@@ -40,6 +40,8 @@ import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 import java.util.stream.Stream;
 
+import javax.validation.ConstraintDeclarationException;
+import javax.validation.ConstraintTarget;
 import javax.validation.GroupSequence;
 import javax.validation.Valid;
 import javax.validation.constraintvalidation.ValidationTarget;
@@ -51,6 +53,7 @@ import org.apache.bval.jsr.descriptor.GroupConversion;
 import org.apache.bval.jsr.util.AnnotationsManager;
 import org.apache.bval.jsr.util.Methods;
 import org.apache.bval.jsr.util.ToUnmodifiable;
+import org.apache.bval.util.Exceptions;
 import org.apache.bval.util.ObjectUtils;
 import org.apache.bval.util.Validate;
 import org.apache.bval.util.reflection.Reflection;
@@ -209,7 +212,7 @@ public class ReflectionBuilder {
 
                 @Override
                 public Annotation[] getDeclaredConstraints(Metas<E> meta) {
-                    return getConstraints(meta, ValidationTarget.ANNOTATED_ELEMENT);
+                    return getConstraints(ConstraintTarget.RETURN_VALUE);
                 }
             };
         }
@@ -219,44 +222,73 @@ public class ReflectionBuilder {
             return new ReflectionBuilder.ForElement<E>(meta) {
                 @Override
                 public Annotation[] getDeclaredConstraints(Metas<E> meta) {
-                    return getConstraints(meta, ValidationTarget.PARAMETERS);
+                    return getConstraints(ConstraintTarget.PARAMETERS);
                 }
             };
         }
 
-        private Annotation[] getConstraints(Metas<E> ignored, ValidationTarget validationTarget) {
-            return Optional.of(getConstraintsByTarget(meta)).map(m -> m.get(validationTarget))
+        private Annotation[] getConstraints(ConstraintTarget constraintTarget) {
+            return Optional.of(getConstraintsByTarget()).map(m -> m.get(constraintTarget))
                 .map(l -> l.toArray(new Annotation[l.size()])).orElse(ObjectUtils.EMPTY_ANNOTATION_ARRAY);
         }
 
-        private Map<ValidationTarget, List<Annotation>> getConstraintsByTarget(Metas<E> ignored) {
+        private Map<ConstraintTarget, List<Annotation>> getConstraintsByTarget() {
             final Annotation[] declaredConstraints = AnnotationsManager.getDeclaredConstraints(meta);
             if (ObjectUtils.isEmpty(declaredConstraints)) {
                 return Collections.emptyMap();
             }
-            final Map<ValidationTarget, List<Annotation>> result = new EnumMap<>(ValidationTarget.class);
+            final Map<ConstraintTarget, List<Annotation>> result = new EnumMap<>(ConstraintTarget.class);
 
             for (Annotation constraint : declaredConstraints) {
                 final Class<? extends Annotation> constraintType = constraint.annotationType();
-                final Optional<ValidationTarget> explicitTarget =
+                final Optional<ConstraintTarget> explicitTarget =
                     Optional.of(ConstraintAnnotationAttributes.VALIDATION_APPLIES_TO.analyze(constraintType))
-                        .filter(ConstraintAnnotationAttributes.Worker::isValid).map(w -> w.read(constraint));
+                        .filter(ConstraintAnnotationAttributes.Worker::isValid)
+                        .<ConstraintTarget> map(w -> w.read(constraint)).filter(et -> et != ConstraintTarget.IMPLICIT);
 
-                final ValidationTarget target = explicitTarget.orElseGet(() -> {
-                    final Set<ValidationTarget> supportedTargets =
-                        validatorFactory.getAnnotationsManager().supportedTargets(constraintType);
-
-                    Validate.validState(supportedTargets.size() == 1,
-                        "Found %d possible %s types for constraint type %s and no explicit assignment via #%s()",
-                        supportedTargets.size(), ValidationTarget.class.getSimpleName(), constraintType.getName(),
-                        ConstraintAnnotationAttributes.VALIDATION_APPLIES_TO.getAttributeName());
+                final ConstraintTarget target;
 
-                    return supportedTargets.iterator().next();
-                });
+                if (explicitTarget.isPresent()) {
+                    target = explicitTarget.get();
+                } else {
+                    final Set<ValidationTarget> supportedTargets =
+                            validatorFactory.getAnnotationsManager().supportedTargets(constraintType);
+
+                    if (supportedTargets.size() == 1) {
+                        final ValidationTarget validationTarget = supportedTargets.iterator().next();
+                        switch (validationTarget) {
+                        case PARAMETERS:
+                            target = ConstraintTarget.PARAMETERS;
+                            break;
+                        case ANNOTATED_ELEMENT:
+                            target = ConstraintTarget.RETURN_VALUE;
+                            break;
+                        default:
+                            throw Exceptions.create(IllegalStateException::new, "Unknown %s %s for %s",
+                                ValidationTarget.class.getSimpleName(), validationTarget, constraintType);
+                        }
+                    } else {
+                        target = impliedConstraintTarget();
+                        Exceptions.raiseIf(target == null, ConstraintDeclarationException::new,
+                            "Found %d possible %s types for constraint type %s and no explicit assignment via #%s()",
+                            supportedTargets.size(), ValidationTarget.class.getSimpleName(), constraintType.getName(),
+                            ConstraintAnnotationAttributes.VALIDATION_APPLIES_TO.getAttributeName());
+                    }
+                }
                 result.computeIfAbsent(target, k -> new ArrayList<>()).add(constraint);
             }
             return result;
         }
+
+        private ConstraintTarget impliedConstraintTarget() {
+            if (meta.getHost().getParameterCount() == 0) {
+                return ConstraintTarget.RETURN_VALUE;
+            }
+            if (Void.TYPE.equals(meta.getType())) {
+                return ConstraintTarget.PARAMETERS;
+            }
+            return null;
+        }
     }
 
     private final ApacheValidatorFactory validatorFactory;


[4/5] bval git commit: handle missing class element in xml bean descriptor

Posted by mb...@apache.org.
handle missing class element in xml bean descriptor


Project: http://git-wip-us.apache.org/repos/asf/bval/repo
Commit: http://git-wip-us.apache.org/repos/asf/bval/commit/2850b943
Tree: http://git-wip-us.apache.org/repos/asf/bval/tree/2850b943
Diff: http://git-wip-us.apache.org/repos/asf/bval/diff/2850b943

Branch: refs/heads/bv2
Commit: 2850b943ffe62863de1b161a34697102af46009a
Parents: 31ef667
Author: Matt Benson <mb...@apache.org>
Authored: Wed Feb 21 17:21:05 2018 -0600
Committer: Matt Benson <mb...@apache.org>
Committed: Wed Feb 21 17:21:05 2018 -0600

----------------------------------------------------------------------
 .../src/main/java/org/apache/bval/jsr/metadata/XmlBuilder.java   | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/bval/blob/2850b943/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/XmlBuilder.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/XmlBuilder.java b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/XmlBuilder.java
index 37082d4..1c8c9bf 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/XmlBuilder.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/XmlBuilder.java
@@ -113,7 +113,9 @@ public class XmlBuilder {
 
         @Override
         public MetadataBuilder.ForClass getClass(Metas<Class<?>> meta) {
-            return new XmlBuilder.ForClass(descriptor.getClassType());
+            final ClassType classType = descriptor.getClassType();
+            return classType == null ? EmptyBuilder.instance().forBean().getClass(meta)
+                : new XmlBuilder.ForClass(classType);
         }
 
         @Override


[3/5] bval git commit: wrap message interpolation exceptions in ValidationException

Posted by mb...@apache.org.
wrap message interpolation exceptions in ValidationException


Project: http://git-wip-us.apache.org/repos/asf/bval/repo
Commit: http://git-wip-us.apache.org/repos/asf/bval/commit/31ef6671
Tree: http://git-wip-us.apache.org/repos/asf/bval/tree/31ef6671
Diff: http://git-wip-us.apache.org/repos/asf/bval/diff/31ef6671

Branch: refs/heads/bv2
Commit: 31ef667169360e4a415e729a0bd6d23b02dfa96b
Parents: 744b6bf
Author: Matt Benson <mb...@apache.org>
Authored: Wed Feb 21 17:20:35 2018 -0600
Committer: Matt Benson <mb...@apache.org>
Committed: Wed Feb 21 17:20:35 2018 -0600

----------------------------------------------------------------------
 .../org/apache/bval/jsr/job/ValidateBean.java     | 11 +++++------
 .../apache/bval/jsr/job/ValidateParameters.java   |  7 ++-----
 .../org/apache/bval/jsr/job/ValidateProperty.java |  6 ++----
 .../apache/bval/jsr/job/ValidateReturnValue.java  |  7 ++-----
 .../org/apache/bval/jsr/job/ValidationJob.java    | 18 +++++++++++++++++-
 5 files changed, 28 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/bval/blob/31ef6671/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateBean.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateBean.java b/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateBean.java
index dc3fab5..3331c17 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateBean.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateBean.java
@@ -49,12 +49,11 @@ public final class ValidateBean<T> extends ValidationJob<T> {
     }
 
     @Override
-    ConstraintViolationImpl<T> createViolation(String messageTemplate, ConstraintValidatorContextImpl<T> context,
-        Path propertyPath) {
-        final String message = validatorContext.getMessageInterpolator().interpolate(messageTemplate, context);
-
-        return new ConstraintViolationImpl<>(messageTemplate, message, bean, context.getFrame().getBean(), propertyPath,
-            context.getFrame().context.getValue(), context.getConstraintDescriptor(), getRootBeanClass(),
+    ConstraintViolationImpl<T> createViolation(String messageTemplate, String message,
+        ConstraintValidatorContextImpl<T> context, Path propertyPath) {
+        return new ConstraintViolationImpl<>(messageTemplate, message, bean,
+            context.getFrame().getBean(), propertyPath, context.getFrame().context.getValue(),
+            context.getConstraintDescriptor(), getRootBeanClass(),
             context.getConstraintDescriptor().unwrap(ConstraintD.class).getDeclaredOn(), null, null);
     }
 }

http://git-wip-us.apache.org/repos/asf/bval/blob/31ef6671/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateParameters.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateParameters.java b/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateParameters.java
index c0d866b..b7b88c8 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateParameters.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateParameters.java
@@ -170,11 +170,8 @@ public abstract class ValidateParameters<E extends Executable, T> extends Valida
     protected abstract T getRootBean();
 
     @Override
-    ConstraintViolationImpl<T> createViolation(String messageTemplate, ConstraintValidatorContextImpl<T> context,
-        Path propertyPath) {
-
-        final String message = validatorContext.getMessageInterpolator().interpolate(messageTemplate, context);
-
+    ConstraintViolationImpl<T> createViolation(String messageTemplate, String message,
+        ConstraintValidatorContextImpl<T> context, Path propertyPath) {
         return new ConstraintViolationImpl<T>(messageTemplate, message, getRootBean(), context.getFrame().getBean(),
             propertyPath, context.getFrame().context.getValue(), context.getConstraintDescriptor(), getRootBeanClass(),
             context.getConstraintDescriptor().unwrap(ConstraintD.class).getDeclaredOn(), null, parameterValues);

http://git-wip-us.apache.org/repos/asf/bval/blob/31ef6671/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateProperty.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateProperty.java b/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateProperty.java
index a8fbdbc..67e90ca 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateProperty.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateProperty.java
@@ -511,10 +511,8 @@ public final class ValidateProperty<T> extends ValidationJob<T> {
     }
 
     @Override
-    ConstraintViolationImpl<T> createViolation(String messageTemplate, ConstraintValidatorContextImpl<T> context,
-        Path propertyPath) {
-        final String message = validatorContext.getMessageInterpolator().interpolate(messageTemplate, context);
-
+    ConstraintViolationImpl<T> createViolation(String messageTemplate, String message,
+        ConstraintValidatorContextImpl<T> context, Path propertyPath) {
         return new ConstraintViolationImpl<>(messageTemplate, message, rootBean, context.getFrame().getBean(),
             propertyPath, context.getFrame().context.getValue(), context.getConstraintDescriptor(), rootBeanClass,
             context.getConstraintDescriptor().unwrap(ConstraintD.class).getDeclaredOn(), null, null);

http://git-wip-us.apache.org/repos/asf/bval/blob/31ef6671/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateReturnValue.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateReturnValue.java b/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateReturnValue.java
index 1db6099..51e5fc3 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateReturnValue.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidateReturnValue.java
@@ -126,11 +126,8 @@ public abstract class ValidateReturnValue<E extends Executable, T> extends Valid
     }
 
     @Override
-    ConstraintViolationImpl<T> createViolation(String messageTemplate, ConstraintValidatorContextImpl<T> context,
-        Path propertyPath) {
-
-        final String message = validatorContext.getMessageInterpolator().interpolate(messageTemplate, context);
-
+    ConstraintViolationImpl<T> createViolation(String messageTemplate, String message,
+        ConstraintValidatorContextImpl<T> context, Path propertyPath) {
         return new ConstraintViolationImpl<>(messageTemplate, message, getRootBean(), context.getFrame().getBean(),
             propertyPath, context.getFrame().context.getValue(), context.getConstraintDescriptor(), getRootBeanClass(),
             context.getConstraintDescriptor().unwrap(ConstraintD.class).getDeclaredOn(), returnValue, null);

http://git-wip-us.apache.org/repos/asf/bval/blob/31ef6671/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidationJob.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidationJob.java b/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidationJob.java
index 9221184..d0e4ec7 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidationJob.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/job/ValidationJob.java
@@ -38,6 +38,7 @@ import java.util.stream.Stream;
 
 import javax.validation.ConstraintValidator;
 import javax.validation.ConstraintViolation;
+import javax.validation.MessageInterpolator;
 import javax.validation.Path;
 import javax.validation.TraversableResolver;
 import javax.validation.UnexpectedTypeException;
@@ -371,10 +372,25 @@ public abstract class ValidationJob<T> {
             .getBeanDescriptor(Validate.notNull(bean, "bean").getClass());
     }
 
+    final ConstraintViolationImpl<T> createViolation(String messageTemplate, ConstraintValidatorContextImpl<T> context,
+        Path propertyPath) {
+        return createViolation(messageTemplate, interpolate(messageTemplate, context), context, propertyPath);
+    }
+
     abstract ConstraintViolationImpl<T> createViolation(String messageTemplate,
-        ConstraintValidatorContextImpl<T> context, Path propertyPath);
+        String message, ConstraintValidatorContextImpl<T> context, Path propertyPath);
 
     protected abstract Frame<?> computeBaseFrame();
 
     protected abstract Class<T> getRootBeanClass();
+
+    private final String interpolate(String messageTemplate, MessageInterpolator.Context context) {
+        try {
+            return validatorContext.getMessageInterpolator().interpolate(messageTemplate, context);
+        } catch (ValidationException e) {
+            throw e;
+        } catch (Exception e) {
+            throw new ValidationException(e);
+        }
+    }
 }


[2/5] bval git commit: validate length of supportedTargets()

Posted by mb...@apache.org.
validate length of supportedTargets()


Project: http://git-wip-us.apache.org/repos/asf/bval/repo
Commit: http://git-wip-us.apache.org/repos/asf/bval/commit/744b6bf8
Tree: http://git-wip-us.apache.org/repos/asf/bval/tree/744b6bf8
Diff: http://git-wip-us.apache.org/repos/asf/bval/diff/744b6bf8

Branch: refs/heads/bv2
Commit: 744b6bf8033a67aad778f78a6351d0ccf45b5ab9
Parents: c6c0c48
Author: Matt Benson <mb...@apache.org>
Authored: Wed Feb 21 16:41:24 2018 -0600
Committer: Matt Benson <mb...@apache.org>
Committed: Wed Feb 21 16:41:24 2018 -0600

----------------------------------------------------------------------
 .../src/main/java/org/apache/bval/jsr/ConstraintCached.java  | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/bval/blob/744b6bf8/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintCached.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintCached.java b/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintCached.java
index a1f3924..3a89560 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintCached.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintCached.java
@@ -28,10 +28,12 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.Optional;
 import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
+import javax.validation.ConstraintDefinitionException;
 import javax.validation.ConstraintValidator;
 import javax.validation.constraintvalidation.SupportedValidationTarget;
 import javax.validation.constraintvalidation.ValidationTarget;
@@ -41,6 +43,7 @@ import org.apache.bval.jsr.metadata.CompositeValidatorMappingProvider;
 import org.apache.bval.jsr.metadata.DualValidationMappingProvider;
 import org.apache.bval.jsr.metadata.ValidatorMappingProvider;
 import org.apache.bval.jsr.util.ToUnmodifiable;
+import org.apache.bval.util.Exceptions;
 import org.apache.bval.util.Lazy;
 import org.apache.bval.util.ObjectUtils;
 import org.apache.bval.util.Validate;
@@ -67,9 +70,12 @@ public class ConstraintCached {
             super();
             this.type = Validate.notNull(type);
             final SupportedValidationTarget svt = type.getAnnotation(SupportedValidationTarget.class);
-
+            
             supportedTargets = svt == null ? DEFAULT_VALIDATION_TARGETS
                 : Collections.unmodifiableSet(EnumSet.copyOf(Arrays.asList(svt.value())));
+
+            Exceptions.raiseIf(supportedTargets.isEmpty(), ConstraintDefinitionException::new,
+                "Illegally specified 0-length %s value on %s", SupportedValidationTarget.class.getSimpleName(), type);
         }
 
         public Class<? extends ConstraintValidator<T, ?>> getType() {