Author: mbenson
Date: Wed Dec 10 00:14:41 2014
New Revision: 1644258
URL: http://svn.apache.org/r1644258
Log:
javadoc, cleanup
Modified:
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/BValBinding.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/BValExtension.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/BValInterceptor.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/BValInterceptorBean.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/ValidatorBean.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/ValidatorFactoryBean.java
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultConstraintValidatorFactory.java
Modified:
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/BValBinding.java
URL:
http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/BValBinding.java?rev=1644258&r1=1644257&r2=1644258&view=diff
==============================================================================
---
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/BValBinding.java
(original)
+++
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/BValBinding.java
Wed Dec 10 00:14:41 2014
@@ -24,7 +24,9 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
-//TODO javadoc
+/**
+ * Custom {@link InterceptorBinding} to invoke executable validations on CDI
beans.
+ */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@InterceptorBinding
Modified:
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/BValExtension.java
URL:
http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/BValExtension.java?rev=1644258&r1=1644257&r2=1644258&view=diff
==============================================================================
---
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/BValExtension.java
(original)
+++
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/BValExtension.java
Wed Dec 10 00:14:41 2014
@@ -41,28 +41,34 @@ import javax.validation.executable.Execu
import javax.validation.executable.ValidateOnExecution;
import javax.validation.metadata.BeanDescriptor;
import javax.validation.metadata.MethodType;
+
import java.lang.reflect.Modifier;
import java.lang.reflect.Type;
import java.util.Collection;
import java.util.Collections;
+import java.util.EnumSet;
import java.util.HashSet;
import java.util.Set;
-import java.util.concurrent.CopyOnWriteArraySet;
import java.util.logging.Level;
import java.util.logging.Logger;
+/**
+ * CDI {@link Extension} for Apache BVal setup.
+ */
public class BValExtension implements Extension {
private static final Logger LOGGER =
Logger.getLogger(BValExtension.class.getName());
// extension point, we can add a SPI if needed, today mainly a fallback
"API" for TomEE if we encounter an issue
- public static Collection<String> SKIPPED_PREFIXES = new HashSet<String>();
+ public static final Set<String> SKIPPED_PREFIXES;
static {
- SKIPPED_PREFIXES.add("java.");
- SKIPPED_PREFIXES.add("javax.");
- SKIPPED_PREFIXES.add("org.apache.bval.");
- SKIPPED_PREFIXES.add("org.apache.openejb.");
- SKIPPED_PREFIXES.add("org.apache.deltaspike."); // should be checked
when upgrading
- SKIPPED_PREFIXES.add("org.apache.myfaces."); // should be checked when
upgrading
+ final Set<String> s = new HashSet<String>();
+ s.add("java.");
+ s.add("javax.");
+ s.add("org.apache.bval.");
+ s.add("org.apache.openejb.");
+ s.add("org.apache.deltaspike."); // should be checked when upgrading
+ s.add("org.apache.myfaces."); // should be checked when upgrading
+ SKIPPED_PREFIXES = Collections.unmodifiableSet(s);
}
private boolean validatorFound = Boolean.getBoolean("bval.in-container");
@@ -84,11 +90,12 @@ public class BValExtension implements Ex
config = Validation.byDefaultProvider().configure();
try {
final BootstrapConfiguration bootstrap =
config.getBootstrapConfiguration();
- globalExecutableTypes =
convertToRuntimeTypes(bootstrap.getDefaultValidatedExecutableTypes());
+ globalExecutableTypes =
Collections.unmodifiableSet(convertToRuntimeTypes(bootstrap.getDefaultValidatedExecutableTypes()));
isExecutableValidationEnabled =
bootstrap.isExecutableValidationEnabled();
+ // TODO we never contain IMPLICIT or ALL
validBean =
globalExecutableTypes.contains(ExecutableType.IMPLICIT) ||
globalExecutableTypes.contains(ExecutableType.ALL);
- validConstructors =validBean ||
globalExecutableTypes.contains(ExecutableType.CONSTRUCTORS);
+ validConstructors = validBean ||
globalExecutableTypes.contains(ExecutableType.CONSTRUCTORS);
validBusinessMethods = validBean ||
globalExecutableTypes.contains(ExecutableType.NON_GETTER_METHODS);
validGetterMethods =
globalExecutableTypes.contains(ExecutableType.ALL) ||
globalExecutableTypes.contains(ExecutableType.GETTER_METHODS);
} catch (final Exception e) { // custom providers can throw an
exception
@@ -105,22 +112,28 @@ public class BValExtension implements Ex
return;
}
config.addProperty("bval.before.cdi", "true"); // ignore parts of the
config relying on CDI since we didn't start yet
- factory = factory != null ? factory : config.buildValidatorFactory();
+ if (factory == null) {
+ factory = config.buildValidatorFactory();
+ }
validator = factory.getValidator();
}
private static Set<ExecutableType> convertToRuntimeTypes(final
Set<ExecutableType> defaultValidatedExecutableTypes) {
- final Set<ExecutableType> types = new
CopyOnWriteArraySet<ExecutableType>();
+ final Set<ExecutableType> types = EnumSet.noneOf(ExecutableType.class);
for (final ExecutableType type : defaultValidatedExecutableTypes) {
- if (ExecutableType.IMPLICIT.equals(type)) {
- types.add(ExecutableType.CONSTRUCTORS);
- types.add(ExecutableType.NON_GETTER_METHODS);
- } else if (ExecutableType.ALL.equals(type)) {
+ if (ExecutableType.NONE == type) {
+ continue;
+ }
+ if (ExecutableType.ALL == type) {
types.add(ExecutableType.CONSTRUCTORS);
types.add(ExecutableType.NON_GETTER_METHODS);
types.add(ExecutableType.GETTER_METHODS);
break;
- } else if (!ExecutableType.NONE.equals(type)) {
+ }
+ if (ExecutableType.IMPLICIT == type) {
+ types.add(ExecutableType.CONSTRUCTORS);
+ types.add(ExecutableType.NON_GETTER_METHODS);
+ } else {
types.add(type);
}
}
@@ -166,10 +179,12 @@ public class BValExtension implements Ex
if
(annotatedType.isAnnotationPresent(ValidateOnExecution.class)
||
hasValidationAnnotation(annotatedType.getMethods())
||
hasValidationAnnotation(annotatedType.getConstructors())
- || (validBean && classConstraints != null &&
classConstraints.isBeanConstrained())
- || (validConstructors && classConstraints != null
&& !classConstraints.getConstrainedConstructors().isEmpty())
- || (validBusinessMethods && classConstraints !=
null &&
!classConstraints.getConstrainedMethods(MethodType.NON_GETTER).isEmpty())
- || (validGetterMethods && classConstraints != null
&& !classConstraints.getConstrainedMethods(MethodType.GETTER).isEmpty())) {
+ || classConstraints != null
+ && (validBean &&
classConstraints.isBeanConstrained()
+ || validConstructors &&
!classConstraints.getConstrainedConstructors().isEmpty()
+ || validBusinessMethods &&
!classConstraints.getConstrainedMethods(MethodType.NON_GETTER).isEmpty()
+ || validGetterMethods &&
!classConstraints.getConstrainedMethods(MethodType.GETTER).isEmpty())
+ ) {
// TODO: keep track of bValAnnotatedType and remove
@BValBinding in
// ProcessBean event if needed cause here we can't
really add @ValidateOnExecution
// through an extension
@@ -250,10 +265,11 @@ public class BValExtension implements Ex
}
}
- private static ClassLoader loader() {
- return Thread.currentThread().getContextClassLoader();
- }
-
+ /**
+ * Request that an instance of the specified type be provided by the
container.
+ * @param clazz
+ * @return the requested instance wrapped in a {@link Releasable}.
+ */
public static <T> Releasable<T> inject(final Class<T> clazz) {
try {
final BeanManager beanManager = CDI.current().getBeanManager();
@@ -280,6 +296,10 @@ public class BValExtension implements Ex
return CDI.current().getBeanManager();
}
+ /**
+ * Represents an item that can be released from a {@link
CreationalContext} at some point in the future.
+ * @param <T>
+ */
public static class Releasable<T> {
private final CreationalContext<T> context;
private final InjectionTarget<T> injectionTarget;
Modified:
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/BValInterceptor.java
URL:
http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/BValInterceptor.java?rev=1644258&r1=1644257&r2=1644258&view=diff
==============================================================================
---
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/BValInterceptor.java
(original)
+++
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/BValInterceptor.java
Wed Dec 10 00:14:41 2014
@@ -26,6 +26,7 @@ import javax.inject.Inject;
import javax.interceptor.AroundConstruct;
import javax.interceptor.AroundInvoke;
import javax.interceptor.Interceptor;
+import javax.interceptor.InterceptorBinding;
import javax.interceptor.InvocationContext;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
@@ -42,19 +43,23 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
-import java.util.HashSet;
+import java.util.EnumSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.CopyOnWriteArraySet;
+/**
+ * Interceptor class for the {@link BValBinding} {@link InterceptorBinding}.
+ */
@Interceptor
@BValBinding
-@Priority(4800) // TODO: maybe add it through ASM to be compliant with CDI 1.0
containers using simply this class as a template to generate another one for
CDI 1.1 impl
+@Priority(4800)
+// TODO: maybe add it through ASM to be compliant with CDI 1.0 containers
using simply this class as a template to
+// generate another one for CDI 1.1 impl
public class BValInterceptor {
private final Map<Method, Boolean> methodConfiguration = new
ConcurrentHashMap<Method, Boolean>();
- private Collection<ExecutableType> classConfiguration;
+ private Set<ExecutableType> classConfiguration;
private Boolean constructorValidated;
@Inject
@@ -65,7 +70,8 @@ public class BValInterceptor {
private ExecutableValidator executableValidator;
- @AroundConstruct // TODO: see previous one
+ @AroundConstruct
+ // TODO: see previous one
public Object construct(final InvocationContext context) throws Exception {
@SuppressWarnings("rawtypes")
final Constructor constructor = context.getConstructor();
@@ -84,7 +90,8 @@ public class BValInterceptor {
{
@SuppressWarnings("unchecked")
- final Set<ConstraintViolation<?>> violations =
executableValidator.validateConstructorParameters(constructor,
context.getParameters());
+ final Set<ConstraintViolation<?>> violations =
+ executableValidator.validateConstructorParameters(constructor,
context.getParameters());
if (!violations.isEmpty()) {
throw new ConstraintViolationException(violations);
}
@@ -94,7 +101,8 @@ public class BValInterceptor {
{
@SuppressWarnings("unchecked")
- final Set<ConstraintViolation<?>> violations =
executableValidator.validateConstructorReturnValue(constructor,
context.getTarget());
+ final Set<ConstraintViolation<?>> violations =
+
executableValidator.validateConstructorReturnValue(constructor,
context.getTarget());
if (!violations.isEmpty()) {
throw new ConstraintViolationException(violations);
}
@@ -141,7 +149,8 @@ public class BValInterceptor {
return result;
}
- private boolean isConstructorValidated(final Class<?> targetClass, final
Constructor<?> constructor) throws NoSuchMethodException {
+ private boolean isConstructorValidated(final Class<?> targetClass, final
Constructor<?> constructor)
+ throws NoSuchMethodException {
initClassConfig(targetClass);
if (constructorValidated == null) {
@@ -206,18 +215,22 @@ public class BValInterceptor {
if (validateOnExecution == null) {
methodConfig = doValidMethod(method,
classConfiguration);
} else {
- final Collection<ExecutableType> config = new
HashSet<ExecutableType>();
+ final Set<ExecutableType> config =
EnumSet.noneOf(ExecutableType.class);
for (final ExecutableType type :
validateOnExecution.type()) {
+ if (ExecutableType.NONE == type) {
+ continue;
+ }
+ if (ExecutableType.ALL == type) {
+ config.add(ExecutableType.NON_GETTER_METHODS);
+ config.add(ExecutableType.GETTER_METHODS);
+ break;
+ }
if (ExecutableType.IMPLICIT == type) { // on
method it just means validate, even on getters
config.add(ExecutableType.NON_GETTER_METHODS);
if (lastClassWithTheMethod == null) {
config.add(ExecutableType.GETTER_METHODS);
} // else the annotation was not on the method
so implicit doesn't mean getters
- } else if (ExecutableType.ALL == type) {
- config.add(ExecutableType.NON_GETTER_METHODS);
- config.add(ExecutableType.GETTER_METHODS);
- break;
- } else if (ExecutableType.NONE != type) {
+ } else {
config.add(type);
}
}
@@ -235,22 +248,26 @@ public class BValInterceptor {
if (classConfiguration == null) {
synchronized (this) {
if (classConfiguration == null) {
- classConfiguration = new
CopyOnWriteArraySet<ExecutableType>();
+ classConfiguration = EnumSet.noneOf(ExecutableType.class);
final ValidateOnExecution annotation =
targetClass.getAnnotation(ValidateOnExecution.class);
if (annotation == null) {
classConfiguration.addAll(globalConfiguration.getGlobalExecutableTypes());
} else {
for (final ExecutableType type : annotation.type()) {
- if (ExecutableType.IMPLICIT ==type) {
-
classConfiguration.add(ExecutableType.CONSTRUCTORS);
-
classConfiguration.add(ExecutableType.NON_GETTER_METHODS);
- } else if (ExecutableType.ALL == type) {
+ if (ExecutableType.NONE == type) {
+ continue;
+ }
+ if (ExecutableType.ALL == type) {
classConfiguration.add(ExecutableType.CONSTRUCTORS);
classConfiguration.add(ExecutableType.NON_GETTER_METHODS);
classConfiguration.add(ExecutableType.GETTER_METHODS);
break;
- } else if (ExecutableType.NONE != type) {
+ }
+ if (ExecutableType.IMPLICIT == type) {
+
classConfiguration.add(ExecutableType.CONSTRUCTORS);
+
classConfiguration.add(ExecutableType.NON_GETTER_METHODS);
+ } else {
classConfiguration.add(type);
}
}
@@ -270,14 +287,14 @@ public class BValInterceptor {
}
}
- private static boolean doValidMethod(final Method method, final
Collection<ExecutableType> config) {
- final boolean getter = isGetter(method);
- return (!getter && config.contains(ExecutableType.NON_GETTER_METHODS))
- || (getter && config.contains(ExecutableType.GETTER_METHODS));
+ private static boolean doValidMethod(final Method method, final
Set<ExecutableType> config) {
+ return isGetter(method) ?
config.contains(ExecutableType.GETTER_METHODS) : config
+ .contains(ExecutableType.NON_GETTER_METHODS);
}
private static boolean isGetter(final Method method) {
final String name = method.getName();
- return (name.startsWith("get") || name.startsWith("is")) &&
method.getParameterTypes().length == 0;
- }
+ return method.getParameterTypes().length == 0 &&
!Void.TYPE.equals(method.getReturnType())
+ && (name.startsWith("get") || name.startsWith("is") &&
boolean.class.equals(method.getReturnType()));
+ }
}
Modified:
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/BValInterceptorBean.java
URL:
http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/BValInterceptorBean.java?rev=1644258&r1=1644257&r2=1644258&view=diff
==============================================================================
---
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/BValInterceptorBean.java
(original)
+++
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/BValInterceptorBean.java
Wed Dec 10 00:14:41 2014
@@ -33,6 +33,9 @@ import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
+/**
+ * {@link BValInterceptor} CDI {@link Bean}.
+ */
public class BValInterceptorBean implements Bean<BValInterceptor>,
PassivationCapable {
private final Set<Type> types;
private final Set<Annotation> qualifiers;
@@ -40,13 +43,15 @@ public class BValInterceptorBean impleme
private final InjectionTarget<BValInterceptor> injectionTarget;
public BValInterceptorBean(final BeanManager bm) {
- types = new HashSet<Type>();
- types.add(BValInterceptor.class);
- types.add(Object.class);
+ final Set<Type> t = new HashSet<Type>();
+ t.add(BValInterceptor.class);
+ t.add(Object.class);
+ types = Collections.unmodifiableSet(t);
- qualifiers = new HashSet<Annotation>();
- qualifiers.add(DefaultLiteral.INSTANCE);
- qualifiers.add(AnyLiteral.INSTANCE);
+ final Set<Annotation> q = new HashSet<Annotation>();
+ q.add(DefaultLiteral.INSTANCE);
+ q.add(AnyLiteral.INSTANCE);
+ qualifiers = Collections.unmodifiableSet(q);
injectionTarget =
bm.createInjectionTarget(bm.createAnnotatedType(BValInterceptor.class));
injectionPoints =
Modified:
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/ValidatorBean.java
URL:
http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/ValidatorBean.java?rev=1644258&r1=1644257&r2=1644258&view=diff
==============================================================================
---
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/ValidatorBean.java
(original)
+++
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/ValidatorBean.java
Wed Dec 10 00:14:41 2014
@@ -31,7 +31,10 @@ import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
-public class ValidatorBean implements Bean<Validator> , PassivationCapable{
+/**
+ * {@link Validator} CDI {@link Bean}.
+ */
+public class ValidatorBean implements Bean<Validator> , PassivationCapable {
private final Set<Type> types;
private final Set<Annotation> qualifiers;
private final ValidatorFactory factory;
@@ -41,13 +44,15 @@ public class ValidatorBean implements Be
this.factory = factory;
this.instance = validator;
- types = new HashSet<Type>();
- types.add(Validator.class);
- types.add(Object.class);
+ final Set<Type> t = new HashSet<Type>();
+ t.add(Validator.class);
+ t.add(Object.class);
+ types = Collections.unmodifiableSet(t);
- qualifiers = new HashSet<Annotation>();
- qualifiers.add(DefaultLiteral.INSTANCE);
- qualifiers.add(AnyLiteral.INSTANCE);
+ final Set<Annotation> q = new HashSet<Annotation>();
+ q.add(DefaultLiteral.INSTANCE);
+ q.add(AnyLiteral.INSTANCE);
+ qualifiers = Collections.unmodifiableSet(q);
}
public Set<Type> getTypes() {
Modified:
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/ValidatorFactoryBean.java
URL:
http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/ValidatorFactoryBean.java?rev=1644258&r1=1644257&r2=1644258&view=diff
==============================================================================
---
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/ValidatorFactoryBean.java
(original)
+++
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/cdi/ValidatorFactoryBean.java
Wed Dec 10 00:14:41 2014
@@ -30,6 +30,9 @@ import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
+/**
+ * {@link ValidatorFactory} CDI {@link Bean}.
+ */
public class ValidatorFactoryBean implements Bean<ValidatorFactory> ,
PassivationCapable{
private final Set<Type> types;
private final Set<Annotation> qualifiers;
@@ -38,13 +41,15 @@ public class ValidatorFactoryBean implem
public ValidatorFactoryBean(final ValidatorFactory validatorFactory) {
this.instance = validatorFactory;
- types = new HashSet<Type>();
- types.add(ValidatorFactory.class);
- types.add(Object.class);
+ final Set<Type> t = new HashSet<Type>();
+ t.add(ValidatorFactory.class);
+ t.add(Object.class);
+ types = Collections.unmodifiableSet(t);
- qualifiers = new HashSet<Annotation>();
- qualifiers.add(DefaultLiteral.INSTANCE);
- qualifiers.add(AnyLiteral.INSTANCE);
+ final Set<Annotation> q = new HashSet<Annotation>();
+ q.add(DefaultLiteral.INSTANCE);
+ q.add(AnyLiteral.INSTANCE);
+ qualifiers = Collections.unmodifiableSet(q);
}
public Set<Type> getTypes() {
Modified:
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultConstraintValidatorFactory.java
URL:
http://svn.apache.org/viewvc/bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultConstraintValidatorFactory.java?rev=1644258&r1=1644257&r2=1644258&view=diff
==============================================================================
---
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultConstraintValidatorFactory.java
(original)
+++
bval/branches/bval-11/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultConstraintValidatorFactory.java
Wed Dec 10 00:14:41 2014
@@ -33,7 +33,7 @@ import java.util.concurrent.CopyOnWriteA
* Description: create constraint instances with the default / no-arg
constructor <br/>
*/
public class DefaultConstraintValidatorFactory implements
ConstraintValidatorFactory, Closeable {
- private final Collection< BValExtension.Releasable<?>> releasables = new
CopyOnWriteArrayList<BValExtension.Releasable<?>>();
+ private final Collection<BValExtension.Releasable<?>> releasables = new
CopyOnWriteArrayList<BValExtension.Releasable<?>>();
private Boolean useCdi = null; // store it to avoid NoClassDefFoundError
when cdi is not present (it is slow) + lazily (to wait cdi is started)
/**
@@ -47,11 +47,11 @@ public class DefaultConstraintValidatorF
synchronized (this) {
if (useCdi == null) {
try {
- useCdi = BValExtension.getBeanManager() != null;
+ useCdi =
Boolean.valueOf(BValExtension.getBeanManager() != null);
} catch (final NoClassDefFoundError error) {
- useCdi = false;
+ useCdi = Boolean.FALSE;
} catch (final Exception e) {
- useCdi = false;
+ useCdi = Boolean.FALSE;
}
}
}
@@ -60,7 +60,7 @@ public class DefaultConstraintValidatorF
// 2011-03-27 jw: Do not use PrivilegedAction.
// Otherwise any user code would be executed with the privileges of
this class.
try {
- if (useCdi) {
+ if (useCdi.booleanValue()) {
try {
final BValExtension.Releasable<T> instance =
BValExtension.inject(constraintClass);
if (instance != null) {