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/03/27 16:49:01 UTC
[1/5] bval git commit: ws
Repository: bval
Updated Branches:
refs/heads/bv2 5e43d7ea6 -> 32e4b4c03
ws
Project: http://git-wip-us.apache.org/repos/asf/bval/repo
Commit: http://git-wip-us.apache.org/repos/asf/bval/commit/66e97149
Tree: http://git-wip-us.apache.org/repos/asf/bval/tree/66e97149
Diff: http://git-wip-us.apache.org/repos/asf/bval/diff/66e97149
Branch: refs/heads/bv2
Commit: 66e971490c320cca6ad4e23f4c436086c194a4a3
Parents: 5e43d7e
Author: Matt Benson <mb...@apache.org>
Authored: Tue Mar 27 09:58:58 2018 -0500
Committer: Matt Benson <mb...@apache.org>
Committed: Tue Mar 27 10:07:33 2018 -0500
----------------------------------------------------------------------
.../main/java/org/apache/bval/jsr/metadata/ReflectionBuilder.java | 2 +-
.../src/main/java/org/apache/bval/jsr/metadata/XmlBuilder.java | 1 -
2 files changed, 1 insertion(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/bval/blob/66e97149/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 419f961..338e1d2 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
@@ -253,7 +253,7 @@ public class ReflectionBuilder {
target = explicitTarget.get();
} else {
final Set<ValidationTarget> supportedTargets =
- validatorFactory.getAnnotationsManager().supportedTargets(constraintType);
+ validatorFactory.getAnnotationsManager().supportedTargets(constraintType);
if (supportedTargets.size() == 1) {
final ValidationTarget validationTarget = supportedTargets.iterator().next();
http://git-wip-us.apache.org/repos/asf/bval/blob/66e97149/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 7a08525..f05d596 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
@@ -552,7 +552,6 @@ public class XmlBuilder {
ConstraintAnnotationAttributes.VALIDATION_APPLIES_TO.getAttributeName())) {
annoBuilder.setValidationAppliesTo(target);
}
-
for (final ElementType elementType : constraint.getElement()) {
final String name = elementType.getName();
checkValidName(name);
[4/5] bval git commit: arrays inherit Object for CV computation
purposes
Posted by mb...@apache.org.
arrays inherit Object for CV computation purposes
Project: http://git-wip-us.apache.org/repos/asf/bval/repo
Commit: http://git-wip-us.apache.org/repos/asf/bval/commit/237fb504
Tree: http://git-wip-us.apache.org/repos/asf/bval/tree/237fb504
Diff: http://git-wip-us.apache.org/repos/asf/bval/diff/237fb504
Branch: refs/heads/bv2
Commit: 237fb504c7fb5e7c72ef29d7795bf99c14d878b5
Parents: e135a11
Author: Matt Benson <mb...@apache.org>
Authored: Tue Mar 27 11:47:59 2018 -0500
Committer: Matt Benson <mb...@apache.org>
Committed: Tue Mar 27 11:47:59 2018 -0500
----------------------------------------------------------------------
.../apache/bval/jsr/job/ComputeConstraintValidatorClass.java | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/bval/blob/237fb504/bval-jsr/src/main/java/org/apache/bval/jsr/job/ComputeConstraintValidatorClass.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/job/ComputeConstraintValidatorClass.java b/bval-jsr/src/main/java/org/apache/bval/jsr/job/ComputeConstraintValidatorClass.java
index d9c0b56..123754b 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/job/ComputeConstraintValidatorClass.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/job/ComputeConstraintValidatorClass.java
@@ -201,10 +201,11 @@ class ComputeConstraintValidatorClass<A extends Annotation>
final TypeWrapper w = new TypeWrapper(Reflection.primitiveToWrapper(validatedType));
Stream.Builder<Class<?>> hierarchy = Stream.builder();
Reflection.hierarchy(w.componentType, Interfaces.INCLUDE).forEach(hierarchy);
- if (validatedType.isInterface()) {
- hierarchy.accept(Object.class);
+ final Stream<Class<?>> result = hierarchy.build().map(w::unwrapArrayComponentType);
+ if (validatedType.isInterface() || validatedType.isArray()) {
+ return Stream.concat(result, Stream.of(Object.class));
}
- return hierarchy.build().map(w::unwrapArrayComponentType);
+ return result;
}
private boolean isComposed() {
[5/5] bval git commit: reject collision of getter/method in custom
metadata
Posted by mb...@apache.org.
reject collision of getter/method in custom metadata
Project: http://git-wip-us.apache.org/repos/asf/bval/repo
Commit: http://git-wip-us.apache.org/repos/asf/bval/commit/32e4b4c0
Tree: http://git-wip-us.apache.org/repos/asf/bval/tree/32e4b4c0
Diff: http://git-wip-us.apache.org/repos/asf/bval/diff/32e4b4c0
Branch: refs/heads/bv2
Commit: 32e4b4c03e7d8dda0a1cf3f78406590d88b0ca82
Parents: 237fb50
Author: Matt Benson <mb...@apache.org>
Authored: Tue Mar 27 11:48:31 2018 -0500
Committer: Matt Benson <mb...@apache.org>
Committed: Tue Mar 27 11:48:31 2018 -0500
----------------------------------------------------------------------
.../apache/bval/jsr/metadata/MetadataBuilders.java | 15 +++++++++++++++
.../main/java/org/apache/bval/jsr/util/Methods.java | 14 ++++++++++++--
2 files changed, 27 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/bval/blob/32e4b4c0/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/MetadataBuilders.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/MetadataBuilders.java b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/MetadataBuilders.java
index 9b8a33b..82de16d 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/MetadataBuilders.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/MetadataBuilders.java
@@ -23,6 +23,10 @@ import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
+import javax.validation.ValidationException;
+
+import org.apache.bval.jsr.util.Methods;
+import org.apache.bval.util.Exceptions;
import org.apache.bval.util.Validate;
public class MetadataBuilders {
@@ -32,6 +36,7 @@ public class MetadataBuilders {
public <T> void registerCustomBuilder(Class<T> bean, MetadataBuilder.ForBean<T> builder) {
Validate.notNull(bean, "bean");
Validate.notNull(builder, "builder");
+ validateCustomBuilder(bean, builder);
beanBuilders.computeIfAbsent(bean, c -> new ArrayList<>()).add(builder);
}
@@ -44,4 +49,14 @@ public class MetadataBuilders {
public Set<Class<?>> getCustomizedTypes() {
return beanBuilders.keySet();
}
+
+ private <T> void validateCustomBuilder(Class<T> bean, MetadataBuilder.ForBean<T> builder) {
+ final Meta<Class<T>> meta = new Meta.ForClass<>(bean);
+ final Set<String> propertyNames = builder.getGetters(meta).keySet();
+ builder.getMethods(meta).keySet().stream().map(Signature::getName).filter(Methods::isGetter)
+ .map(Methods::propertyName).forEach(pn -> {
+ Exceptions.raiseIf(propertyNames.contains(pn), ValidationException::new,
+ "%s user metadata cannot specify both method and getter elements for %s", f -> f.args(bean, pn));
+ });
+ }
}
http://git-wip-us.apache.org/repos/asf/bval/blob/32e4b4c0/bval-jsr/src/main/java/org/apache/bval/jsr/util/Methods.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/util/Methods.java b/bval-jsr/src/main/java/org/apache/bval/jsr/util/Methods.java
index ce83c73..d0d5bdb 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/util/Methods.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/util/Methods.java
@@ -39,10 +39,20 @@ public final class Methods {
return !Void.TYPE.equals(m.getReturnType()) && m.getName().startsWith("get");
}
+ public static boolean isGetter(String methodName) {
+ Validate.notNull(methodName);
+ final int len = methodName.length();
+ return len > 2 && methodName.startsWith("is") || len > 3 && methodName.startsWith("get");
+ }
+
public static String propertyName(Method getter) {
Validate.isTrue(isGetter(getter), "%s is not a getter", getter);
- final String name = getter.getName();
- final String suffix = name.startsWith("is") ? name.substring(2) : name.substring(3);
+ return propertyName(getter.getName());
+ }
+
+ public static String propertyName(String methodName) {
+ Validate.isTrue(isGetter(methodName), "%s does not represent a property getter");
+ final String suffix = methodName.startsWith("is") ? methodName.substring(2) : methodName.substring(3);
return Introspector.decapitalize(suffix);
}
[2/5] bval git commit: implement validationAppliesTo rules
Posted by mb...@apache.org.
implement validationAppliesTo rules
Project: http://git-wip-us.apache.org/repos/asf/bval/repo
Commit: http://git-wip-us.apache.org/repos/asf/bval/commit/8864228a
Tree: http://git-wip-us.apache.org/repos/asf/bval/tree/8864228a
Diff: http://git-wip-us.apache.org/repos/asf/bval/diff/8864228a
Branch: refs/heads/bv2
Commit: 8864228a46246ef93752efef7173893271ac314a
Parents: 66e9714
Author: Matt Benson <mb...@apache.org>
Authored: Tue Mar 27 10:22:29 2018 -0500
Committer: Matt Benson <mb...@apache.org>
Committed: Tue Mar 27 10:22:29 2018 -0500
----------------------------------------------------------------------
.../apache/bval/jsr/descriptor/ConstraintD.java | 30 +++++++++++++++++++-
1 file changed, 29 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/bval/blob/8864228a/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ConstraintD.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ConstraintD.java b/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ConstraintD.java
index bd8c1f8..d8bb932 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ConstraintD.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ConstraintD.java
@@ -20,6 +20,8 @@ package org.apache.bval.jsr.descriptor;
import java.lang.annotation.Annotation;
import java.lang.annotation.ElementType;
+import java.lang.reflect.AnnotatedElement;
+import java.lang.reflect.Executable;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@@ -75,6 +77,7 @@ public class ConstraintD<A extends Annotation> implements ConstraintDescriptor<A
private final boolean reportAsSingle;
private final ValidateUnwrappedValue valueUnwrapping;
private final Map<String, Object> attributes;
+ private final ConstraintTarget validationAppliesTo;
private final Set<ConstraintDescriptor<?>> composingConstraints;
private final List<Class<? extends ConstraintValidator<A, ?>>> constraintValidatorClasses;
@@ -89,6 +92,7 @@ public class ConstraintD<A extends Annotation> implements ConstraintDescriptor<A
reportAsSingle = annotation.annotationType().isAnnotationPresent(ReportAsSingleViolation.class);
valueUnwrapping = computeValidateUnwrappedValue();
attributes = AnnotationsManager.readAttributes(annotation);
+ validationAppliesTo = computeValidationAppliesTo(meta.getElementType());
Validate.notNull(validatorFactory, "validatorFactory");
composingConstraints = computeComposingConstraints(validatorFactory);
@@ -137,7 +141,7 @@ public class ConstraintD<A extends Annotation> implements ConstraintDescriptor<A
@Override
public ConstraintTarget getValidationAppliesTo() {
- return read(ConstraintAnnotationAttributes.VALIDATION_APPLIES_TO);
+ return validationAppliesTo;
}
@Override
@@ -224,4 +228,28 @@ public class ConstraintD<A extends Annotation> implements ConstraintDescriptor<A
}
return result;
}
+
+ private ConstraintTarget computeValidationAppliesTo(ElementType elementType) {
+ final ConstraintTarget result = read(ConstraintAnnotationAttributes.VALIDATION_APPLIES_TO);
+ if (result != null) {
+ final AnnotatedElement host = meta.getHost();
+ Exceptions.raiseUnless(host instanceof Executable, ConstraintDeclarationException::new, "Illegal %s on %s",
+ result, host);
+
+ switch (result) {
+ case PARAMETERS:
+ Exceptions.raiseIf(((Executable) host).getParameterCount() == 0, ConstraintDeclarationException::new,
+ "Illegal specification of %s on %s with no parameters", result, elementType);
+ break;
+ case RETURN_VALUE:
+ Exceptions.raiseIf(Void.TYPE.equals(meta.getType()), ConstraintDeclarationException::new,
+ "Illegal %s on %s method %s", result, Void.TYPE, host);
+ break;
+ case IMPLICIT:
+ // handled in ReflectionBuilder
+ default:
+ }
+ }
+ return result;
+ }
}
[3/5] bval git commit: ws
Posted by mb...@apache.org.
ws
Project: http://git-wip-us.apache.org/repos/asf/bval/repo
Commit: http://git-wip-us.apache.org/repos/asf/bval/commit/e135a118
Tree: http://git-wip-us.apache.org/repos/asf/bval/tree/e135a118
Diff: http://git-wip-us.apache.org/repos/asf/bval/diff/e135a118
Branch: refs/heads/bv2
Commit: e135a118a9433e4e3a8605ac1658f276b13ca246
Parents: 8864228
Author: Matt Benson <mb...@apache.org>
Authored: Tue Mar 27 11:47:02 2018 -0500
Committer: Matt Benson <mb...@apache.org>
Committed: Tue Mar 27 11:47:02 2018 -0500
----------------------------------------------------------------------
.../main/java/org/apache/bval/jsr/descriptor/MetadataReader.java | 1 -
1 file changed, 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/bval/blob/e135a118/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/MetadataReader.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/MetadataReader.java b/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/MetadataReader.java
index beb0648..5f54279 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/MetadataReader.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/MetadataReader.java
@@ -101,7 +101,6 @@ class MetadataReader {
properties.computeIfAbsent(f, descriptorList).add(new PropertyD.ForField(
new MetadataReader.ForContainer<>(new Meta.ForField(fld), builder), parent));
});
-
beanBuilder.getGetters(meta).forEach((g, builder) -> {
final Method getter = Methods.getter(meta.getHost(), g);