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/23 21:10:54 UTC
[1/3] bval git commit: update javadoc
Repository: bval
Updated Branches:
refs/heads/bv2 d11c6d359 -> 7b3c58e00
update javadoc
Project: http://git-wip-us.apache.org/repos/asf/bval/repo
Commit: http://git-wip-us.apache.org/repos/asf/bval/commit/33e84f3c
Tree: http://git-wip-us.apache.org/repos/asf/bval/tree/33e84f3c
Diff: http://git-wip-us.apache.org/repos/asf/bval/diff/33e84f3c
Branch: refs/heads/bv2
Commit: 33e84f3c986d84e1d82e0f956c63d10419fcf685
Parents: d11c6d3
Author: Matt Benson <mb...@apache.org>
Authored: Fri Mar 23 14:36:30 2018 -0500
Committer: Matt Benson <mb...@apache.org>
Committed: Fri Mar 23 14:36:30 2018 -0500
----------------------------------------------------------------------
bval-jsr/src/main/java/org/apache/bval/util/Exceptions.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/bval/blob/33e84f3c/bval-jsr/src/main/java/org/apache/bval/util/Exceptions.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/util/Exceptions.java b/bval-jsr/src/main/java/org/apache/bval/util/Exceptions.java
index ba3fee8..94073c5 100644
--- a/bval-jsr/src/main/java/org/apache/bval/util/Exceptions.java
+++ b/bval-jsr/src/main/java/org/apache/bval/util/Exceptions.java
@@ -23,7 +23,7 @@ import java.util.function.Supplier;
import java.util.stream.Stream;
/**
- * Utility class for the creation and throwing of Exceptions.
+ * Utility class for sundry {@link Exception}-related tasks.
*/
public class Exceptions {
[2/3] 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/2af2f5a2
Tree: http://git-wip-us.apache.org/repos/asf/bval/tree/2af2f5a2
Diff: http://git-wip-us.apache.org/repos/asf/bval/diff/2af2f5a2
Branch: refs/heads/bv2
Commit: 2af2f5a25677e8292cebb4f31f171a1cad1ec52f
Parents: 33e84f3
Author: Matt Benson <mb...@apache.org>
Authored: Fri Mar 23 16:00:55 2018 -0500
Committer: Matt Benson <mb...@apache.org>
Committed: Fri Mar 23 16:00:55 2018 -0500
----------------------------------------------------------------------
bval-jsr/src/main/java/org/apache/bval/cdi/BValAnnotatedType.java | 1 -
1 file changed, 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/bval/blob/2af2f5a2/bval-jsr/src/main/java/org/apache/bval/cdi/BValAnnotatedType.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/cdi/BValAnnotatedType.java b/bval-jsr/src/main/java/org/apache/bval/cdi/BValAnnotatedType.java
index 2b08fe6..fa230f9 100644
--- a/bval-jsr/src/main/java/org/apache/bval/cdi/BValAnnotatedType.java
+++ b/bval-jsr/src/main/java/org/apache/bval/cdi/BValAnnotatedType.java
@@ -94,6 +94,5 @@ public class BValAnnotatedType<A> implements AnnotatedType<A> {
public String toString() {
return String.format("@%s()", BValBinding.class.getName());
}
-
}
}
[3/3] bval git commit: improve efficiency of generated
exceptions/messages
Posted by mb...@apache.org.
improve efficiency of generated exceptions/messages
Project: http://git-wip-us.apache.org/repos/asf/bval/repo
Commit: http://git-wip-us.apache.org/repos/asf/bval/commit/7b3c58e0
Tree: http://git-wip-us.apache.org/repos/asf/bval/tree/7b3c58e0
Diff: http://git-wip-us.apache.org/repos/asf/bval/diff/7b3c58e0
Branch: refs/heads/bv2
Commit: 7b3c58e005f8a4741e34bab510fa97d36ba8c8c9
Parents: 2af2f5a
Author: Matt Benson <mb...@apache.org>
Authored: Fri Mar 23 16:10:44 2018 -0500
Committer: Matt Benson <mb...@apache.org>
Committed: Fri Mar 23 16:10:44 2018 -0500
----------------------------------------------------------------------
.../jsr/ConstraintAnnotationAttributes.java | 5 ++-
.../org/apache/bval/jsr/ConstraintCached.java | 9 ++--
.../bval/jsr/ConstraintViolationImpl.java | 4 +-
.../ComputeConstraintValidatorClass.java | 23 +++++-----
.../apache/bval/jsr/descriptor/ConstraintD.java | 24 ++++++----
.../jsr/descriptor/ContainerElementTypeD.java | 7 +--
.../bval/jsr/descriptor/MetadataReader.java | 47 +++++++++++---------
.../apache/bval/jsr/groups/GroupsComputer.java | 7 ++-
.../jsr/job/ConstraintValidatorContextImpl.java | 8 ++--
.../apache/bval/jsr/job/ValidateProperty.java | 25 ++++++-----
.../bval/jsr/job/ValidateReturnValue.java | 6 +--
.../org/apache/bval/jsr/job/ValidationJob.java | 27 ++++++-----
.../bval/jsr/metadata/CompositeBuilder.java | 18 +++++---
.../bval/jsr/metadata/ContainerElementKey.java | 7 +--
.../bval/jsr/metadata/HierarchyBuilder.java | 7 +--
.../org/apache/bval/jsr/metadata/Liskov.java | 4 +-
.../bval/jsr/metadata/ReflectionBuilder.java | 11 +++--
.../jsr/metadata/ValidatorMappingProvider.java | 8 ++--
.../apache/bval/jsr/metadata/XmlBuilder.java | 7 +--
.../bval/jsr/util/AnnotationsManager.java | 22 ++++-----
.../apache/bval/jsr/util/ExecutableTypes.java | 6 ++-
.../java/org/apache/bval/jsr/util/NodeImpl.java | 2 +-
.../jsr/valueextraction/ValueExtractors.java | 6 +--
.../apache/bval/jsr/xml/AnnotationProxy.java | 7 +--
.../java/org/apache/bval/util/Exceptions.java | 44 ++++++++++++++++++
.../java/org/apache/bval/util/Validate.java | 6 ++-
26 files changed, 215 insertions(+), 132 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/bval/blob/7b3c58e0/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 f40e301..d9a1c69 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
@@ -126,8 +126,9 @@ public enum ConstraintAnnotationAttributes {
public <V> V get(Map<? super String, ? super V> map) {
@SuppressWarnings("unchecked")
final V result = (V) map.get(getAttributeName());
- Exceptions.raiseUnless(TypeUtils.isInstance(result, getType()), IllegalStateException::new,
- "Invalid '%s' value: %s", getAttributeName(), result);
+ if (!TypeUtils.isInstance(result, getType())) {
+ Exceptions.raise(IllegalStateException::new, "Invalid '%s' value: %s", getAttributeName(), result);
+ }
return result;
}
http://git-wip-us.apache.org/repos/asf/bval/blob/7b3c58e0/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 faa9144..fa9e3df 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
@@ -24,13 +24,11 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.EnumSet;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
-import java.util.stream.Stream;
import javax.validation.ConstraintDefinitionException;
import javax.validation.ConstraintValidator;
@@ -44,7 +42,6 @@ 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;
/**
@@ -73,8 +70,10 @@ public class ConstraintCached {
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);
+ if (supportedTargets.isEmpty()) {
+ Exceptions.raise(ConstraintDefinitionException::new, "Illegally specified 0-length %s value on %s",
+ SupportedValidationTarget.class.getSimpleName(), type);
+ }
}
public Class<? extends ConstraintValidator<T, ?>> getType() {
http://git-wip-us.apache.org/repos/asf/bval/blob/7b3c58e0/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintViolationImpl.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintViolationImpl.java b/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintViolationImpl.java
index 15f754d..2bf6d3b 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintViolationImpl.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintViolationImpl.java
@@ -172,7 +172,9 @@ public class ConstraintViolationImpl<T> implements ConstraintViolation<T>, Seria
@Override
public <U> U unwrap(Class<U> type) {
- Exceptions.raiseUnless(type.isInstance(this), ValidationException::new, "Type %s is not supported", type);
+ if (!type.isInstance(this)) {
+ Exceptions.raise(ValidationException::new, "Type %s is not supported", type);
+ }
return type.cast(this);
}
http://git-wip-us.apache.org/repos/asf/bval/blob/7b3c58e0/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 d2595ea..820a1d8 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
@@ -64,7 +64,7 @@ class ComputeConstraintValidatorClass<A extends Annotation>
this.arrayDepth = d;
}
- Class<?> unwrap(Class<?> t) {
+ Class<?> unwrapArrayComponentType(Class<?> t) {
Exceptions.raiseUnless(t.isAssignableFrom(componentType), IllegalArgumentException::new,
"%s not assignable from %s", t, componentType);
if (arrayDepth == 0) {
@@ -80,8 +80,10 @@ class ComputeConstraintValidatorClass<A extends Annotation>
private static Class<?> getValidatedType(Class<? extends ConstraintValidator<?, ?>> validatorType) {
final Type result = TypeUtils.getTypeArguments(validatorType, ConstraintValidator.class)
.get(ConstraintValidator.class.getTypeParameters()[1]);
- Exceptions.raiseUnless(isSupported(result), ConstraintDefinitionException::new,
- "Validated type %s declared by %s %s is unsupported", result, CV, validatorType.getName());
+ if (!isSupported(result)) {
+ Exceptions.raise(ConstraintDefinitionException::new, "Validated type %s declared by %s %s is unsupported",
+ result, CV, validatorType.getName());
+ }
return TypeUtils.getRawType(result, null);
}
@@ -140,14 +142,15 @@ class ComputeConstraintValidatorClass<A extends Annotation>
@SuppressWarnings("unchecked")
final Class<A> constraintType = (Class<A>) constraint.annotationType();
- Exceptions.raiseIf(set.size() > 1 || !composed && set.isEmpty(), ConstraintDefinitionException::new,
- "%d cross-parameter %ss found for constraint type %s", set.size(), CV, constraintType);
+ final int size = set.size();
+ Exceptions.raiseIf(size > 1 || !composed && set.isEmpty(), ConstraintDefinitionException::new,
+ "%d cross-parameter %ss found for constraint type %s", size, CV, constraintType);
final Class<? extends ConstraintValidator<A, ?>> result = set.iterator().next().getType();
- Exceptions.raiseUnless(TypeUtils.isAssignable(Object[].class, getValidatedType(result)),
- ConstraintDefinitionException::new,
- "Cross-parameter %s %s does not support the validation of an object array", CV, result.getName());
-
+ if (!TypeUtils.isAssignable(Object[].class, getValidatedType(result))) {
+ Exceptions.raise(ConstraintDefinitionException::new,
+ "Cross-parameter %s %s does not support the validation of an object array", CV, result.getName());
+ }
return result;
}
@@ -199,6 +202,6 @@ 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);
- return hierarchy.build().map(w::unwrap);
+ return hierarchy.build().map(w::unwrapArrayComponentType);
}
}
http://git-wip-us.apache.org/repos/asf/bval/blob/7b3c58e0/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 8dd6db9..16007c5 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
@@ -197,7 +197,8 @@ public class ConstraintD<A extends Annotation> implements ConstraintDescriptor<A
Optional.of(constraintType).map(attr::analyze).filter(Worker::isValid).map(w -> w.<T> read(annotation));
Exceptions.raiseUnless(optionality.isOptional() || result.isPresent(), ConstraintDefinitionException::new,
- "Required attribute %s missing from constraint type %s", attr.getAttributeName(), constraintType);
+ "Required attribute %s missing from constraint type %s",
+ f -> f.args(attr.getAttributeName(), constraintType));
return result.orElse(null);
}
@@ -237,18 +238,21 @@ public class ConstraintD<A extends Annotation> implements ConstraintDescriptor<A
private Set<Class<? extends Payload>> computePayload() {
final Set<Class<? extends Payload>> result =
set(() -> read(ConstraintAnnotationAttributes.PAYLOAD, Optionality.REQUIRED));
- Exceptions.raiseIf(result.containsAll(Arrays.asList(Unwrapping.Unwrap.class, Unwrapping.Skip.class)),
- ConstraintDeclarationException::new,
- "Constraint %s declared at %s specifies conflicting value unwrapping hints", annotation, meta.getHost());
+ if (result.containsAll(Arrays.asList(Unwrapping.Unwrap.class, Unwrapping.Skip.class))) {
+ Exceptions.raise(ConstraintDeclarationException::new,
+ "Constraint %s declared at %s specifies conflicting value unwrapping hints", annotation,
+ meta.getHost());
+ }
return result;
}
private Class<?> computeValidatedType(ApacheValidatorFactory validatorFactory) {
final Class<?> rawType = TypeUtils.getRawType(meta.getType(), null);
- Exceptions.raiseIf(rawType == null, UnexpectedTypeException::new, "Could not calculate validated type from %s",
- meta.getType());
-
+ if (rawType == null) {
+ Exceptions.raise(UnexpectedTypeException::new, "Could not calculate validated type from %s",
+ meta.getType());
+ }
if (payload.contains(Unwrapping.Skip.class)) {
return rawType;
}
@@ -258,8 +262,10 @@ public class ConstraintD<A extends Annotation> implements ConstraintDescriptor<A
final boolean unwrap = payload.contains(Unwrapping.Unwrap.class);
if (valueExtractor == null) {
- Exceptions.raiseIf(unwrap, ConstraintDeclarationException::new, "No compatible %s found for %s",
- ValueExtractor.class.getSimpleName(), meta.getType());
+ if (unwrap) {
+ Exceptions.raise(ConstraintDeclarationException::new, "No compatible %s found for %s",
+ ValueExtractor.class.getSimpleName(), meta.getType());
+ }
} else {
@SuppressWarnings("unchecked")
final Class<? extends ValueExtractor<?>> extractorClass =
http://git-wip-us.apache.org/repos/asf/bval/blob/7b3c58e0/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ContainerElementTypeD.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ContainerElementTypeD.java b/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ContainerElementTypeD.java
index f8abed2..ef00edc 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ContainerElementTypeD.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ContainerElementTypeD.java
@@ -59,9 +59,10 @@ public class ContainerElementTypeD extends CascadableContainerD<CascadableContai
@Override
protected Stream<GraphContext> readImpl(GraphContext context) throws Exception {
final ValueExtractor<?> valueExtractor = context.getValidatorContext().getValueExtractors().find(key);
- Exceptions.raiseIf(valueExtractor == null, ConstraintDeclarationException::new, "No %s found for %s",
- ValueExtractor.class.getSimpleName(), key);
-
+ if (valueExtractor == null) {
+ Exceptions.raise(ConstraintDeclarationException::new, "No %s found for %s",
+ ValueExtractor.class.getSimpleName(), key);
+ }
return ExtractValues.extract(context, key, valueExtractor).stream();
}
}
http://git-wip-us.apache.org/repos/asf/bval/blob/7b3c58e0/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 83055a9..beb0648 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
@@ -105,9 +105,9 @@ class MetadataReader {
beanBuilder.getGetters(meta).forEach((g, builder) -> {
final Method getter = Methods.getter(meta.getHost(), g);
- Exceptions.raiseIf(getter == null, IllegalStateException::new,
- "Getter method for property %s not found", g);
-
+ if (getter == null) {
+ Exceptions.raise(IllegalStateException::new, "Getter method for property %s not found", g);
+ }
properties.computeIfAbsent(g, descriptorList).add(new PropertyD.ForMethod(
new MetadataReader.ForContainer<>(new Meta.ForMethod(getter), builder), parent));
});
@@ -173,27 +173,31 @@ class MetadataReader {
List<Class<?>> getGroupSequence() {
List<Class<?>> result = builder.getGroupSequence(meta);
+ final Class<T> host = meta.getHost();
if (result == null) {
// resolve group sequence/Default redefinition up class hierarchy:
- final Class<?> superclass = meta.getHost().getSuperclass();
+ final Class<?> superclass = host.getSuperclass();
if (superclass != null) {
// attempt to mock parent sequence intent by appending this type immediately after supertype:
result = ((ElementD<?, ?>) validatorFactory.getDescriptorManager().getBeanDescriptor(superclass))
.getGroupSequence();
if (result != null) {
result = new ArrayList<>(result);
- result.add(result.indexOf(superclass) + 1, meta.getHost());
+ result.add(result.indexOf(superclass) + 1, host);
}
}
}
if (result == null) {
return null;
}
- Exceptions.raiseUnless(result.contains(meta.getHost()), GroupDefinitionException::new,
- "@%s for %s must contain %<s", GroupSequence.class.getSimpleName(), meta.getHost());
- Exceptions.raiseIf(result.contains(Default.class), GroupDefinitionException::new,
- "@%s for %s must not contain %s", GroupSequence.class.getSimpleName(), meta.getHost(),
- Default.class.getName());
+ if (!result.contains(host)) {
+ Exceptions.raise(GroupDefinitionException::new, "@%s for %s must contain %<s",
+ GroupSequence.class.getSimpleName(), host);
+ }
+ if (result.contains(Default.class)) {
+ Exceptions.raise(GroupDefinitionException::new, "@%s for %s must not contain %s",
+ GroupSequence.class.getSimpleName(), host, Default.class.getName());
+ }
return Collections.unmodifiableList(result);
}
}
@@ -211,20 +215,19 @@ class MetadataReader {
Set<GroupConversion> getGroupConversions() {
final Set<GroupConversion> groupConversions = builder.getGroupConversions(meta);
if (!groupConversions.isEmpty()) {
- Exceptions.raiseUnless(isCascaded(), ConstraintDeclarationException::new,
- "@%s declared without @%s on %s", ConvertGroup.class.getSimpleName(), Valid.class.getSimpleName(),
- meta.describeHost());
-
- Exceptions.raiseIf(
- groupConversions.stream().map(GroupConversion::getFrom).distinct().count() < groupConversions
- .size(),
- ConstraintDeclarationException::new, "%s has duplicate 'from' group conversions",
- meta.describeHost());
-
+ if (!isCascaded()) {
+ Exceptions.raise(ConstraintDeclarationException::new, "@%s declared without @%s on %s",
+ ConvertGroup.class.getSimpleName(), Valid.class.getSimpleName(), meta.describeHost());
+ }
+ if (groupConversions.stream().map(GroupConversion::getFrom).distinct().count() < groupConversions
+ .size()) {
+ Exceptions.raise(ConstraintDeclarationException::new, "%s has duplicate 'from' group conversions",
+ meta.describeHost());
+ }
groupConversions.stream().map(GroupConversion::getFrom)
- .forEach(f -> Exceptions.raiseIf(f.isAnnotationPresent(GroupSequence.class),
+ .forEach(from -> Exceptions.raiseIf(from.isAnnotationPresent(GroupSequence.class),
ConstraintDeclarationException::new,
- "Invalid group conversion declared on %s from group sequence %s", meta.describeHost(), f));
+ "Invalid group conversion declared on %s from group sequence %s", f -> f.args(meta.describeHost(), from)));
}
return groupConversions;
}
http://git-wip-us.apache.org/repos/asf/bval/blob/7b3c58e0/bval-jsr/src/main/java/org/apache/bval/jsr/groups/GroupsComputer.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/groups/GroupsComputer.java b/bval-jsr/src/main/java/org/apache/bval/jsr/groups/GroupsComputer.java
index 8f4cdda..30a47cd 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/groups/GroupsComputer.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/groups/GroupsComputer.java
@@ -137,10 +137,9 @@ public class GroupsComputer {
Exceptions.raiseIf(groups.stream().anyMatch(Objects::isNull), IllegalArgumentException::new,
"Null group specified");
- for (final Class<?> clazz : groups) {
- Exceptions.raiseUnless(clazz.isInterface(), ValidationException::new,
- "A group must be an interface. %s is not.", clazz);
- }
+ groups.forEach(g -> Exceptions.raiseUnless(g.isInterface(), ValidationException::new,
+ "A group must be an interface. %s is not.", g));
+
final Groups chain = new Groups();
for (Class<?> clazz : groups) {
final GroupSequence anno = clazz.getAnnotation(GroupSequence.class);
http://git-wip-us.apache.org/repos/asf/bval/blob/7b3c58e0/bval-jsr/src/main/java/org/apache/bval/jsr/job/ConstraintValidatorContextImpl.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/job/ConstraintValidatorContextImpl.java b/bval-jsr/src/main/java/org/apache/bval/jsr/job/ConstraintValidatorContextImpl.java
index 6d4ca98..07c0c96 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/job/ConstraintValidatorContextImpl.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/job/ConstraintValidatorContextImpl.java
@@ -82,7 +82,7 @@ public class ConstraintValidatorContextImpl<T> implements ConstraintValidatorCon
@Override
public NodeBuilderDefinedContext addParameterNode(int index) {
Exceptions.raiseUnless(frame.descriptor instanceof CrossParameterDescriptor, ValidationException::new,
- "Cannot add parameter node for %s", frame.descriptor.getClass().getName());
+ "Cannot add parameter node for %s", f -> f.args(frame.descriptor.getClass().getName()));
final CrossParameterD<?, ?> crossParameter =
ComposedD.unwrap(frame.descriptor, CrossParameterD.class).findFirst().get();
@@ -175,9 +175,9 @@ public class ConstraintValidatorContextImpl<T> implements ConstraintValidatorCon
Set<ConstraintViolation<T>> getRequiredViolations() {
if (!violations.optional().isPresent()) {
- Exceptions.raiseIf(defaultConstraintViolationDisabled, ValidationException::new,
- "Expected custom constraint violation(s)");
-
+ if (defaultConstraintViolationDisabled) {
+ Exceptions.raise(ValidationException::new, "Expected custom constraint violation(s)");
+ }
addError(getDefaultConstraintMessageTemplate(), frame.context.getPath());
}
return violations.get();
http://git-wip-us.apache.org/repos/asf/bval/blob/7b3c58e0/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 fa7e0f5..ce33840 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
@@ -200,8 +200,10 @@ public final class ValidateProperty<T> extends ValidationJob<T> {
bean = (BeanD<?>) validatorContext.getDescriptorManager().getBeanDescriptor(element.getElementClass());
}
final PropertyDescriptor property = bean.getProperty(name);
- Exceptions.raiseIf(property == null, IllegalArgumentException::new, "Unknown property %s of %s", name,
- bean.getElementClass());
+ if (property == null) {
+ Exceptions.raise(IllegalArgumentException::new, "Unknown property %s of %s", name,
+ bean.getElementClass());
+ }
current = new DescriptorWrapper(property);
}
@@ -259,11 +261,8 @@ public final class ValidateProperty<T> extends ValidationJob<T> {
Optional.ofNullable(TypeUtils.getTypeArguments(type, Iterable.class).get(ITERABLE_ELEMENT))
.orElse(ITERABLE_ELEMENT);
} else {
- elementType = null;
+ throw Exceptions.create(IllegalArgumentException::new, "Unable to resolve element type of %s", type);
}
- Exceptions.raiseIf(elementType == null, IllegalArgumentException::new,
- "Unable to resolve element type of %s", type);
-
return new TypeWrapper(validatorContext, elementType);
}
@@ -380,7 +379,9 @@ public final class ValidateProperty<T> extends ValidationJob<T> {
} else {
try {
final int index = Integer.parseInt(indexOrKey);
- Exceptions.raiseIf(index < 0, IllegalArgumentException::new, "Invalid index %d", index);
+ if (index < 0) {
+ Exceptions.raise(IllegalArgumentException::new, "Invalid index %d", index);
+ }
if (o != null && TypeUtils.isArrayType(o.getClass())) {
if (Array.getLength(o) > index) {
return Array.get(o, index);
@@ -478,8 +479,9 @@ public final class ValidateProperty<T> extends ValidationJob<T> {
descriptor = (ElementD<?, ?>) validatorContext.getDescriptorManager().getBeanDescriptor(t);
} else {
final Class<?> propertyType = descriptor.getElementClass();
- Exceptions.raiseUnless(TypeUtils.isInstance(value, propertyType), IllegalArgumentException::new,
- "%s is not an instance of %s", value, propertyType);
+ if (!TypeUtils.isInstance(value, propertyType)) {
+ Exceptions.raise(IllegalArgumentException::new, "%s is not an instance of %s", value, propertyType);
+ }
}
}
@@ -489,8 +491,9 @@ public final class ValidateProperty<T> extends ValidationJob<T> {
this(new ForBeanProperty<>(validatorContext, bean), validatorContext,
(Class<T>) Validate.notNull(bean, IllegalArgumentException::new, "bean").getClass(), property, groups);
- Exceptions.raiseIf(descriptor == null, IllegalArgumentException::new,
- "Could not resolve property name/path: %s", property);
+ if (descriptor == null) {
+ Exceptions.raise(IllegalArgumentException::new, "Could not resolve property name/path: %s", property);
+ }
}
public ValidateProperty<T> cascade(boolean cascade) {
http://git-wip-us.apache.org/repos/asf/bval/blob/7b3c58e0/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 d477b72..8ffd5f5 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
@@ -103,9 +103,9 @@ public abstract class ValidateReturnValue<E extends Executable, T> extends Valid
super(validatorContext, groups, meta);
final Type type = Validate.notNull(meta, IllegalArgumentException::new, "meta").getType();
- Exceptions.raiseUnless(TypeUtils.isInstance(returnValue, type), IllegalArgumentException::new,
- "%s is not an instance of %s", returnValue, type);
-
+ if (!TypeUtils.isInstance(returnValue, type)) {
+ Exceptions.raise(IllegalArgumentException::new, "%s is not an instance of %s", returnValue, type);
+ }
this.returnValue = returnValue;
}
http://git-wip-us.apache.org/repos/asf/bval/blob/7b3c58e0/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 a55b9b7..0501a8a 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
@@ -148,13 +148,15 @@ public abstract class ValidationJob<T> {
.ifPresent(x -> m.put(genericKey, x));
}
if (m.isEmpty()) {
- Exceptions.raiseIf(valueUnwrapping == ValidateUnwrappedValue.UNWRAP,
- ConstraintDeclarationException::new, "No %s found for %s", containerClass);
+ if (valueUnwrapping == ValidateUnwrappedValue.UNWRAP) {
+ Exceptions.raise(ConstraintDeclarationException::new, "No %s found for %s", containerClass);
+ }
return Optional.empty();
}
- Exceptions.raiseIf(m.size() > 1, ConstraintDeclarationException::new,
- "Found generic and non-generic %ss for %s", ValueExtractor.class.getSimpleName(), containerClass);
-
+ if (m.size() > 1) {
+ Exceptions.raise(ConstraintDeclarationException::new, "Found generic and non-generic %ss for %s",
+ ValueExtractor.class.getSimpleName(), containerClass);
+ }
return Optional.of(m.entrySet().iterator().next());
}
@@ -231,9 +233,10 @@ public abstract class ValidationJob<T> {
constraint.getConstraintValidatorClass();
if (constraintValidatorClass == null) {
- Exceptions.raiseIf(constraint.getComposingConstraints().isEmpty(), UnexpectedTypeException::new,
- "No %s type located for non-composed constraint %s", ConstraintValidator.class.getSimpleName(),
- constraint);
+ if (constraint.getComposingConstraints().isEmpty()) {
+ Exceptions.raise(UnexpectedTypeException::new, "No %s type located for non-composed constraint %s",
+ ConstraintValidator.class.getSimpleName(), constraint);
+ }
return null;
}
ConstraintValidator constraintValidator = null;
@@ -244,10 +247,10 @@ public abstract class ValidationJob<T> {
} catch (Exception e) {
cause = e;
}
- Exceptions.raiseIf(constraintValidator == null, ValidationException::new, cause,
- "Unable to get %s instance from %s", constraintValidatorClass.getName(),
- validatorContext.getConstraintValidatorFactory());
-
+ if (constraintValidator == null) {
+ Exceptions.raise(ValidationException::new, cause, "Unable to get %s instance from %s",
+ constraintValidatorClass.getName(), validatorContext.getConstraintValidatorFactory());
+ }
return constraintValidator;
}
http://git-wip-us.apache.org/repos/asf/bval/blob/7b3c58e0/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/CompositeBuilder.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/CompositeBuilder.java b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/CompositeBuilder.java
index d8ac834..42d681f 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/CompositeBuilder.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/CompositeBuilder.java
@@ -100,8 +100,9 @@ public class CompositeBuilder {
public Map<String, MetadataBuilder.ForContainer<Field>> getFields(Meta<Class<T>> meta) {
return merge(b -> b.getFields(meta), (f, l) -> {
final Field fld = Reflection.find(meta.getHost(), t -> Reflection.getDeclaredField(t, f));
- Exceptions.raiseIf(fld == null, IllegalStateException::new, "Could not find field %s of %s", f,
- meta.getHost());
+ if (fld == null) {
+ Exceptions.raise(IllegalStateException::new, "Could not find field %s of %s", f, meta.getHost());
+ }
return forContainer(l, new Meta.ForField(fld), ElementKind.PROPERTY);
});
}
@@ -110,8 +111,10 @@ public class CompositeBuilder {
public Map<String, MetadataBuilder.ForContainer<Method>> getGetters(Meta<Class<T>> meta) {
return merge(b -> b.getGetters(meta), (g, l) -> {
final Method getter = Methods.getter(meta.getHost(), g);
- Exceptions.raiseIf(getter == null, IllegalStateException::new,
- "Could not find getter for property %s of %s", g, meta.getHost());
+ if (getter == null) {
+ Exceptions.raise(IllegalStateException::new, "Could not find getter for property %s of %s", g,
+ meta.getHost());
+ }
return forContainer(l, new Meta.ForMethod(getter), ElementKind.PROPERTY);
});
}
@@ -252,9 +255,10 @@ public class CompositeBuilder {
final List<String> parameterNames =
getParameterNames.apply(validatorFactory.getParameterNameProvider(), meta.getHost());
- Exceptions.raiseUnless(parameterNames.size() == parameters.length, IllegalStateException::new,
- "%s returned wrong number of parameter names", validatorFactory.getParameterNameProvider());
-
+ if (parameterNames.size() != parameters.length) {
+ Exceptions.raise(IllegalStateException::new, "%s returned wrong number of parameter names",
+ validatorFactory.getParameterNameProvider());
+ }
return IntStream.range(0, parameters.length)
.mapToObj(n -> new Meta.ForParameter(parameters[n], parameterNames.get(n))).collect(Collectors.toList());
}
http://git-wip-us.apache.org/repos/asf/bval/blob/7b3c58e0/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/ContainerElementKey.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/ContainerElementKey.java b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/ContainerElementKey.java
index d7b5b18..529ccda 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/ContainerElementKey.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/ContainerElementKey.java
@@ -61,9 +61,10 @@ public class ContainerElementKey implements Comparable<ContainerElementKey> {
if (containerType.isAnnotationPresent(ExtractedValue.class)) {
final Class<?> extractedType = containerType.getAnnotation(ExtractedValue.class).type();
- Exceptions.raiseIf(void.class.equals(extractedType), ValueExtractorDefinitionException::new,
- "%s does not specify %s type for %s", extractorType, ExtractedValue.class.getSimpleName(),
- containerType);
+ if (void.class.equals(extractedType)) {
+ Exceptions.raise(ValueExtractorDefinitionException::new, "%s does not specify %s type for %s",
+ extractorType, ExtractedValue.class.getSimpleName(), containerType);
+ }
result.get().add(new ContainerElementKey(containerType, null) {
public AnnotatedType getAnnotatedType() {
return EmulatedAnnotatedType.wrap(extractedType);
http://git-wip-us.apache.org/repos/asf/bval/blob/7b3c58e0/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/HierarchyBuilder.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/HierarchyBuilder.java b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/HierarchyBuilder.java
index a028b59..4861c1a 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/HierarchyBuilder.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/HierarchyBuilder.java
@@ -237,9 +237,10 @@ public class HierarchyBuilder extends CompositeBuilder {
}
final List<Meta<Parameter>> metaParameters = getMetaParameters(hierarchyElement, getParameterNames);
- Exceptions.raiseUnless(metaParameters.size() == parameterDelegates.size(), IllegalStateException::new,
- "Got wrong number of parameter delegates for %s", meta.getHost());
-
+ if (metaParameters.size() != parameterDelegates.size()) {
+ Exceptions.raise(IllegalStateException::new, "Got wrong number of parameter delegates for %s",
+ meta.getHost());
+ }
return IntStream.range(0, parameterDelegates.size())
.mapToObj(n -> new ContainerDelegate<>(parameterDelegates.get(n), metaParameters.get(n)))
.collect(Collectors.toList());
http://git-wip-us.apache.org/repos/asf/bval/blob/7b3c58e0/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/Liskov.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/Liskov.java b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/Liskov.java
index 3d168bc..956f937 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/Liskov.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/Liskov.java
@@ -166,8 +166,8 @@ class Liskov {
.stream().filter(Predicate.isEqual(t).negate()).anyMatch(t2 -> related(t, t2)));
Exceptions.raiseIf(anyRelated, ConstraintDeclarationException::new,
- "Multiple method return values marked @%s in hierarchy %s", Valid.class.getSimpleName(),
- cascadedReturnValues.values());
+ "Multiple method return values marked @%s in hierarchy %s",
+ f -> f.args(Valid.class.getSimpleName(), cascadedReturnValues.values()));
}
@SafeVarargs
http://git-wip-us.apache.org/repos/asf/bval/blob/7b3c58e0/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 08b2b1d..419f961 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
@@ -270,10 +270,13 @@ public class ReflectionBuilder {
}
} 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());
+ if (target == null) {
+ Exceptions.raise(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);
http://git-wip-us.apache.org/repos/asf/bval/blob/7b3c58e0/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/ValidatorMappingProvider.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/ValidatorMappingProvider.java b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/ValidatorMappingProvider.java
index 8a8cd3f..e5c7d07 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/ValidatorMappingProvider.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/ValidatorMappingProvider.java
@@ -38,9 +38,11 @@ public abstract class ValidatorMappingProvider {
final Type constraintParameter = TypeUtils.getTypeArguments(t, ConstraintValidator.class)
.get(ConstraintValidator.class.getTypeParameters()[0]);
- Exceptions.raiseUnless(constraintType.equals(constraintParameter), ConstraintDefinitionException::new,
- "%s %s expected first type parameter of %s, %s; source %s", ConstraintValidator.class, t,
- constraintType, constraintParameter, result.get().getSource());
+ if (!constraintType.equals(constraintParameter)) {
+ Exceptions.raise(ConstraintDefinitionException::new,
+ "%s %s expected first type parameter of %s, %s; source %s", ConstraintValidator.class, t,
+ constraintType, constraintParameter, result.get().getSource());
+ }
}
return result.get();
}
http://git-wip-us.apache.org/repos/asf/bval/blob/7b3c58e0/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 a9cb7f4..7a08525 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
@@ -274,9 +274,10 @@ public class XmlBuilder {
return new ContainerElementKey(annotatedType, typeArgumentIndex);
}, XmlBuilder.ForContainerElementType::new));
}
- Exceptions.raiseUnless(elements.isEmpty(), ValidationException::new,
- "Illegally specified %d container element type(s) for %s", elements.size(), host);
-
+ if (!elements.isEmpty()) {
+ Exceptions.raise(ValidationException::new, "Illegally specified %d container element type(s) for %s",
+ elements.size(), host);
+ }
return Collections.emptyMap();
}
http://git-wip-us.apache.org/repos/asf/bval/blob/7b3c58e0/bval-jsr/src/main/java/org/apache/bval/jsr/util/AnnotationsManager.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/util/AnnotationsManager.java b/bval-jsr/src/main/java/org/apache/bval/jsr/util/AnnotationsManager.java
index ea2cac5..a7262d0 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/util/AnnotationsManager.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/util/AnnotationsManager.java
@@ -131,18 +131,19 @@ public class AnnotationsManager {
if (spec.impliesSingleComposingConstraint) {
Exceptions.raiseUnless(count == 1, ConstraintDefinitionException::new,
"Expected a single composing %s constraint", spec.annotationType);
- } else {
- Exceptions.raiseUnless(count > spec.constraintIndex, ConstraintDefinitionException::new,
+ } else if (count <= spec.constraintIndex) {
+ Exceptions.raise(ConstraintDefinitionException::new,
"Expected at least %s composing %s constraints", spec.constraintIndex + 1,
spec.annotationType);
}
final Map<String, String> attributeMapping =
overrides.get().computeIfAbsent(spec, k -> new HashMap<>());
- Exceptions.raiseIf(attributeMapping.containsKey(to), ConstraintDefinitionException::new,
- "Attempt to override %s#%s() index %d from multiple sources", overridesAttribute.constraint(),
- to, overridesAttribute.constraintIndex());
-
+ if (attributeMapping.containsKey(to)) {
+ Exceptions.raise(ConstraintDefinitionException::new,
+ "Attempt to override %s#%s() index %d from multiple sources",
+ overridesAttribute.constraint(), to, overridesAttribute.constraintIndex());
+ }
attributeMapping.put(to, from);
}
}
@@ -342,10 +343,11 @@ public class AnnotationsManager {
final Composition result = new Composition(annotationType);
Stream.of(result.components).map(Annotation::annotationType).forEach(at -> {
final Set<ValidationTarget> composingTargets = supportedTargets(at);
- Exceptions.raiseIf(Collections.disjoint(composingTargets, composedTargets),
- ConstraintDefinitionException::new,
- "Attempt to compose %s of %s but validator types are incompatible", annotationType.getName(),
- at.getName());
+ if (Collections.disjoint(composingTargets, composedTargets)) {
+ Exceptions.raise(ConstraintDefinitionException::new,
+ "Attempt to compose %s of %s but validator types are incompatible", annotationType.getName(),
+ at.getName());
+ }
});
return result;
});
http://git-wip-us.apache.org/repos/asf/bval/blob/7b3c58e0/bval-jsr/src/main/java/org/apache/bval/jsr/util/ExecutableTypes.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/util/ExecutableTypes.java b/bval-jsr/src/main/java/org/apache/bval/jsr/util/ExecutableTypes.java
index fed9d49..d94cd33 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/util/ExecutableTypes.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/util/ExecutableTypes.java
@@ -57,8 +57,10 @@ public class ExecutableTypes {
return ALL_TYPES;
}
if (result.remove(ExecutableType.IMPLICIT)) {
- Exceptions.raiseUnless(result.isEmpty(), IllegalArgumentException::new,
- "Mixing %s with other %ss is illegal.", ExecutableType.IMPLICIT, ExecutableType.class.getSimpleName());
+ if (!result.isEmpty()) {
+ Exceptions.raise(IllegalArgumentException::new, "Mixing %s with other %ss is illegal.",
+ ExecutableType.IMPLICIT, ExecutableType.class.getSimpleName());
+ }
return IMPLICIT_TYPES;
}
result.remove(ExecutableType.NONE);
http://git-wip-us.apache.org/repos/asf/bval/blob/7b3c58e0/bval-jsr/src/main/java/org/apache/bval/jsr/util/NodeImpl.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/util/NodeImpl.java b/bval-jsr/src/main/java/org/apache/bval/jsr/util/NodeImpl.java
index e8319f8..1d49a2a 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/util/NodeImpl.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/util/NodeImpl.java
@@ -313,7 +313,7 @@ public abstract class NodeImpl implements Path.Node, Serializable {
@Override
public <T extends Node> T as(final Class<T> nodeType) {
Exceptions.raiseUnless(nodeType.isInstance(this), ClassCastException::new, "Type %s not supported by %s",
- nodeType, getClass());
+ f -> f.args(nodeType, getClass()));
return nodeType.cast(this);
}
http://git-wip-us.apache.org/repos/asf/bval/blob/7b3c58e0/bval-jsr/src/main/java/org/apache/bval/jsr/valueextraction/ValueExtractors.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/valueextraction/ValueExtractors.java b/bval-jsr/src/main/java/org/apache/bval/jsr/valueextraction/ValueExtractors.java
index 3925943..632b9da 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/valueextraction/ValueExtractors.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/valueextraction/ValueExtractors.java
@@ -95,7 +95,7 @@ public class ValueExtractors {
.get(key.getContainerClass().getTypeParameters()[key.getTypeArgumentIndex().intValue()]);
}
Exceptions.raiseUnless(result instanceof Class<?>, ValueExtractorDefinitionException::new,
- "%s did not resolve to a %s relative to %s", key, Class.class.getName(), target);
+ "%s did not resolve to a %s relative to %s", f -> f.args(key, Class.class.getName(), target));
return (Class<?>) result;
}
@@ -171,7 +171,7 @@ public class ValueExtractors {
Validate.notNull(extractor);
valueExtractors.get().compute(ContainerElementKey.forValueExtractor(extractor), (k, v) -> {
Exceptions.raiseIf(v != null, ValueExtractorDeclarationException::new,
- "Multiple context-level %ss specified for %s", ValueExtractor.class.getSimpleName(), k);
+ "Multiple context-level %ss specified for %s", f -> f.args(ValueExtractor.class.getSimpleName(), k));
return extractor;
});
}
@@ -207,7 +207,7 @@ public class ValueExtractors {
.filter(Predicate.isEqual(quid).negate()).allMatch(quo -> related(quid, quo)));
Exceptions.raiseUnless(allRelated, ConstraintDeclarationException::new,
- "> 1 maximally specific %s found for %s", ValueExtractor.class.getSimpleName(), key);
+ "> 1 maximally specific %s found for %s", f -> f.args(ValueExtractor.class.getSimpleName(), key));
}
return candidateMap.values().iterator().next();
}
http://git-wip-us.apache.org/repos/asf/bval/blob/7b3c58e0/bval-jsr/src/main/java/org/apache/bval/jsr/xml/AnnotationProxy.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/xml/AnnotationProxy.java b/bval-jsr/src/main/java/org/apache/bval/jsr/xml/AnnotationProxy.java
index 13678ac..44d67b8 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/xml/AnnotationProxy.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/xml/AnnotationProxy.java
@@ -64,14 +64,15 @@ class AnnotationProxy implements Annotation, InvocationHandler, Serializable {
values.put(m.getName(), descriptor.getValue(m.getName()));
processedValuesFromDescriptor++;
} else {
- Exceptions.raiseIf(m.getDefaultValue() == null, IllegalArgumentException::new,
- "No value provided for %s", m.getName());
+ if (m.getDefaultValue() == null) {
+ Exceptions.raise(IllegalArgumentException::new, "No value provided for %s", m.getName());
+ }
values.put(m.getName(), m.getDefaultValue());
}
}
Exceptions.raiseUnless(processedValuesFromDescriptor == descriptor.size() || Valid.class.equals(annotationType),
IllegalArgumentException::new, "Trying to instantiate %s with unknown parameters.",
- annotationType.getName());
+ f -> f.args(annotationType.getName()));
}
/**
http://git-wip-us.apache.org/repos/asf/bval/blob/7b3c58e0/bval-jsr/src/main/java/org/apache/bval/util/Exceptions.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/util/Exceptions.java b/bval-jsr/src/main/java/org/apache/bval/util/Exceptions.java
index 94073c5..2e474c0 100644
--- a/bval-jsr/src/main/java/org/apache/bval/util/Exceptions.java
+++ b/bval-jsr/src/main/java/org/apache/bval/util/Exceptions.java
@@ -18,6 +18,7 @@ package org.apache.bval.util;
import java.lang.reflect.InvocationTargetException;
import java.util.function.BiFunction;
+import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Stream;
@@ -26,6 +27,17 @@ import java.util.stream.Stream;
* Utility class for sundry {@link Exception}-related tasks.
*/
public class Exceptions {
+ /**
+ * Callback interface that collects format arguments in conditional raise* method variants.
+ * @see Exceptions#raiseIf(boolean, Function, String, Consumer)
+ * @see Exceptions#raiseIf(boolean, BiFunction, Throwable, String, Consumer)
+ * @see Exceptions#raiseUnless(boolean, Function, String, Consumer)
+ * @see Exceptions#raiseUnless(boolean, BiFunction, Throwable, String, Consumer)
+ */
+ @FunctionalInterface
+ public interface FormatArgs {
+ void args(Object... args);
+ }
public static <E extends Exception> E create(Function<? super String, ? extends E> fn, String format,
Object... args) {
@@ -69,6 +81,13 @@ public class Exceptions {
}
public static <E extends Exception> void raiseIf(boolean condition, Function<? super String, ? extends E> fn,
+ String format, Consumer<FormatArgs> argsProvider) throws E {
+ if (condition) {
+ raise(fn, message(format,argsProvider));
+ }
+ }
+
+ public static <E extends Exception> void raiseIf(boolean condition, Function<? super String, ? extends E> fn,
Supplier<String> message) throws E {
if (condition) {
raise(fn, message);
@@ -76,6 +95,11 @@ public class Exceptions {
}
public static <E extends Exception> void raiseUnless(boolean condition, Function<? super String, ? extends E> fn,
+ String format, Consumer<FormatArgs> argsProvider) throws E {
+ raiseIf(!condition, fn, format, argsProvider);
+ }
+
+ public static <E extends Exception> void raiseUnless(boolean condition, Function<? super String, ? extends E> fn,
Supplier<String> message) throws E {
raiseIf(!condition, fn, message);
}
@@ -103,6 +127,14 @@ public class Exceptions {
}
public static <E extends Exception, C extends Throwable> void raiseIf(boolean condition,
+ BiFunction<? super String, ? super C, ? extends E> fn, C cause, String format,
+ Consumer<FormatArgs> argsProvider) throws E {
+ if (condition) {
+ raise(fn, cause, message(format, argsProvider));
+ }
+ }
+
+ public static <E extends Exception, C extends Throwable> void raiseIf(boolean condition,
BiFunction<? super String, ? super C, ? extends E> fn, C cause, Supplier<String> message) throws E {
if (condition) {
raise(fn, cause, message);
@@ -110,6 +142,12 @@ public class Exceptions {
}
public static <E extends Exception, C extends Throwable> void raiseUnless(boolean condition,
+ BiFunction<? super String, ? super C, ? extends E> fn, C cause, String format,
+ Consumer<FormatArgs> argsProvider) throws E {
+ raiseIf(!condition, fn, cause, message(format, argsProvider));
+ }
+
+ public static <E extends Exception, C extends Throwable> void raiseUnless(boolean condition,
BiFunction<? super String, ? super C, ? extends E> fn, C cause, Supplier<String> message) throws E {
raiseIf(!condition, fn, cause, message);
}
@@ -133,6 +171,12 @@ public class Exceptions {
return t;
}
+ private static Supplier<String> message(String format, Consumer<FormatArgs> argsProvider) {
+ final ObjectWrapper<Object[]> args = new ObjectWrapper<>();
+ argsProvider.accept(args::accept);
+ return () -> String.format(format, args.get());
+ }
+
private Exceptions() {
}
}
http://git-wip-us.apache.org/repos/asf/bval/blob/7b3c58e0/bval-jsr/src/main/java/org/apache/bval/util/Validate.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/util/Validate.java b/bval-jsr/src/main/java/org/apache/bval/util/Validate.java
index 042dc1b..4958f1d 100644
--- a/bval-jsr/src/main/java/org/apache/bval/util/Validate.java
+++ b/bval-jsr/src/main/java/org/apache/bval/util/Validate.java
@@ -47,8 +47,10 @@ public final class Validate {
Validate.notNull(array);
for (int i = 0; i < array.length; i++) {
- Exceptions.raiseIf(array[i] == null, IllegalArgumentException::new, message,
- ObjectUtils.arrayAdd(values, Integer.valueOf(i)));
+ if (array[i] == null) {
+ Exceptions.raise(IllegalArgumentException::new, message,
+ ObjectUtils.arrayAdd(values, Integer.valueOf(i)));
+ }
}
return array;
}