You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by cs...@apache.org on 2017/04/18 12:55:31 UTC

[39/50] aries-jpa git commit: [ARIES-1689] Fix initialization

[ARIES-1689] Fix initialization

git-svn-id: https://svn.apache.org/repos/asf/aries/trunk/jpa@1785770 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/aries-jpa/repo
Commit: http://git-wip-us.apache.org/repos/asf/aries-jpa/commit/3e7d639d
Tree: http://git-wip-us.apache.org/repos/asf/aries-jpa/tree/3e7d639d
Diff: http://git-wip-us.apache.org/repos/asf/aries-jpa/diff/3e7d639d

Branch: refs/heads/master
Commit: 3e7d639d9a939fea8ffcca17d79a7e1f207dd373
Parents: 90229e8
Author: cschneider <cs...@13f79535-47bb-0310-9956-ffa450edef68>
Authored: Mon Mar 6 21:41:47 2017 +0000
Committer: cschneider <cs...@13f79535-47bb-0310-9956-ffa450edef68>
Committed: Mon Mar 6 21:41:47 2017 +0000

----------------------------------------------------------------------
 .../org/apache/aries/jpa/blueprint/impl/JpaInterceptor.java   | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/aries-jpa/blob/3e7d639d/jpa-blueprint/src/main/java/org/apache/aries/jpa/blueprint/impl/JpaInterceptor.java
----------------------------------------------------------------------
diff --git a/jpa-blueprint/src/main/java/org/apache/aries/jpa/blueprint/impl/JpaInterceptor.java b/jpa-blueprint/src/main/java/org/apache/aries/jpa/blueprint/impl/JpaInterceptor.java
index a6d5bf2..93a37b1 100644
--- a/jpa-blueprint/src/main/java/org/apache/aries/jpa/blueprint/impl/JpaInterceptor.java
+++ b/jpa-blueprint/src/main/java/org/apache/aries/jpa/blueprint/impl/JpaInterceptor.java
@@ -19,6 +19,7 @@
 package org.apache.aries.jpa.blueprint.impl;
 
 import java.lang.reflect.Method;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 import javax.persistence.EntityManager;
 import javax.persistence.spi.PersistenceUnitTransactionType;
@@ -39,11 +40,13 @@ public class JpaInterceptor implements Interceptor {
     private BlueprintContainer container;
     private String coordinatorId;
     private String emId;
+    private AtomicBoolean initialized;
 
     public JpaInterceptor(BlueprintContainer container, String coordinatorId, String emId) {
         this.container = container;
         this.coordinatorId = coordinatorId;
         this.emId = emId;
+        this.initialized = new AtomicBoolean(false);
     }
 
     @Override
@@ -53,7 +56,7 @@ public class JpaInterceptor implements Interceptor {
 
     @Override
     public Object preCall(ComponentMetadata cm, Method m, Object... parameters) throws Throwable {
-        if (coordinator == null || em == null) {
+        if (!initialized.get()) {
             initServices();
         }
         try {
@@ -71,7 +74,7 @@ public class JpaInterceptor implements Interceptor {
     }
 
     private synchronized void initServices() {
-        if (coordinator == null || em == null) {
+        if (initialized.compareAndSet(false, true)) {
             coordinator = (Coordinator)container.getComponentInstance(coordinatorId);
             em = (EntityManager)container.getComponentInstance(emId);
         }