[tx-control] Add tests for OpenJPA 2.4.1
git-svn-id: https://svn.apache.org/repos/asf/aries/trunk/tx-control@1738125 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/AbstractJPATransactionTest.java b/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/AbstractJPATransactionTest.java
index dfb02e2..a778fd2 100644
--- a/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/AbstractJPATransactionTest.java
+++ b/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/AbstractJPATransactionTest.java
@@ -30,11 +30,8 @@
import java.util.Hashtable;
import javax.persistence.EntityManager;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaDelete;
import org.apache.aries.itest.AbstractIntegrationTest;
-import org.apache.aries.tx.control.itests.entity.Message;
import org.h2.tools.Server;
import org.junit.After;
import org.junit.Before;
@@ -91,7 +88,7 @@
private EntityManager configuredEntityManager(String jdbcUrl) throws IOException {
- Dictionary<String, Object> props = new Hashtable<>();
+ Dictionary<String, Object> props = getBaseProperties();
props.put(DataSourceFactory.OSGI_JDBC_DRIVER_CLASS, "org.h2.Driver");
props.put(DataSourceFactory.JDBC_URL, jdbcUrl);
@@ -115,23 +112,14 @@
return context().getService(JPAEntityManagerProvider.class, 5000).getResource(txControl);
}
+
+ protected Dictionary<String, Object> getBaseProperties() {
+ return new Hashtable<>();
+ }
@After
public void tearDown() {
- try {
- txControl.required(() ->
- {
- CriteriaBuilder cb = em.getCriteriaBuilder();
- CriteriaDelete<Message> delete = cb.createCriteriaDelete(Message.class);
- delete.from(Message.class);
- return em.createQuery(delete).executeUpdate();
- });
- } catch (Exception e) {
- e.printStackTrace();
- }
-
-
clearConfiguration();
if(server != null) {
@@ -192,7 +180,7 @@
mavenBundle("org.ops4j.pax.logging", "pax-logging-api").versionAsInProject(),
mavenBundle("org.ops4j.pax.logging", "pax-logging-service").versionAsInProject()
-// ,CoreOptions.vmOption("-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005")
+ ,CoreOptions.vmOption("-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005")
);
}
diff --git a/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/SimpleOpenJPA_2_4_1_Test.java b/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/SimpleOpenJPA_2_4_1_Test.java
new file mode 100644
index 0000000..85c4bae
--- /dev/null
+++ b/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/SimpleOpenJPA_2_4_1_Test.java
@@ -0,0 +1,54 @@
+package org.apache.aries.tx.control.itests;
+
+import static org.ops4j.pax.exam.CoreOptions.bootClasspathLibrary;
+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 java.util.Dictionary;
+import java.util.Hashtable;
+
+import org.ops4j.pax.exam.CoreOptions;
+import org.ops4j.pax.exam.Option;
+
+public class SimpleOpenJPA_2_4_1_Test extends AbstractSimpleTransactionTest {
+
+ protected String ariesJPAVersion() {
+ return "2.4.0-SNAPSHOT";
+ }
+
+ protected Dictionary<String, Object> getBaseProperties() {
+ Dictionary<String, Object> base = new Hashtable<>();
+ //This is necessary due to https://issues.apache.org/jira/browse/OPENJPA-2521
+ base.put("openjpa.MetaDataFactory", "jpa(Types=org.apache.aries.tx.control.itests.entity.Message)");
+ base.put("openjpa.RuntimeUnenhancedClasses", "supported");
+
+ //This is necessary as OpenJPA is only JPA 2.0 compliant and does not understand the standard properties
+ base.put("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=true, SchemaAction='add,deleteTableContents')");
+
+ base.put("openjpa.Log", "DefaultLevel=TRACE");
+ return base;
+ }
+
+ @Override
+ protected Option jpaProvider() {
+ return CoreOptions.composite(
+ // Add JTA 1.1 as a system package because of the link to javax.sql
+
+ systemProperty(ARIES_EMF_BUILDER_TARGET_FILTER)
+ .value("(osgi.unit.provider=org.apache.openjpa.persistence.PersistenceProviderImpl)"),
+ systemPackage("javax.transaction;version=1.1"),
+ systemPackage("javax.transaction.xa;version=1.1"),
+ bootClasspathLibrary(mavenBundle("org.apache.geronimo.specs", "geronimo-jta_1.1_spec", "1.1.1")).beforeFramework(),
+
+ // OpenJPA bundles and their dependencies (JPA API is available from the tx-control)
+ mavenBundle("commons-pool", "commons-pool", "1.5.4"),
+ mavenBundle("commons-lang", "commons-lang", "2.4"),
+ mavenBundle("commons-collections", "commons-collections", "3.2.2"),
+ mavenBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.serp", "1.15.1_1"),
+ mavenBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.commons-dbcp", "1.4_3"),
+ mavenBundle("org.apache.xbean", "xbean-asm5-shaded", "3.17"),
+ mavenBundle("org.apache.openjpa", "openjpa", "2.4.1"));
+ }
+
+}
diff --git a/tx-control-provider-jpa-local/src/main/java/org/apache/aries/tx/control/jpa/local/impl/JPAEntityManagerProviderFactoryImpl.java b/tx-control-provider-jpa-local/src/main/java/org/apache/aries/tx/control/jpa/local/impl/JPAEntityManagerProviderFactoryImpl.java
index 5eb6158..93bb9f0 100644
--- a/tx-control-provider-jpa-local/src/main/java/org/apache/aries/tx/control/jpa/local/impl/JPAEntityManagerProviderFactoryImpl.java
+++ b/tx-control-provider-jpa-local/src/main/java/org/apache/aries/tx/control/jpa/local/impl/JPAEntityManagerProviderFactoryImpl.java
@@ -37,7 +37,7 @@
tranType = PersistenceUnitTransactionType.valueOf(o.toString());
} else {
//TODO log this?
- tranType = null;
+ tranType = RESOURCE_LOCAL;
}
if(RESOURCE_LOCAL != tranType) {