You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by ti...@apache.org on 2011/12/20 10:59:39 UTC
svn commit: r1221172 - in /aries/trunk/jpa: jpa-blueprint-aries/
jpa-blueprint-aries/src/main/java/org/apache/aries/jpa/blueprint/aries/impl/
jpa-blueprint-testbundle/src/main/resources/OSGI-INF/blueprint/
jpa-container-itest/ jpa-container-itest/src/t...
Author: timothyjward
Date: Tue Dec 20 09:59:38 2011
New Revision: 1221172
URL: http://svn.apache.org/viewvc?rev=1221172&view=rev
Log:
ARIES-765: JPA changes - proxy container-managed EntityManager beans for when EntityManagerFactory services are unregistered
Modified:
aries/trunk/jpa/jpa-blueprint-aries/pom.xml
aries/trunk/jpa/jpa-blueprint-aries/src/main/java/org/apache/aries/jpa/blueprint/aries/impl/NSHandler.java
aries/trunk/jpa/jpa-blueprint-testbundle/src/main/resources/OSGI-INF/blueprint/injection.xml
aries/trunk/jpa/jpa-container-itest/pom.xml
aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/blueprint/aries/itest/JPAInjectionTest.java
Modified: aries/trunk/jpa/jpa-blueprint-aries/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-blueprint-aries/pom.xml?rev=1221172&r1=1221171&r2=1221172&view=diff
==============================================================================
--- aries/trunk/jpa/jpa-blueprint-aries/pom.xml (original)
+++ aries/trunk/jpa/jpa-blueprint-aries/pom.xml Tue Dec 20 09:59:38 2011
@@ -71,7 +71,7 @@
<dependency>
<groupId>org.apache.aries.blueprint</groupId>
<artifactId>org.apache.aries.blueprint.core</artifactId>
- <version>0.4</version>
+ <version>0.4.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
Modified: aries/trunk/jpa/jpa-blueprint-aries/src/main/java/org/apache/aries/jpa/blueprint/aries/impl/NSHandler.java
URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-blueprint-aries/src/main/java/org/apache/aries/jpa/blueprint/aries/impl/NSHandler.java?rev=1221172&r1=1221171&r2=1221172&view=diff
==============================================================================
--- aries/trunk/jpa/jpa-blueprint-aries/src/main/java/org/apache/aries/jpa/blueprint/aries/impl/NSHandler.java (original)
+++ aries/trunk/jpa/jpa-blueprint-aries/src/main/java/org/apache/aries/jpa/blueprint/aries/impl/NSHandler.java Tue Dec 20 09:59:38 2011
@@ -19,6 +19,8 @@
package org.apache.aries.jpa.blueprint.aries.impl;
import java.net.URL;
+import java.util.Arrays;
+import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
@@ -106,6 +108,10 @@ public class NSHandler implements Namesp
/** The blueprint attribute value to make a bean eager */
private static final String ACTIVATION_EAGER = "EAGER";
+
+ /** The interface to proxy for managed persistence contexts */
+ private static final Collection<Class<?>> IFACES = Arrays.asList(new Class<?>[] {EntityManager.class});
+
/** The {@link PersistenceManager} to register contexts with */
private PersistenceContextProvider manager;
/** Used to indicate whether the PersistenceContextProvider is available */
@@ -336,11 +342,15 @@ public class NSHandler implements Namesp
* @return
*/
private ComponentMetadata createInjectionBeanMetedata(ParserContext ctx,
- ComponentMetadata factory) {
+ MutableReferenceMetadata factory) {
if (_logger.isDebugEnabled())
_logger.debug("Creating a managed persistence context definition for injection");
+ //We want the EntityManager objects created from this factory to be damped too
+
+ factory.setProxyChildBeanClasses(IFACES);
+
// Register the factory bean, and then create an entitymanager from it
ctx.getComponentDefinitionRegistry().registerComponentDefinition(
factory);
Modified: aries/trunk/jpa/jpa-blueprint-testbundle/src/main/resources/OSGI-INF/blueprint/injection.xml
URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-blueprint-testbundle/src/main/resources/OSGI-INF/blueprint/injection.xml?rev=1221172&r1=1221171&r2=1221172&view=diff
==============================================================================
--- aries/trunk/jpa/jpa-blueprint-testbundle/src/main/resources/OSGI-INF/blueprint/injection.xml (original)
+++ aries/trunk/jpa/jpa-blueprint-testbundle/src/main/resources/OSGI-INF/blueprint/injection.xml Tue Dec 20 09:59:38 2011
@@ -31,5 +31,14 @@
<jpa:context property="persistenceContext" unitname="test-context"/>
</bean>
</service>
+
+ <service interface="org.apache.aries.jpa.blueprint.itest.JPATestBean">
+ <service-properties>
+ <entry key="lifecycle" value="true"/>
+ </service-properties>
+ <bean class="org.apache.aries.jpa.blueprint.itest.JPATestBean">
+ <jpa:context property="persistenceContext" unitname="bp-test-unit"/>
+ </bean>
+ </service>
</blueprint>
\ No newline at end of file
Modified: aries/trunk/jpa/jpa-container-itest/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-itest/pom.xml?rev=1221172&r1=1221171&r2=1221172&view=diff
==============================================================================
--- aries/trunk/jpa/jpa-container-itest/pom.xml (original)
+++ aries/trunk/jpa/jpa-container-itest/pom.xml Tue Dec 20 09:59:38 2011
@@ -121,7 +121,7 @@
<dependency>
<groupId>org.apache.aries.blueprint</groupId>
<artifactId>org.apache.aries.blueprint.core</artifactId>
- <version>0.4</version>
+ <version>0.4.1-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
Modified: aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/blueprint/aries/itest/JPAInjectionTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/blueprint/aries/itest/JPAInjectionTest.java?rev=1221172&r1=1221171&r2=1221172&view=diff
==============================================================================
--- aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/blueprint/aries/itest/JPAInjectionTest.java (original)
+++ aries/trunk/jpa/jpa-container-itest/src/test/java/org/apache/aries/jpa/blueprint/aries/itest/JPAInjectionTest.java Tue Dec 20 09:59:38 2011
@@ -25,6 +25,7 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.ops4j.pax.exam.Option;
import org.ops4j.pax.exam.junit.JUnit4TestRunner;
+import org.osgi.framework.BundleException;
@RunWith(JUnit4TestRunner.class)
public class JPAInjectionTest extends AbstractIntegrationTest {
@@ -47,6 +48,17 @@ public class JPAInjectionTest extends Ab
assertTrue("No persistence unit injection", bean.pUnitAvailable());
assertTrue("No persistence context injection", bean.pContextAvailable());
}
+
+ @Test
+ public void testLifecycle() throws Exception {
+ JPATestBean bean = context().getService(JPATestBean.class, "(lifecycle=true)");
+
+ assertTrue("No persistence context injection", bean.pContextAvailable());
+
+ context().getBundleByName("org.apache.aries.jpa.org.apache.aries.jpa.container.itest.bundle").update();
+
+ assertTrue("No persistence context injection", bean.pContextAvailable());
+ }
@org.ops4j.pax.exam.junit.Configuration
public static Option[] configuration() {
@@ -70,6 +82,7 @@ public class JPAInjectionTest extends Ab
mavenBundle("commons-lang", "commons-lang"),
mavenBundle("commons-collections", "commons-collections"),
mavenBundle("commons-pool", "commons-pool"),
+ mavenBundle("org.apache.derby", "derby"),
mavenBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.serp"),
mavenBundle("org.apache.openjpa", "openjpa"),
@@ -78,6 +91,8 @@ public class JPAInjectionTest extends Ab
// mavenBundle("org.eclipse.persistence", "org.eclipse.persistence.asm"),
mavenBundle("org.apache.aries.jpa", "org.apache.aries.jpa.blueprint.itest.bundle"),
+ //For lifecycle testing
+ mavenBundle("org.apache.aries.jpa", "org.apache.aries.jpa.container.itest.bundle"),
equinox().version("3.5.0"));
}