cache constrained-ness of executable parameters/return values
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ExecutableD.java b/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ExecutableD.java
index eab7a9a..4a73771 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ExecutableD.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/descriptor/ExecutableD.java
@@ -33,6 +33,8 @@
private final ReturnValueD<SELF, E> returnValue;
private final List<ParameterD<SELF>> parameters;
private final CrossParameterD<SELF, E> crossParameter;
+ private final boolean parametersAreConstrained;
+ private final boolean returnValueIsConstrained;
@SuppressWarnings("unchecked")
protected ExecutableD(R reader, BeanD<?> parent) {
@@ -43,6 +45,8 @@
returnValue = reader.getReturnValueDescriptor((SELF) this);
parameters = reader.getParameterDescriptors((SELF) this);
crossParameter = reader.getCrossParameterDescriptor((SELF) this);
+ parametersAreConstrained = parameters.stream().anyMatch(DescriptorManager::isConstrained) || crossParameter.hasConstraints();
+ returnValueIsConstrained = DescriptorManager.isConstrained(returnValue);
}
@Override
@@ -68,11 +72,11 @@
@Override
public final boolean hasConstrainedParameters() {
- return parameters.stream().anyMatch(DescriptorManager::isConstrained) || getCrossParameterDescriptor().hasConstraints();
+ return parametersAreConstrained;
}
@Override
public final boolean hasConstrainedReturnValue() {
- return DescriptorManager.isConstrained(returnValue);
+ return returnValueIsConstrained;
}
}