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 2017/09/20 10:21:39 UTC
aries-jpa git commit: Update to implement the new methods on
EntityManagerFactoryBuilder, add tests for a more recent Hibernate
Repository: aries-jpa
Updated Branches:
refs/heads/master 45d1666aa -> eae9b2b6c
Update to implement the new methods on EntityManagerFactoryBuilder, add tests for a more recent Hibernate
Project: http://git-wip-us.apache.org/repos/asf/aries-jpa/repo
Commit: http://git-wip-us.apache.org/repos/asf/aries-jpa/commit/eae9b2b6
Tree: http://git-wip-us.apache.org/repos/asf/aries-jpa/tree/eae9b2b6
Diff: http://git-wip-us.apache.org/repos/asf/aries-jpa/diff/eae9b2b6
Branch: refs/heads/master
Commit: eae9b2b6c854ddfd83a34075c1270a154d30f729
Parents: 45d1666
Author: timothyjward <ti...@apache.org>
Authored: Wed Sep 20 12:21:24 2017 +0200
Committer: timothyjward <ti...@apache.org>
Committed: Wed Sep 20 12:21:24 2017 +0200
----------------------------------------------------------------------
.../itest/JPAContainerEclipseLinkTest.java | 11 +++++
.../itest/JPAContainerHibernate5_2Test.java | 47 ++++++++++++++++++++
.../itest/JPAContainerHibernateTest.java | 13 ++++++
.../itest/JPAContainerOpenJPATest.java | 12 +++++
.../jpa/container/itest/JPAContainerTest.java | 38 ++++++++++++++--
.../aries/jpa/itest/AbstractJPAItest.java | 18 ++++++++
javax-persistence/README.md | 15 +++++++
.../impl/AriesEntityManagerFactoryBuilder.java | 16 ++++++-
.../impl/PersistenceProviderTracker.java | 2 +-
.../container/impl/PropsConfigurationTest.java | 38 +++++++++-------
jpa-support/README.md | 3 ++
11 files changed, 192 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/aries-jpa/blob/eae9b2b6/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerEclipseLinkTest.java
----------------------------------------------------------------------
diff --git a/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerEclipseLinkTest.java b/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerEclipseLinkTest.java
index 6ed52fb..1eef995 100644
--- a/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerEclipseLinkTest.java
+++ b/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerEclipseLinkTest.java
@@ -24,6 +24,7 @@ import org.eclipse.persistence.internal.weaving.PersistenceWeaved;
import org.junit.Test;
import org.ops4j.pax.exam.Configuration;
import org.ops4j.pax.exam.Option;
+import org.osgi.framework.Bundle;
public class JPAContainerEclipseLinkTest extends JPAContainerTest {
@@ -44,4 +45,14 @@ public class JPAContainerEclipseLinkTest extends JPAContainerTest {
assertTrue("Not PersistenceCapable",
Arrays.asList(Car.class.getInterfaces()).contains(PersistenceWeaved.class));
}
+
+ @Override
+ protected String getProviderClassName() {
+ return "org.eclipse.persistence.jpa.PersistenceProvider";
+ }
+
+ @Override
+ protected Bundle getProviderBundle() {
+ return getBundleByName("org.apache.aries.jpa.eclipselink.adapter");
+ }
}
http://git-wip-us.apache.org/repos/asf/aries-jpa/blob/eae9b2b6/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerHibernate5_2Test.java
----------------------------------------------------------------------
diff --git a/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerHibernate5_2Test.java b/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerHibernate5_2Test.java
new file mode 100644
index 0000000..31849eb
--- /dev/null
+++ b/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerHibernate5_2Test.java
@@ -0,0 +1,47 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.aries.jpa.container.itest;
+
+import org.hibernate.osgi.HibernateBundleActivator;
+import org.ops4j.pax.exam.Configuration;
+import org.ops4j.pax.exam.Option;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.FrameworkUtil;
+
+public class JPAContainerHibernate5_2Test extends JPAContainerTest {
+
+ @Configuration
+ public Option[] configuration() {
+ return new Option[] {
+ baseOptions(), //
+ ariesJpa21(), //
+ derbyDSF(), //
+ jta12Bundles(), //
+ hibernate5_2(), //
+ testBundle(), //
+ };
+ }
+
+ @Override
+ protected String getProviderClassName() {
+ return "org.hibernate.jpa.HibernatePersistenceProvider";
+ }
+
+ @Override
+ protected Bundle getProviderBundle() {
+ return FrameworkUtil.getBundle(HibernateBundleActivator.class);
+ }
+}
http://git-wip-us.apache.org/repos/asf/aries-jpa/blob/eae9b2b6/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerHibernateTest.java
----------------------------------------------------------------------
diff --git a/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerHibernateTest.java b/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerHibernateTest.java
index da7ccf2..846c6bd 100644
--- a/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerHibernateTest.java
+++ b/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerHibernateTest.java
@@ -15,8 +15,11 @@
*/
package org.apache.aries.jpa.container.itest;
+import org.hibernate.osgi.HibernateBundleActivator;
import org.ops4j.pax.exam.Configuration;
import org.ops4j.pax.exam.Option;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.FrameworkUtil;
public class JPAContainerHibernateTest extends JPAContainerTest {
@@ -31,4 +34,14 @@ public class JPAContainerHibernateTest extends JPAContainerTest {
testBundle(), //
};
}
+
+ @Override
+ protected String getProviderClassName() {
+ return "org.hibernate.ejb.HibernatePersistence";
+ }
+
+ @Override
+ protected Bundle getProviderBundle() {
+ return FrameworkUtil.getBundle(HibernateBundleActivator.class);
+ }
}
http://git-wip-us.apache.org/repos/asf/aries-jpa/blob/eae9b2b6/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerOpenJPATest.java
----------------------------------------------------------------------
diff --git a/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerOpenJPATest.java b/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerOpenJPATest.java
index afc83b5..457529c 100644
--- a/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerOpenJPATest.java
+++ b/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerOpenJPATest.java
@@ -24,6 +24,8 @@ import org.apache.openjpa.enhance.PersistenceCapable;
import org.junit.Test;
import org.ops4j.pax.exam.Configuration;
import org.ops4j.pax.exam.Option;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.FrameworkUtil;
public class JPAContainerOpenJPATest extends JPAContainerTest {
@@ -46,4 +48,14 @@ public class JPAContainerOpenJPATest extends JPAContainerTest {
}
+ @Override
+ protected String getProviderClassName() {
+ return "org.apache.openjpa.persistence.PersistenceProviderImpl";
+ }
+
+ @Override
+ protected Bundle getProviderBundle() {
+ return FrameworkUtil.getBundle(PersistenceCapable.class);
+ }
+
}
http://git-wip-us.apache.org/repos/asf/aries-jpa/blob/eae9b2b6/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerTest.java
----------------------------------------------------------------------
diff --git a/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerTest.java b/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerTest.java
index c5c0edd..463338a 100644
--- a/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerTest.java
+++ b/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerTest.java
@@ -35,6 +35,7 @@ import org.apache.aries.jpa.container.itest.entities.Car;
import org.apache.aries.jpa.itest.AbstractCarJPAITest;
import org.apache.aries.jpa.supplier.EmSupplier;
import org.junit.Test;
+import org.osgi.framework.Bundle;
import org.osgi.service.coordinator.Coordination;
import org.osgi.service.coordinator.Coordinator;
import org.osgi.service.jdbc.DataSourceFactory;
@@ -44,10 +45,17 @@ public abstract class JPAContainerTest extends AbstractCarJPAITest {
@Inject
Coordinator coordinator;
+ protected abstract String getProviderClassName();
+ protected abstract Bundle getProviderBundle();
+
@Test
public void testCarEMFBuilder() throws Exception {
EntityManagerFactoryBuilder emfBuilder = getService(EntityManagerFactoryBuilder.class,
"(osgi.unit.name=" + DSF_TEST_UNIT + ")");
+
+ assertEquals(getProviderClassName(), emfBuilder.getPersistenceProviderName());
+ assertEquals(getProviderBundle(), emfBuilder.getPersistenceProviderBundle());
+
Map<String, Object> props = new HashMap<String, Object>();
EntityManagerFactory emf = emfBuilder.createEntityManagerFactory(props);
carLifecycleRL(emf.createEntityManager());
@@ -57,6 +65,10 @@ public abstract class JPAContainerTest extends AbstractCarJPAITest {
public void testTruckEMFBuilder() throws Exception {
EntityManagerFactoryBuilder emfBuilder = getService(EntityManagerFactoryBuilder.class,
"(osgi.unit.name=" + DSF_TEST_UNIT + ")");
+
+ assertEquals(getProviderClassName(), emfBuilder.getPersistenceProviderName());
+ assertEquals(getProviderBundle(), emfBuilder.getPersistenceProviderBundle());
+
Map<String, Object> props = new HashMap<String, Object>();
EntityManagerFactory emf = emfBuilder.createEntityManagerFactory(props);
truckLifecycleRL(emf.createEntityManager());
@@ -186,6 +198,9 @@ public abstract class JPAContainerTest extends AbstractCarJPAITest {
EntityManagerFactoryBuilder emfBuilder = getService(EntityManagerFactoryBuilder.class,
"(osgi.unit.name=" + EXTERNAL_TEST_UNIT + ")");
+ assertEquals(getProviderClassName(), emfBuilder.getPersistenceProviderName());
+ assertEquals(getProviderBundle(), emfBuilder.getPersistenceProviderBundle());
+
Properties jdbcProps = new Properties();
jdbcProps.setProperty("url", "jdbc:derby:memory:DSFTEST;create=true");
@@ -204,7 +219,10 @@ public abstract class JPAContainerTest extends AbstractCarJPAITest {
EntityManagerFactoryBuilder emfBuilder = getService(EntityManagerFactoryBuilder.class,
"(osgi.unit.name=" + EXTERNAL_TEST_UNIT + ")");
-
+
+ assertEquals(getProviderClassName(), emfBuilder.getPersistenceProviderName());
+ assertEquals(getProviderBundle(), emfBuilder.getPersistenceProviderBundle());
+
Properties jdbcProps = new Properties();
jdbcProps.setProperty("url", "jdbc:derby:memory:DSFTEST;create=true");
@@ -220,7 +238,10 @@ public abstract class JPAContainerTest extends AbstractCarJPAITest {
public void testCarEMFBuilderExternalDSXA() throws Exception {
EntityManagerFactoryBuilder emfBuilder = getService(EntityManagerFactoryBuilder.class,
"(osgi.unit.name=" + EXTERNAL_TEST_UNIT + ")");
-
+
+ assertEquals(getProviderClassName(), emfBuilder.getPersistenceProviderName());
+ assertEquals(getProviderBundle(), emfBuilder.getPersistenceProviderBundle());
+
Map<String, Object> props = new HashMap<String, Object>();
props.put("javax.persistence.jtaDataSource", ds);
props.put("javax.persistence.transactionType", JTA.name());
@@ -234,7 +255,10 @@ public abstract class JPAContainerTest extends AbstractCarJPAITest {
public void testTruckEMFBuilderExternalDSXA() throws Exception {
EntityManagerFactoryBuilder emfBuilder = getService(EntityManagerFactoryBuilder.class,
"(osgi.unit.name=" + EXTERNAL_TEST_UNIT + ")");
-
+
+ assertEquals(getProviderClassName(), emfBuilder.getPersistenceProviderName());
+ assertEquals(getProviderBundle(), emfBuilder.getPersistenceProviderBundle());
+
Map<String, Object> props = new HashMap<String, Object>();
props.put("javax.persistence.jtaDataSource", ds);
props.put("javax.persistence.transactionType", JTA.name());
@@ -249,6 +273,9 @@ public abstract class JPAContainerTest extends AbstractCarJPAITest {
EntityManagerFactoryBuilder emfBuilder = getService(EntityManagerFactoryBuilder.class,
"(osgi.unit.name=" + EXTERNAL_TEST_UNIT + ")");
+ assertEquals(getProviderClassName(), emfBuilder.getPersistenceProviderName());
+ assertEquals(getProviderBundle(), emfBuilder.getPersistenceProviderBundle());
+
Map<String, Object> props = new HashMap<String, Object>();
Properties jdbcProps = new Properties();
jdbcProps.setProperty("url", "jdbc:derby:memory:TESTNOJTA;create=true");
@@ -263,7 +290,10 @@ public abstract class JPAContainerTest extends AbstractCarJPAITest {
public void testTruckEMFBuilderNoNonJTADataSource() throws Exception {
EntityManagerFactoryBuilder emfBuilder = getService(EntityManagerFactoryBuilder.class,
"(osgi.unit.name=" + EXTERNAL_TEST_UNIT + ")");
-
+
+ assertEquals(getProviderClassName(), emfBuilder.getPersistenceProviderName());
+ assertEquals(getProviderBundle(), emfBuilder.getPersistenceProviderBundle());
+
Map<String, Object> props = new HashMap<String, Object>();
Properties jdbcProps = new Properties();
jdbcProps.setProperty("url", "jdbc:derby:memory:TESTNOJTA;create=true");
http://git-wip-us.apache.org/repos/asf/aries-jpa/blob/eae9b2b6/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/itest/AbstractJPAItest.java
----------------------------------------------------------------------
diff --git a/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/itest/AbstractJPAItest.java b/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/itest/AbstractJPAItest.java
index d3eb4cf..c0a2692 100644
--- a/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/itest/AbstractJPAItest.java
+++ b/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/itest/AbstractJPAItest.java
@@ -19,6 +19,7 @@ import static org.ops4j.pax.exam.CoreOptions.composite;
import static org.ops4j.pax.exam.CoreOptions.frameworkProperty;
import static org.ops4j.pax.exam.CoreOptions.junitBundles;
import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
+import static org.ops4j.pax.exam.CoreOptions.systemPackage;
import static org.ops4j.pax.exam.CoreOptions.systemProperty;
import static org.ops4j.pax.exam.CoreOptions.vmOption;
import static org.ops4j.pax.exam.CoreOptions.when;
@@ -269,6 +270,23 @@ public abstract class AbstractJPAItest {
mvnBundle("org.hibernate", "hibernate-osgi")
);
}
+
+ protected Option hibernate5_2() {
+ return composite(
+ systemPackage("javax.xml.stream;version=1.0"),
+ systemPackage("javax.xml.stream.events;version=1.0"),
+ systemPackage("javax.xml.stream.util;version=1.0"),
+ mavenBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.antlr", "2.7.7_5"),
+ mavenBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.dom4j", "1.6.1_5"),
+ mavenBundle("com.fasterxml", "classmate", "1.3.0"),
+ mavenBundle("org.javassist", "javassist", "3.20.0-GA"),
+ mavenBundle("org.jboss.logging", "jboss-logging", "3.3.0.Final"),
+ mavenBundle("org.jboss", "jandex", "2.0.3.Final"),
+ mavenBundle("org.hibernate.common", "hibernate-commons-annotations", "5.0.1.Final"),
+ mavenBundle("org.hibernate", "hibernate-core", "5.2.10.Final"),
+ mavenBundle("org.hibernate", "hibernate-osgi", "5.2.10.Final")
+ );
+ }
protected Option derbyDSF() {
return composite(
http://git-wip-us.apache.org/repos/asf/aries-jpa/blob/eae9b2b6/javax-persistence/README.md
----------------------------------------------------------------------
diff --git a/javax-persistence/README.md b/javax-persistence/README.md
new file mode 100644
index 0000000..d663a0c
--- /dev/null
+++ b/javax-persistence/README.md
@@ -0,0 +1,15 @@
+# Aries JPA Specification Jars
+
+These projects contain the JPA API at various versions, providing proper OSGi packaging and contracts so that they can be used easily in OSGi.
+
+##Using the JPA API with your OSGi bundles
+
+If you are using a bnd based plugin (e.g. the bnd-maven-plugin or the maven-bundle-plugin) then you should make sure to set the following:
+
+ -contract: *
+
+or
+
+ -contract: JavaJPA
+
+in your bnd configuration. This will ensure that your bundle is built depending on the JPA contract, and therefore that it will not need to be repackaged to use future, backward compatible versions of the JPA specification.
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/aries-jpa/blob/eae9b2b6/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/AriesEntityManagerFactoryBuilder.java
----------------------------------------------------------------------
diff --git a/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/AriesEntityManagerFactoryBuilder.java b/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/AriesEntityManagerFactoryBuilder.java
index 56ad2c2..dca7270 100644
--- a/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/AriesEntityManagerFactoryBuilder.java
+++ b/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/AriesEntityManagerFactoryBuilder.java
@@ -67,6 +67,7 @@ public class AriesEntityManagerFactoryBuilder implements EntityManagerFactoryBui
private boolean closed;
private final PersistenceProvider provider;
+ private final Bundle providerBundle;
private final PersistenceUnit persistenceUnit;
private final BundleContext containerContext;
private final PersistenceUnitTransactionType originalTxType;
@@ -83,8 +84,10 @@ public class AriesEntityManagerFactoryBuilder implements EntityManagerFactoryBui
private boolean complete;
- public AriesEntityManagerFactoryBuilder(BundleContext containerContext, PersistenceProvider provider, PersistenceUnit persistenceUnit) {
+
+ public AriesEntityManagerFactoryBuilder(BundleContext containerContext, PersistenceProvider provider, Bundle providerBundle, PersistenceUnit persistenceUnit) {
this.provider = provider;
+ this.providerBundle = providerBundle;
this.persistenceUnit = persistenceUnit;
this.containerContext = containerContext;
this.originalTxType = persistenceUnit.getTransactionType();
@@ -139,6 +142,17 @@ public class AriesEntityManagerFactoryBuilder implements EntityManagerFactoryBui
}
@Override
+ public String getPersistenceProviderName() {
+ String name = persistenceUnit.getPersistenceProviderClassName();
+ return name == null ? provider.getClass().getName() : name;
+ }
+
+ @Override
+ public Bundle getPersistenceProviderBundle() {
+ return providerBundle;
+ }
+
+ @Override
public EntityManagerFactory createEntityManagerFactory(Map<String, Object> props) {
synchronized (this) {
http://git-wip-us.apache.org/repos/asf/aries-jpa/blob/eae9b2b6/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 ac7e96d..540a792 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
@@ -85,7 +85,7 @@ public class PersistenceProviderTracker extends ServiceTracker<PersistenceProvid
createAndCloseDummyEMF(provider);
- stored.builder = new AriesEntityManagerFactoryBuilder(context, provider, punit);
+ stored.builder = new AriesEntityManagerFactoryBuilder(context, provider, reference.getBundle(), punit);
Dictionary<String, ?> props = AriesEntityManagerFactoryBuilder.createBuilderProperties(punit, punit.getBundle());
stored.reg = context.registerService(EntityManagerFactoryBuilder.class, stored.builder , props);
return stored;
http://git-wip-us.apache.org/repos/asf/aries-jpa/blob/eae9b2b6/jpa-container/src/test/java/org/apache/aries/jpa/container/impl/PropsConfigurationTest.java
----------------------------------------------------------------------
diff --git a/jpa-container/src/test/java/org/apache/aries/jpa/container/impl/PropsConfigurationTest.java b/jpa-container/src/test/java/org/apache/aries/jpa/container/impl/PropsConfigurationTest.java
index b0f1f7e..4b94f7f 100644
--- a/jpa-container/src/test/java/org/apache/aries/jpa/container/impl/PropsConfigurationTest.java
+++ b/jpa-container/src/test/java/org/apache/aries/jpa/container/impl/PropsConfigurationTest.java
@@ -21,6 +21,7 @@ package org.apache.aries.jpa.container.impl;
import static java.util.Collections.singletonMap;
import static javax.persistence.spi.PersistenceUnitTransactionType.JTA;
import static javax.persistence.spi.PersistenceUnitTransactionType.RESOURCE_LOCAL;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.fail;
import static org.mockito.AdditionalMatchers.and;
@@ -29,7 +30,6 @@ import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyMap;
import static org.mockito.Matchers.argThat;
import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyZeroInteractions;
import static org.mockito.Mockito.when;
@@ -75,6 +75,8 @@ import org.osgi.service.jdbc.DataSourceFactory;
@RunWith(MockitoJUnitRunner.class)
public class PropsConfigurationTest {
+ private static final String ECLIPSE_PERSISTENCE_PROVIDER = "org.eclipse.persistence.jpa.PersistenceProvider";
+
private static final String JDBC_PASSWORD = "123456";
private static final String JDBC_USER = "bob";
@@ -94,7 +96,7 @@ public class PropsConfigurationTest {
BundleContext containerContext, punitContext;
@Mock
- Bundle punitBundle;
+ Bundle punitBundle, providerBundle;
@Mock
EntityManagerFactory emf;
@@ -122,7 +124,7 @@ public class PropsConfigurationTest {
when(punit.getPersistenceUnitName()).thenReturn("test-props");
when(punit.getPersistenceProviderClassName())
- .thenReturn("org.eclipse.persistence.jpa.PersistenceProvider");
+ .thenReturn(ECLIPSE_PERSISTENCE_PROVIDER);
when(punit.getTransactionType()).thenReturn(PersistenceUnitTransactionType.JTA);
when(punit.getBundle()).thenReturn(punitBundle);
when(punit.getProperties()).thenReturn(punitProperties);
@@ -161,7 +163,7 @@ public class PropsConfigurationTest {
public void testRegistersManagedEMF() throws InvalidSyntaxException, ConfigurationException {
AriesEntityManagerFactoryBuilder emfb = new AriesEntityManagerFactoryBuilder(
- containerContext, provider, punit);
+ containerContext, provider, providerBundle, punit);
verify(containerContext).registerService(eq(ManagedService.class),
any(ManagedService.class), argThat(servicePropsMatcher(
@@ -201,7 +203,10 @@ public class PropsConfigurationTest {
.thenReturn(emf);
AriesEntityManagerFactoryBuilder emfb = new AriesEntityManagerFactoryBuilder(
- containerContext, provider, punit);
+ containerContext, provider, providerBundle, punit);
+
+ assertEquals(ECLIPSE_PERSISTENCE_PROVIDER, emfb.getPersistenceProviderName());
+ assertEquals(providerBundle, emfb.getPersistenceProviderBundle());
try {
emfb.createEntityManagerFactory(null);
@@ -230,9 +235,12 @@ public class PropsConfigurationTest {
props.put("javax.persistence.dataSource", ds);
AriesEntityManagerFactoryBuilder emfb = new AriesEntityManagerFactoryBuilder(
- containerContext, provider, punit);
- emfb.createEntityManagerFactory(props);
+ containerContext, provider, providerBundle, punit);
+ assertEquals(ECLIPSE_PERSISTENCE_PROVIDER, emfb.getPersistenceProviderName());
+ assertEquals(providerBundle, emfb.getPersistenceProviderBundle());
+
+ emfb.createEntityManagerFactory(props);
verify(punit).setNonJtaDataSource(ds);
verify(punitContext).registerService(eq(EntityManagerFactory.class),
@@ -259,7 +267,7 @@ public class PropsConfigurationTest {
props.put("javax.persistence.dataSource", ds);
AriesEntityManagerFactoryBuilder emfb = new AriesEntityManagerFactoryBuilder(
- containerContext, provider, punit);
+ containerContext, provider, providerBundle, punit);
emfb.createEntityManagerFactory(props);
@@ -289,7 +297,7 @@ public class PropsConfigurationTest {
any(Map.class))).thenReturn(emf);
AriesEntityManagerFactoryBuilder emfb = new AriesEntityManagerFactoryBuilder(
- containerContext, provider, punit);
+ containerContext, provider, providerBundle, punit);
verify(punit).setJtaDataSource(ds);
verify(punitContext).registerService(eq(EntityManagerFactory.class),
@@ -317,7 +325,7 @@ public class PropsConfigurationTest {
any(Map.class))).thenReturn(emf);
AriesEntityManagerFactoryBuilder emfb = new AriesEntityManagerFactoryBuilder(
- containerContext, provider, punit);
+ containerContext, provider, providerBundle, punit);
verify(punit).setJtaDataSource(ds);
verify(punitContext).registerService(eq(EntityManagerFactory.class),
@@ -351,7 +359,7 @@ public class PropsConfigurationTest {
any(Map.class))).thenReturn(emf);
AriesEntityManagerFactoryBuilder emfb = new AriesEntityManagerFactoryBuilder(
- containerContext, provider, punit);
+ containerContext, provider, providerBundle, punit);
verifyZeroInteractions(provider);
@@ -393,7 +401,7 @@ public class PropsConfigurationTest {
any(Map.class))).thenReturn(emf);
AriesEntityManagerFactoryBuilder emfb = new AriesEntityManagerFactoryBuilder(
- containerContext, provider, punit);
+ containerContext, provider, providerBundle, punit);
verify(punit).setJtaDataSource(ds);
verify(punitContext).registerService(eq(EntityManagerFactory.class),
@@ -418,7 +426,7 @@ public class PropsConfigurationTest {
any(Map.class))).thenReturn(emf);
AriesEntityManagerFactoryBuilder emfb = new AriesEntityManagerFactoryBuilder(
- containerContext, provider, punit);
+ containerContext, provider, providerBundle, punit);
verify(punit).setNonJtaDataSource(ds);
verify(punitContext).registerService(eq(EntityManagerFactory.class),
@@ -438,7 +446,7 @@ public class PropsConfigurationTest {
props.put("javax.persistence.dataSource", ds);
AriesEntityManagerFactoryBuilder emfb = new AriesEntityManagerFactoryBuilder(
- containerContext, provider, punit);
+ containerContext, provider, providerBundle, punit);
EntityManagerFactory returnedEMF = emfb.createEntityManagerFactory(props);
@@ -466,7 +474,7 @@ public class PropsConfigurationTest {
props.put("javax.persistence.dataSource", ds);
AriesEntityManagerFactoryBuilder emfb = new AriesEntityManagerFactoryBuilder(
- containerContext, provider, punit);
+ containerContext, provider, providerBundle, punit);
emfb.createEntityManagerFactory(props);
http://git-wip-us.apache.org/repos/asf/aries-jpa/blob/eae9b2b6/jpa-support/README.md
----------------------------------------------------------------------
diff --git a/jpa-support/README.md b/jpa-support/README.md
new file mode 100644
index 0000000..14d50e9
--- /dev/null
+++ b/jpa-support/README.md
@@ -0,0 +1,3 @@
+#Aries JPA Helper services
+
+These services are deprecated in favour of the standard OSGi Transaction Control Service, which provides a much fuller set of available functions.
\ No newline at end of file