This is an automated email from the ASF dual-hosted git repository.

tandraschko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/deltaspike.git


The following commit(s) were added to refs/heads/master by this push:
     new c5ab0d6  Fix an issue which causes "Argument bean must not be null". 
When lazyInit() is called concurrently, the first thread should be the only one 
to initialize it; however, deltaSpikeProxyInvocationHandler has been assigned 
before all initialization jobs are completed, which sometimes causes issue.
     new d0e6edf  Merge pull request #90 from jw941/master
c5ab0d6 is described below

commit c5ab0d6672850abdb846dc93f22c180adf651339
Author: Frank Wang <fr...@britensw.com.au>
AuthorDate: Wed May 22 09:50:29 2019 +1000

    Fix an issue which causes "Argument bean must not be null". When lazyInit() 
is called concurrently, the first thread should be the only one to initialize 
it; however, deltaSpikeProxyInvocationHandler has been assigned before all 
initialization jobs are completed, which sometimes causes issue.
---
 .../proxy/api/DeltaSpikeProxyContextualLifecycle.java      | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git 
a/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/api/DeltaSpikeProxyContextualLifecycle.java
 
b/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/api/DeltaSpikeProxyContextualLifecycle.java
index c06aeef..d250440 100644
--- 
a/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/api/DeltaSpikeProxyContextualLifecycle.java
+++ 
b/deltaspike/modules/proxy/api/src/main/java/org/apache/deltaspike/proxy/api/DeltaSpikeProxyContextualLifecycle.java
@@ -52,11 +52,11 @@ public class DeltaSpikeProxyContextualLifecycle<T, H 
extends InvocationHandler>
     private final Class<T> targetClass;
     private final BeanManager beanManager;
     
-    private DeltaSpikeProxyInvocationHandler deltaSpikeProxyInvocationHandler;
+    private volatile DeltaSpikeProxyInvocationHandler 
deltaSpikeProxyInvocationHandler;
     
-    private InjectionTarget<T> injectionTarget;
-    private Bean<H> handlerBean;
-    private CreationalContext<?> creationalContextOfDependentHandler;
+    private volatile InjectionTarget<T> injectionTarget;
+    private volatile Bean<H> handlerBean;
+    private volatile CreationalContext<?> creationalContextOfDependentHandler;
 
     public DeltaSpikeProxyContextualLifecycle(Class<T> targetClass,
                                               Class<H> 
delegateInvocationHandlerClass,
@@ -141,9 +141,6 @@ public class DeltaSpikeProxyContextualLifecycle<T, H 
extends InvocationHandler>
     {
         if (this.deltaSpikeProxyInvocationHandler == null)
         {
-            this.deltaSpikeProxyInvocationHandler = 
BeanProvider.getContextualReference(
-                    beanManager, DeltaSpikeProxyInvocationHandler.class, 
false);
-
             Set<Bean<H>> handlerBeans = BeanProvider.getBeanDefinitions(
                     delegateInvocationHandlerClass, false, true, beanManager);
             if (handlerBeans.size() != 1)
@@ -167,6 +164,9 @@ public class DeltaSpikeProxyContextualLifecycle<T, H 
extends InvocationHandler>
                         + delegateInvocationHandlerClass + " found beans: " + 
beanInfo.toString());
             }
             this.handlerBean = handlerBeans.iterator().next();
+
+            this.deltaSpikeProxyInvocationHandler = 
BeanProvider.getContextualReference(
+                    beanManager, DeltaSpikeProxyInvocationHandler.class, 
false);
         }
     }
     

Reply via email to