[ARIES-1575] Use the Persistence Bundle's context to get the Persistence Provider
git-svn-id: https://svn.apache.org/repos/asf/aries/trunk/jpa@1748744 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/ac32967f Tree: http://git-wip-us.apache.org/repos/asf/aries-jpa/tree/ac32967f Diff: http://git-wip-us.apache.org/repos/asf/aries-jpa/diff/ac32967f Branch: refs/heads/master Commit: ac32967f1c7c33f661b55f858f3e7d53f4b3378b Parents: ad5990d Author: timothyjward <timothyjward@13f79535-47bb-0310-9956-ffa450edef68> Authored: Thu Jun 16 15:20:52 2016 +0000 Committer: timothyjward <timothyjward@13f79535-47bb-0310-9956-ffa450edef68> Committed: Thu Jun 16 15:20:52 2016 +0000 ---------------------------------------------------------------------- .../aries/jpa/container/impl/PersistenceBundleTracker.java | 6 +++--- .../aries/jpa/container/impl/PersistenceProviderTracker.java | 8 +++++--- 2 files changed, 8 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/aries-jpa/blob/ac32967f/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/PersistenceBundleTracker.java ---------------------------------------------------------------------- diff --git a/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/PersistenceBundleTracker.java b/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/PersistenceBundleTracker.java index b777741..f468cfa 100644 --- a/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/PersistenceBundleTracker.java +++ b/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/PersistenceBundleTracker.java @@ -40,11 +40,11 @@ import org.slf4j.LoggerFactory; public class PersistenceBundleTracker implements BundleTrackerCustomizer<Bundle> { private static final Logger LOGGER = LoggerFactory.getLogger(PersistenceBundleTracker.class); private final Map<Bundle, Collection<PersistenceProviderTracker>> trackers; - private final BundleContext context; + private final BundleContext containerContext; private Map<Integer, String> typeMap; public PersistenceBundleTracker(BundleContext context) { - this.context = context; + this.containerContext = context; trackers = new HashMap<Bundle, Collection<PersistenceProviderTracker>>(); this.typeMap = new HashMap<Integer, String>(); this.typeMap.put(BundleEvent.INSTALLED, "INSTALLED"); @@ -102,7 +102,7 @@ public class PersistenceBundleTracker implements BundleTrackerCustomizer<Bundle> LOGGER.info(String.format("Found persistence unit %s in bundle %s with provider %s.", punit.getPersistenceUnitName(), bundle.getSymbolicName(), punit.getPersistenceProviderClassName())); - PersistenceProviderTracker tracker = new PersistenceProviderTracker(context, punit); + PersistenceProviderTracker tracker = new PersistenceProviderTracker(containerContext, punit); tracker.open(); getTrackers(bundle).add(tracker); } http://git-wip-us.apache.org/repos/asf/aries-jpa/blob/ac32967f/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/PersistenceProviderTracker.java ---------------------------------------------------------------------- diff --git a/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/PersistenceProviderTracker.java b/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/PersistenceProviderTracker.java index 787b2fd..91e53ff 100644 --- a/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/PersistenceProviderTracker.java +++ b/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/PersistenceProviderTracker.java @@ -48,8 +48,8 @@ public class PersistenceProviderTracker extends ServiceTracker<PersistenceProvid private PersistenceUnit punit; - public PersistenceProviderTracker(BundleContext context, PersistenceUnit punit) { - super(context, createFilter(context, punit), null); + public PersistenceProviderTracker(BundleContext containerContext, PersistenceUnit punit) { + super(containerContext, createFilter(containerContext, punit), null); this.punit = punit; } @@ -80,7 +80,9 @@ public class PersistenceProviderTracker extends ServiceTracker<PersistenceProvid } StoredPerProvider stored = new StoredPerProvider(); LOGGER.info("Found provider for " + punit.getPersistenceUnitName() + " " + punit.getPersistenceProviderClassName()); - PersistenceProvider provider = context.getService(reference); + + // This get must happen using the persistence bundle's context to avoid ARIES-1575 + PersistenceProvider provider = punit.getBundle().getBundleContext().getService(reference); createAndCloseDummyEMF(provider);