You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by ma...@apache.org on 2010/02/04 10:06:11 UTC
svn commit: r906408 - in
/incubator/aries/trunk/jpa/jpa-container-context/src:
main/java/org/apache/aries/jpa/container/context/
main/java/org/apache/aries/jpa/container/context/impl/
main/java/org/apache/aries/jpa/container/context/namespace/ main/jav...
Author: mahrwald
Date: Thu Feb 4 09:06:11 2010
New Revision: 906408
URL: http://svn.apache.org/viewvc?rev=906408&view=rev
Log:
ARIES-131 Improve cleanup
Modified:
incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/GlobalPersistenceManager.java
incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/impl/PersistenceContextManager.java
incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/namespace/NSHandler.java
incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/transaction/impl/JTAEntityManager.java
incubator/aries/trunk/jpa/jpa-container-context/src/test/java/org/apache/aries/jpa/container/context/namespace/NSHandlerTest.java
Modified: incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/GlobalPersistenceManager.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/GlobalPersistenceManager.java?rev=906408&r1=906407&r2=906408&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/GlobalPersistenceManager.java (original)
+++ incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/GlobalPersistenceManager.java Thu Feb 4 09:06:11 2010
@@ -88,6 +88,7 @@
Set<String> contextsToBeRemoved = Collections.emptySet();
Bundle frameworkBundle = bundle.getBundleContext().getBundle(0);
PersistenceContextManager manager = null;
+ boolean removeManager = false;
synchronized (this) {
if (persistenceContexts.containsKey(bundle)) {
@@ -98,13 +99,18 @@
if (manager == null)
throw new IllegalStateException();
} else if (managers.containsKey(bundle)) {
- managers.remove(bundle);
+ removeManager = true;
+ manager = managers.remove(bundle);
bundle.getBundleContext().removeBundleListener(this);
}
}
- for (String context : contextsToBeRemoved) {
- manager.unregisterContext(context, bundle);
+ if (removeManager) {
+ manager.close();
+ } else {
+ for (String context : contextsToBeRemoved) {
+ manager.unregisterContext(context, bundle);
+ }
}
}
}
Modified: incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/impl/PersistenceContextManager.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/impl/PersistenceContextManager.java?rev=906408&r1=906407&r2=906408&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/impl/PersistenceContextManager.java (original)
+++ incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/impl/PersistenceContextManager.java Thu Feb 4 09:06:11 2010
@@ -85,6 +85,18 @@
super(ctx, filter, null);
persistenceContextRegistry = registry;
}
+
+ @Override
+ public void close() {
+ super.close();
+ for (ServiceRegistration reg : entityManagerRegistrations.values()) {
+ try {
+ reg.unregister();
+ } catch (IllegalStateException ise) {
+ //This is no worry, the framework has done our job for us
+ }
+ }
+ }
@Override
public Object addingService(ServiceReference reference) {
Modified: incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/namespace/NSHandler.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/namespace/NSHandler.java?rev=906408&r1=906407&r2=906408&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/namespace/NSHandler.java (original)
+++ incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/namespace/NSHandler.java Thu Feb 4 09:06:11 2010
@@ -232,6 +232,7 @@
meta.setActivation(factory.getActivation());
meta.setFactoryMethod("createEntityManager");
meta.setScope(BeanMetadata.SCOPE_PROTOTYPE);
+ meta.setDestroyMethod("internalClose");
return meta;
}
Modified: incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/transaction/impl/JTAEntityManager.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/transaction/impl/JTAEntityManager.java?rev=906408&r1=906407&r2=906408&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/transaction/impl/JTAEntityManager.java (original)
+++ incubator/aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/transaction/impl/JTAEntityManager.java Thu Feb 4 09:06:11 2010
@@ -82,6 +82,21 @@
}
}
+ /**
+ * Called reflectively by blueprint
+ */
+ public void internalClose() {
+ EntityManager temp = null;
+
+ synchronized (this) {
+ temp = detachedManager;
+ detachedManager = null;
+ }
+
+ if (temp != null)
+ temp.close();
+ }
+
public void clear()
{
getPersistenceContext(false).clear();
Modified: incubator/aries/trunk/jpa/jpa-container-context/src/test/java/org/apache/aries/jpa/container/context/namespace/NSHandlerTest.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container-context/src/test/java/org/apache/aries/jpa/container/context/namespace/NSHandlerTest.java?rev=906408&r1=906407&r2=906408&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container-context/src/test/java/org/apache/aries/jpa/container/context/namespace/NSHandlerTest.java (original)
+++ incubator/aries/trunk/jpa/jpa-container-context/src/test/java/org/apache/aries/jpa/container/context/namespace/NSHandlerTest.java Thu Feb 4 09:06:11 2010
@@ -190,6 +190,7 @@
BeanMetadata innerBean = (BeanMetadata) ((BeanProperty) bean.getProperties().get(0)).getValue();
assertEquals("createEntityManager", innerBean.getFactoryMethod());
+ assertEquals("internalClose", innerBean.getDestroyMethod());
assertEquals(1, registeredComponents.size());
ReferenceMetadata reference = (ReferenceMetadata) registeredComponents.get(0);