Author: rmannibucau
Date: Thu Oct 13 07:21:04 2016
New Revision: 1764610
URL: http://svn.apache.org/viewvc?rev=1764610&view=rev
Log:
BVAL-148 ensuring our double state locking does what we want - we can evaluate
to remove it later too
Modified:
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultConstraintValidatorFactory.java
Modified:
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
URL:
http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java?rev=1764610&r1=1764609&r2=1764610&view=diff
==============================================================================
---
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
(original)
+++
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
Thu Oct 13 07:21:04 2016
@@ -75,22 +75,22 @@ public class ConfigurationImpl implement
* Configured {@link MessageInterpolator}
*/
protected MessageInterpolator defaultMessageInterpolator = new
DefaultMessageInterpolator();
- protected MessageInterpolator messageInterpolator =
defaultMessageInterpolator;
+ protected volatile MessageInterpolator messageInterpolator =
defaultMessageInterpolator;
protected Class<? extends MessageInterpolator> messageInterpolatorClass =
null;
/**
* Configured {@link ConstraintValidatorFactory}
*/
protected ConstraintValidatorFactory defaultConstraintValidatorFactory =
new DefaultConstraintValidatorFactory();
- protected ConstraintValidatorFactory constraintValidatorFactory =
defaultConstraintValidatorFactory;
+ protected volatile ConstraintValidatorFactory constraintValidatorFactory =
defaultConstraintValidatorFactory;
protected Class<? extends ConstraintValidatorFactory>
constraintValidatorFactoryClass = null;
protected TraversableResolver defaultTraversableResolver = new
DefaultTraversableResolver();
- protected TraversableResolver traversableResolver =
defaultTraversableResolver;
+ protected volatile TraversableResolver traversableResolver =
defaultTraversableResolver;
protected Class<? extends TraversableResolver> traversableResolverClass =
null;
protected ParameterNameProvider defaultParameterNameProvider = new
DefaultParameterNameProvider();
- protected ParameterNameProvider parameterNameProvider =
defaultParameterNameProvider;
+ protected volatile ParameterNameProvider parameterNameProvider =
defaultParameterNameProvider;
protected Class<? extends ParameterNameProvider>
parameterNameProviderClass = null;
protected BootstrapConfiguration bootstrapConfiguration;
Modified:
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
URL:
http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java?rev=1764610&r1=1764609&r2=1764610&view=diff
==============================================================================
---
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
(original)
+++
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/ConstraintValidation.java
Thu Oct 13 07:21:04 2016
@@ -64,7 +64,7 @@ public class ConstraintValidation<T exte
private final boolean reportFromComposite;
private final Map<String, Object> attributes;
private T annotation; // for metadata request API
- private ConstraintValidator<T, ?> validator;
+ private volatile ConstraintValidator<T, ?> validator;
private Set<ConstraintValidation<?>> composedConstraints;
Modified:
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultConstraintValidatorFactory.java
URL:
http://svn.apache.org/viewvc/bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultConstraintValidatorFactory.java?rev=1764610&r1=1764609&r2=1764610&view=diff
==============================================================================
---
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultConstraintValidatorFactory.java
(original)
+++
bval/trunk/bval-jsr/src/main/java/org/apache/bval/jsr/DefaultConstraintValidatorFactory.java
Thu Oct 13 07:21:04 2016
@@ -34,7 +34,7 @@ import java.util.concurrent.CopyOnWriteA
*/
public class DefaultConstraintValidatorFactory implements
ConstraintValidatorFactory, Closeable {
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)
+ private volatile Boolean useCdi = null; // store it to avoid
NoClassDefFoundError when cdi is not present (it is slow) + lazily (to wait cdi
is started)
/**
* Instantiate a Constraint.
@@ -47,7 +47,7 @@ public class DefaultConstraintValidatorF
synchronized (this) {
if (useCdi == null) {
try {
- useCdi =
Boolean.valueOf(BValExtension.getBeanManager() != null);
+ useCdi = BValExtension.getBeanManager() != null;
} catch (final NoClassDefFoundError error) {
useCdi = Boolean.FALSE;
} catch (final Exception e) {
@@ -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.booleanValue()) {
+ if (useCdi) {
try {
final BValExtension.Releasable<T> instance =
BValExtension.inject(constraintClass);
if (instance != null) {