[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 <cschneider@13f79535-47bb-0310-9956-ffa450edef68> Authored: Mon Mar 6 21:41:47 2017 +0000 Committer: cschneider <cschneider@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); }