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) {


Reply via email to