Author: cschneider
Date: Tue Jul 28 15:46:59 2015
New Revision: 1693122
URL: http://svn.apache.org/r1693122
Log:
[ARIES-1362] Remove EntityManager from Coordination
Modified:
aries/trunk/jpa/jpa-support/src/main/java/org/apache/aries/jpa/support/impl/EMSupplierImpl.java
Modified:
aries/trunk/jpa/jpa-support/src/main/java/org/apache/aries/jpa/support/impl/EMSupplierImpl.java
URL:
http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-support/src/main/java/org/apache/aries/jpa/support/impl/EMSupplierImpl.java?rev=1693122&r1=1693121&r2=1693122&view=diff
==============================================================================
---
aries/trunk/jpa/jpa-support/src/main/java/org/apache/aries/jpa/support/impl/EMSupplierImpl.java
(original)
+++
aries/trunk/jpa/jpa-support/src/main/java/org/apache/aries/jpa/support/impl/EMSupplierImpl.java
Tue Jul 28 15:46:59 2015
@@ -120,6 +120,14 @@ public class EMSupplierImpl implements E
return getEmMap(coordination).get(unitName);
}
}
+
+ private EntityManager removeEm(Coordination coordination) {
+ Map<Class<?>, Object> vars = coordination.getVariables();
+ synchronized (vars) {
+ return getEmMap(coordination).remove(unitName);
+ }
+ }
+
@SuppressWarnings("unchecked")
private Map<String, EntityManager> getEmMap(Coordination coordination) {
@@ -201,9 +209,10 @@ public class EMSupplierImpl implements E
@Override
public void ended(Coordination coordination) throws Exception {
LOG.debug("Closing EntityManager for persistence unit " + unitName
+ " as coordination " + coordination.getName() + " ended.");
- EntityManager em = getEm(coordination);
+ EntityManager em = removeEm(coordination);
emSet.remove(em);
em.close();
+
if (shutdown.get()) {
emsToShutDown.countDown();
}