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 2016/06/15 09:04:32 UTC
svn commit: r1748528 - in /aries/trunk/tx-control: tx-control-itests/
tx-control-itests/src/test/java/org/apache/aries/tx/control/itests/
tx-control-jpa-itests/
tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/
Author: timothyjward
Date: Wed Jun 15 09:04:32 2016
New Revision: 1748528
URL: http://svn.apache.org/viewvc?rev=1748528&view=rev
Log:
[tx-control] Switch dependencies to release versions
Modified:
aries/trunk/tx-control/tx-control-itests/pom.xml
aries/trunk/tx-control/tx-control-itests/src/test/java/org/apache/aries/tx/control/itests/AbstractTransactionTest.java
aries/trunk/tx-control/tx-control-itests/src/test/java/org/apache/aries/tx/control/itests/XATransactionTest.java
aries/trunk/tx-control/tx-control-jpa-itests/pom.xml
aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/AbstractJPATransactionTest.java
aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/SimpleEclipseLink_2_6_0_Test.java
aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/SimpleHibernate_5_0_9_Test.java
aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/SimpleOpenJPA_2_4_1_Test.java
aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/XAEclipseLink_2_6_0_Test.java
aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/XAHibernate_5_0_9_Test.java
aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/XAJPATransactionTest.java
aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/XAOpenJPA_2_4_1_Test.java
Modified: aries/trunk/tx-control/tx-control-itests/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/tx-control/tx-control-itests/pom.xml?rev=1748528&r1=1748527&r2=1748528&view=diff
==============================================================================
--- aries/trunk/tx-control/tx-control-itests/pom.xml (original)
+++ aries/trunk/tx-control/tx-control-itests/pom.xml Wed Jun 15 09:04:32 2016
@@ -124,12 +124,6 @@
<version>3.1.4.RELEASE</version>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>org.apache.aries.testsupport</groupId>
- <artifactId>org.apache.aries.testsupport.unit</artifactId>
- <version>2.0.0-SNAPSHOT</version>
- <scope>test</scope>
- </dependency>
<!-- pax exam -->
<dependency>
Modified: aries/trunk/tx-control/tx-control-itests/src/test/java/org/apache/aries/tx/control/itests/AbstractTransactionTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/tx-control/tx-control-itests/src/test/java/org/apache/aries/tx/control/itests/AbstractTransactionTest.java?rev=1748528&r1=1748527&r2=1748528&view=diff
==============================================================================
--- aries/trunk/tx-control/tx-control-itests/src/test/java/org/apache/aries/tx/control/itests/AbstractTransactionTest.java (original)
+++ aries/trunk/tx-control/tx-control-itests/src/test/java/org/apache/aries/tx/control/itests/AbstractTransactionTest.java Wed Jun 15 09:04:32 2016
@@ -29,10 +29,14 @@ import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
+import java.util.ArrayList;
import java.util.Hashtable;
+import java.util.List;
+import java.util.NoSuchElementException;
import java.util.Properties;
-import org.apache.aries.itest.AbstractIntegrationTest;
+import javax.inject.Inject;
+
import org.h2.tools.Server;
import org.junit.After;
import org.junit.Before;
@@ -43,30 +47,41 @@ import org.ops4j.pax.exam.Option;
import org.ops4j.pax.exam.junit.PaxExam;
import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
import org.ops4j.pax.exam.spi.reactors.PerClass;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Filter;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
import org.osgi.service.cm.ConfigurationAdmin;
import org.osgi.service.jdbc.DataSourceFactory;
import org.osgi.service.transaction.control.TransactionControl;
import org.osgi.service.transaction.control.jdbc.JDBCConnectionProvider;
import org.osgi.service.transaction.control.jdbc.JDBCConnectionProviderFactory;
+import org.osgi.util.tracker.ServiceTracker;
@RunWith(PaxExam.class)
@ExamReactorStrategy(PerClass.class)
-public abstract class AbstractTransactionTest extends AbstractIntegrationTest {
-
+public abstract class AbstractTransactionTest {
+
private static final String TX_CONTROL_FILTER = "org.apache.aries.tx.control.itests.filter";
private static final String REMOTE_DB_PROPERTY = "org.apache.aries.tx.control.itests.remotedb";
private static final String CONFIGURED_PROVIDER_PROPERTY = "org.apache.aries.tx.control.itests.configured";
+ @Inject
+ BundleContext context;
+
protected TransactionControl txControl;
protected Connection connection;
private Server server;
+
+ private final List<ServiceTracker<?,?>> trackers = new ArrayList<>();
@Before
public void setUp() throws Exception {
- txControl = context().getService(TransactionControl.class,
+ txControl = getService(TransactionControl.class,
System.getProperty(TX_CONTROL_FILTER), 5000);
Properties jdbc = new Properties();
@@ -99,12 +114,43 @@ public abstract class AbstractTransactio
});
}
+ private <T> T getService(Class<T> clazz, long timeout) {
+ try {
+ return getService(clazz, null, timeout);
+ } catch (InvalidSyntaxException e) {
+ throw new IllegalArgumentException(e);
+ }
+ }
+
+ private <T> T getService(Class<T> clazz, String filter, long timeout) throws InvalidSyntaxException {
+ Filter f = FrameworkUtil.createFilter(filter == null ? "(|(foo=bar)(!(foo=bar)))" : filter);
+
+ ServiceTracker<T, T> tracker = new ServiceTracker<T, T>(context, clazz, null) {
+ @Override
+ public T addingService(ServiceReference<T> reference) {
+ return f.match(reference) ? super.addingService(reference) : null;
+ }
+ };
+
+ tracker.open();
+ try {
+ T t = tracker.waitForService(timeout);
+ if(t == null) {
+ throw new NoSuchElementException(clazz.getName());
+ }
+ return t;
+ } catch (InterruptedException e) {
+ throw new RuntimeException("Error waiting for service " + clazz.getName(), e);
+ } finally {
+ trackers.add(tracker);
+ }
+ }
+
private Connection programaticConnection(Properties jdbc) {
- JDBCConnectionProviderFactory resourceProviderFactory = context()
- .getService(JDBCConnectionProviderFactory.class, 5000);
+ JDBCConnectionProviderFactory resourceProviderFactory = getService(JDBCConnectionProviderFactory.class, 5000);
- DataSourceFactory dsf = context().getService(DataSourceFactory.class, 5000);
+ DataSourceFactory dsf = getService(DataSourceFactory.class, 5000);
return resourceProviderFactory.getProviderFor(dsf, jdbc, null).getResource(txControl);
}
@@ -115,7 +161,7 @@ public abstract class AbstractTransactio
String type = System.getProperty(CONFIGURED_PROVIDER_PROPERTY);
jdbc.setProperty(DataSourceFactory.OSGI_JDBC_DRIVER_CLASS, "org.h2.Driver");
- ConfigurationAdmin cm = context().getService(ConfigurationAdmin.class, 5000);
+ ConfigurationAdmin cm = getService(ConfigurationAdmin.class, 5000);
String pid = "local".equals(type) ? "org.apache.aries.tx.control.jdbc.local"
: "org.apache.aries.tx.control.jdbc.xa";
@@ -126,7 +172,7 @@ public abstract class AbstractTransactio
pid, null);
config.update((Hashtable)jdbc);
- return context().getService(JDBCConnectionProvider.class, 5000).getResource(txControl);
+ return getService(JDBCConnectionProvider.class, 5000).getResource(txControl);
}
@After
@@ -143,12 +189,14 @@ public abstract class AbstractTransactio
if(server != null) {
server.stop();
}
+
+ trackers.stream().forEach(ServiceTracker::close);
connection = null;
}
private void clearConfiguration() {
- ConfigurationAdmin cm = context().getService(ConfigurationAdmin.class, 5000);
+ ConfigurationAdmin cm = getService(ConfigurationAdmin.class, 5000);
org.osgi.service.cm.Configuration[] cfgs = null;
try {
cfgs = cm.listConfigurations(null);
@@ -184,7 +232,6 @@ public abstract class AbstractTransactio
return options(junitBundles(), systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
when(localRepo != null)
.useOptions(CoreOptions.vmOption("-Dorg.ops4j.pax.url.mvn.localRepository=" + localRepo)),
- mavenBundle("org.apache.aries.testsupport", "org.apache.aries.testsupport.unit").versionAsInProject(),
localTxControlService(),
localJdbcResourceProviderWithH2(),
when(testSpecificOptions != null).useOptions(testSpecificOptions),
@@ -207,7 +254,6 @@ public abstract class AbstractTransactio
return options(junitBundles(), systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
when(localRepo != null)
.useOptions(CoreOptions.vmOption("-Dorg.ops4j.pax.url.mvn.localRepository=" + localRepo)),
- mavenBundle("org.apache.aries.testsupport", "org.apache.aries.testsupport.unit").versionAsInProject(),
localTxControlService(),
localJdbcResourceProviderWithH2(),
systemProperty(REMOTE_DB_PROPERTY).value(getRemoteDBPath()),
@@ -231,7 +277,6 @@ public abstract class AbstractTransactio
return options(junitBundles(), systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
when(localRepo != null)
.useOptions(CoreOptions.vmOption("-Dorg.ops4j.pax.url.mvn.localRepository=" + localRepo)),
- mavenBundle("org.apache.aries.testsupport", "org.apache.aries.testsupport.unit").versionAsInProject(),
localTxControlService(),
localJdbcResourceProviderWithH2(),
systemProperty(REMOTE_DB_PROPERTY).value(getRemoteDBPath()),
@@ -257,7 +302,6 @@ public abstract class AbstractTransactio
return options(junitBundles(), systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
when(localRepo != null)
.useOptions(CoreOptions.vmOption("-Dorg.ops4j.pax.url.mvn.localRepository=" + localRepo)),
- mavenBundle("org.apache.aries.testsupport", "org.apache.aries.testsupport.unit").versionAsInProject(),
xaTxControlService(),
localJdbcResourceProviderWithH2(),
when(testSpecificOptions != null).useOptions(testSpecificOptions),
@@ -280,7 +324,6 @@ public abstract class AbstractTransactio
return options(junitBundles(), systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
when(localRepo != null)
.useOptions(CoreOptions.vmOption("-Dorg.ops4j.pax.url.mvn.localRepository=" + localRepo)),
- mavenBundle("org.apache.aries.testsupport", "org.apache.aries.testsupport.unit").versionAsInProject(),
xaTxControlService(),
localJdbcResourceProviderWithH2(),
systemProperty(REMOTE_DB_PROPERTY).value(getRemoteDBPath()),
@@ -304,7 +347,6 @@ public abstract class AbstractTransactio
return options(junitBundles(), systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
when(localRepo != null)
.useOptions(CoreOptions.vmOption("-Dorg.ops4j.pax.url.mvn.localRepository=" + localRepo)),
- mavenBundle("org.apache.aries.testsupport", "org.apache.aries.testsupport.unit").versionAsInProject(),
xaTxControlService(),
localJdbcResourceProviderWithH2(),
systemProperty(REMOTE_DB_PROPERTY).value(getRemoteDBPath()),
@@ -330,7 +372,6 @@ public abstract class AbstractTransactio
return options(junitBundles(), systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
when(localRepo != null)
.useOptions(CoreOptions.vmOption("-Dorg.ops4j.pax.url.mvn.localRepository=" + localRepo)),
- mavenBundle("org.apache.aries.testsupport", "org.apache.aries.testsupport.unit").versionAsInProject(),
xaTxControlService(),
xaJdbcResourceProviderWithH2(),
systemProperty(REMOTE_DB_PROPERTY).value(getRemoteDBPath()),
@@ -354,7 +395,6 @@ public abstract class AbstractTransactio
return options(junitBundles(), systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
when(localRepo != null)
.useOptions(CoreOptions.vmOption("-Dorg.ops4j.pax.url.mvn.localRepository=" + localRepo)),
- mavenBundle("org.apache.aries.testsupport", "org.apache.aries.testsupport.unit").versionAsInProject(),
xaTxControlService(),
xaJdbcResourceProviderWithH2(),
systemProperty(REMOTE_DB_PROPERTY).value(getRemoteDBPath()),
Modified: aries/trunk/tx-control/tx-control-itests/src/test/java/org/apache/aries/tx/control/itests/XATransactionTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/tx-control/tx-control-itests/src/test/java/org/apache/aries/tx/control/itests/XATransactionTest.java?rev=1748528&r1=1748527&r2=1748528&view=diff
==============================================================================
--- aries/trunk/tx-control/tx-control-itests/src/test/java/org/apache/aries/tx/control/itests/XATransactionTest.java (original)
+++ aries/trunk/tx-control/tx-control-itests/src/test/java/org/apache/aries/tx/control/itests/XATransactionTest.java Wed Jun 15 09:04:32 2016
@@ -38,7 +38,6 @@ import javax.transaction.xa.XAException;
import javax.transaction.xa.XAResource;
import javax.transaction.xa.Xid;
-import org.apache.aries.itest.AbstractIntegrationTest;
import org.h2.tools.Server;
import org.junit.After;
import org.junit.Before;
@@ -58,7 +57,7 @@ import org.osgi.service.transaction.cont
@RunWith(PaxExam.class)
@ExamReactorStrategy(PerClass.class)
-public class XATransactionTest extends AbstractIntegrationTest {
+public class XATransactionTest {
@Inject
@Filter("(osgi.xa.enabled=true)")
@@ -67,6 +66,10 @@ public class XATransactionTest extends A
@Inject
@Filter("(osgi.xa.enabled=true)")
private JDBCConnectionProviderFactory factory;
+
+ @Inject
+ @Filter("(osgi.jdbc.driver.class=org.h2.Driver)")
+ private DataSourceFactory dsf;
protected Connection connection1;
protected Connection connection2;
@@ -88,10 +91,10 @@ public class XATransactionTest extends A
String jdbcUrl2 = "jdbc:h2:tcp://127.0.0.1:" + server2.getPort() + "/" + getRemoteDBPath("db2");
jdbc.setProperty(DataSourceFactory.JDBC_URL, jdbcUrl1);
- connection1 = programaticConnection(jdbc);
+ connection1 = factory.getProviderFor(dsf, jdbc, null).getResource(txControl);
jdbc.setProperty(DataSourceFactory.JDBC_URL, jdbcUrl2);
- connection2 = programaticConnection(jdbc);
+ connection2 = factory.getProviderFor(dsf, jdbc, null).getResource(txControl);
txControl.required(() -> {
Statement s = connection1.createStatement();
@@ -111,16 +114,6 @@ public class XATransactionTest extends A
});
}
- private Connection programaticConnection(Properties jdbc) {
-
- JDBCConnectionProviderFactory resourceProviderFactory = context()
- .getService(JDBCConnectionProviderFactory.class, 5000);
-
- DataSourceFactory dsf = context().getService(DataSourceFactory.class, 5000);
-
- return resourceProviderFactory.getProviderFor(dsf, jdbc, null).getResource(txControl);
- }
-
@After
public void tearDown() {
@@ -230,7 +223,6 @@ public class XATransactionTest extends A
return options(junitBundles(), systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
when(localRepo != null)
.useOptions(CoreOptions.vmOption("-Dorg.ops4j.pax.url.mvn.localRepository=" + localRepo)),
- mavenBundle("org.apache.aries.testsupport", "org.apache.aries.testsupport.unit").versionAsInProject(),
mavenBundle("org.apache.aries.tx-control", "tx-control-service-xa").versionAsInProject(),
mavenBundle("com.h2database", "h2").versionAsInProject(),
mavenBundle("org.apache.aries.tx-control", "tx-control-provider-jdbc-xa").versionAsInProject(),
Modified: aries/trunk/tx-control/tx-control-jpa-itests/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/tx-control/tx-control-jpa-itests/pom.xml?rev=1748528&r1=1748527&r2=1748528&view=diff
==============================================================================
--- aries/trunk/tx-control/tx-control-jpa-itests/pom.xml (original)
+++ aries/trunk/tx-control/tx-control-jpa-itests/pom.xml Wed Jun 15 09:04:32 2016
@@ -94,12 +94,6 @@
<version>1.4.191</version>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>org.apache.aries.testsupport</groupId>
- <artifactId>org.apache.aries.testsupport.unit</artifactId>
- <version>2.0.0-SNAPSHOT</version>
- <scope>test</scope>
- </dependency>
<!-- pax exam -->
<dependency>
Modified: aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/AbstractJPATransactionTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/AbstractJPATransactionTest.java?rev=1748528&r1=1748527&r2=1748528&view=diff
==============================================================================
--- aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/AbstractJPATransactionTest.java (original)
+++ aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/AbstractJPATransactionTest.java Wed Jun 15 09:04:32 2016
@@ -27,12 +27,15 @@ import static org.ops4j.pax.exam.CoreOpt
import java.io.File;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.Dictionary;
import java.util.Hashtable;
+import java.util.List;
+import java.util.NoSuchElementException;
+import javax.inject.Inject;
import javax.persistence.EntityManager;
-import org.apache.aries.itest.AbstractIntegrationTest;
import org.h2.tools.Server;
import org.junit.After;
import org.junit.Before;
@@ -45,30 +48,41 @@ import org.ops4j.pax.exam.TestProbeBuild
import org.ops4j.pax.exam.junit.PaxExam;
import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
import org.ops4j.pax.exam.spi.reactors.PerClass;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Filter;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
import org.osgi.service.cm.ConfigurationAdmin;
import org.osgi.service.jdbc.DataSourceFactory;
import org.osgi.service.jpa.EntityManagerFactoryBuilder;
import org.osgi.service.transaction.control.TransactionControl;
import org.osgi.service.transaction.control.jpa.JPAEntityManagerProvider;
+import org.osgi.util.tracker.ServiceTracker;
@RunWith(PaxExam.class)
@ExamReactorStrategy(PerClass.class)
-public abstract class AbstractJPATransactionTest extends AbstractIntegrationTest {
+public abstract class AbstractJPATransactionTest {
protected static final String TX_CONTROL_FILTER = "tx.control.filter";
protected static final String ARIES_EMF_BUILDER_TARGET_FILTER = "aries.emf.builder.target.filter";
protected static final String IS_XA = "aries.test.is.xa";
+ @Inject
+ BundleContext context;
+
protected TransactionControl txControl;
protected EntityManager em;
private Server server;
+
+ private final List<ServiceTracker<?,?>> trackers = new ArrayList<>();
@Before
public void setUp() throws Exception {
- txControl = context().getService(TransactionControl.class, System.getProperty(TX_CONTROL_FILTER), 5000);
+ txControl = getService(TransactionControl.class, System.getProperty(TX_CONTROL_FILTER), 5000);
server = Server.createTcpServer("-tcpPort", "0");
server.start();
@@ -78,6 +92,38 @@ public abstract class AbstractJPATransac
em = configuredEntityManager(jdbcUrl);
}
+ private <T> T getService(Class<T> clazz, long timeout) {
+ try {
+ return getService(clazz, null, timeout);
+ } catch (InvalidSyntaxException e) {
+ throw new IllegalArgumentException(e);
+ }
+ }
+
+ private <T> T getService(Class<T> clazz, String filter, long timeout) throws InvalidSyntaxException {
+ Filter f = FrameworkUtil.createFilter(filter == null ? "(|(foo=bar)(!(foo=bar)))" : filter);
+
+ ServiceTracker<T, T> tracker = new ServiceTracker<T, T>(context, clazz, null) {
+ @Override
+ public T addingService(ServiceReference<T> reference) {
+ return f.match(reference) ? super.addingService(reference) : null;
+ }
+ };
+
+ tracker.open();
+ try {
+ T t = tracker.waitForService(timeout);
+ if(t == null) {
+ throw new NoSuchElementException(clazz.getName());
+ }
+ return t;
+ } catch (InterruptedException e) {
+ throw new RuntimeException("Error waiting for service " + clazz.getName(), e);
+ } finally {
+ trackers.add(tracker);
+ }
+ }
+
private String getRemoteDBPath() {
String fullResourceName = getClass().getName().replace('.', '/') + ".class";
@@ -102,7 +148,7 @@ public abstract class AbstractJPATransac
props.put(ARIES_EMF_BUILDER_TARGET_FILTER, filter);
}
- ConfigurationAdmin cm = context().getService(ConfigurationAdmin.class, 5000);
+ ConfigurationAdmin cm = getService(ConfigurationAdmin.class, 5000);
String pid = getBoolean(IS_XA) ? "org.apache.aries.tx.control.jpa.xa" :
"org.apache.aries.tx.control.jpa.local";
@@ -113,7 +159,7 @@ public abstract class AbstractJPATransac
pid, null);
config.update(props);
- return context().getService(JPAEntityManagerProvider.class, 5000).getResource(txControl);
+ return getService(JPAEntityManagerProvider.class, 5000).getResource(txControl);
}
protected Dictionary<String, Object> getBaseProperties() {
@@ -129,11 +175,13 @@ public abstract class AbstractJPATransac
server.stop();
}
+ trackers.stream().forEach(ServiceTracker::close);
+
em = null;
}
private void clearConfiguration() {
- ConfigurationAdmin cm = context().getService(ConfigurationAdmin.class, 5000);
+ ConfigurationAdmin cm = getService(ConfigurationAdmin.class, 5000);
org.osgi.service.cm.Configuration[] cfgs = null;
try {
cfgs = cm.listConfigurations(null);
@@ -174,7 +222,6 @@ public abstract class AbstractJPATransac
return options(junitBundles(), systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
when(localRepo != null)
.useOptions(CoreOptions.vmOption("-Dorg.ops4j.pax.url.mvn.localRepository=" + localRepo)),
- mavenBundle("org.apache.aries.testsupport", "org.apache.aries.testsupport.unit").versionAsInProject(),
localTxControlService(),
localJpaResourceProviderWithH2(),
jpaProvider(),
@@ -197,7 +244,6 @@ public abstract class AbstractJPATransac
return options(junitBundles(), systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
when(localRepo != null)
.useOptions(CoreOptions.vmOption("-Dorg.ops4j.pax.url.mvn.localRepository=" + localRepo)),
- mavenBundle("org.apache.aries.testsupport", "org.apache.aries.testsupport.unit").versionAsInProject(),
systemProperty(IS_XA).value(Boolean.TRUE.toString()),
xaTxControlService(),
xaJpaResourceProviderWithH2(),
Modified: aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/SimpleEclipseLink_2_6_0_Test.java
URL: http://svn.apache.org/viewvc/aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/SimpleEclipseLink_2_6_0_Test.java?rev=1748528&r1=1748527&r2=1748528&view=diff
==============================================================================
--- aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/SimpleEclipseLink_2_6_0_Test.java (original)
+++ aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/SimpleEclipseLink_2_6_0_Test.java Wed Jun 15 09:04:32 2016
@@ -44,7 +44,7 @@ public class SimpleEclipseLink_2_6_0_Tes
mavenBundle("org.eclipse.persistence", "org.eclipse.persistence.asm", "2.6.0"),
mavenBundle("org.eclipse.persistence", "org.eclipse.persistence.antlr", "2.6.0"),
mavenBundle("org.eclipse.persistence", "org.eclipse.persistence.jpa.jpql", "2.6.0"),
- mavenBundle("org.apache.aries.jpa", "org.apache.aries.jpa.eclipselink.adapter", "2.4.0-SNAPSHOT"));
+ mavenBundle("org.apache.aries.jpa", "org.apache.aries.jpa.eclipselink.adapter", "2.4.0"));
}
}
Modified: aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/SimpleHibernate_5_0_9_Test.java
URL: http://svn.apache.org/viewvc/aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/SimpleHibernate_5_0_9_Test.java?rev=1748528&r1=1748527&r2=1748528&view=diff
==============================================================================
--- aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/SimpleHibernate_5_0_9_Test.java (original)
+++ aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/SimpleHibernate_5_0_9_Test.java Wed Jun 15 09:04:32 2016
@@ -29,7 +29,7 @@ import org.ops4j.pax.exam.Option;
public class SimpleHibernate_5_0_9_Test extends AbstractSimpleTransactionTest {
protected String ariesJPAVersion() {
- return "2.4.0-SNAPSHOT";
+ return "2.4.0";
}
@Override
Modified: aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/SimpleOpenJPA_2_4_1_Test.java
URL: http://svn.apache.org/viewvc/aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/SimpleOpenJPA_2_4_1_Test.java?rev=1748528&r1=1748527&r2=1748528&view=diff
==============================================================================
--- aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/SimpleOpenJPA_2_4_1_Test.java (original)
+++ aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/SimpleOpenJPA_2_4_1_Test.java Wed Jun 15 09:04:32 2016
@@ -32,7 +32,7 @@ import org.ops4j.pax.exam.Option;
public class SimpleOpenJPA_2_4_1_Test extends AbstractSimpleTransactionTest {
protected String ariesJPAVersion() {
- return "2.4.0-SNAPSHOT";
+ return "2.4.0";
}
protected Dictionary<String, Object> getBaseProperties() {
Modified: aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/XAEclipseLink_2_6_0_Test.java
URL: http://svn.apache.org/viewvc/aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/XAEclipseLink_2_6_0_Test.java?rev=1748528&r1=1748527&r2=1748528&view=diff
==============================================================================
--- aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/XAEclipseLink_2_6_0_Test.java (original)
+++ aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/XAEclipseLink_2_6_0_Test.java Wed Jun 15 09:04:32 2016
@@ -44,7 +44,7 @@ public class XAEclipseLink_2_6_0_Test ex
mavenBundle("org.eclipse.persistence", "org.eclipse.persistence.asm", "2.6.0"),
mavenBundle("org.eclipse.persistence", "org.eclipse.persistence.antlr", "2.6.0"),
mavenBundle("org.eclipse.persistence", "org.eclipse.persistence.jpa.jpql", "2.6.0"),
- mavenBundle("org.apache.aries.jpa", "org.apache.aries.jpa.eclipselink.adapter", "2.4.0-SNAPSHOT"));
+ mavenBundle("org.apache.aries.jpa", "org.apache.aries.jpa.eclipselink.adapter", "2.4.0"));
}
}
Modified: aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/XAHibernate_5_0_9_Test.java
URL: http://svn.apache.org/viewvc/aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/XAHibernate_5_0_9_Test.java?rev=1748528&r1=1748527&r2=1748528&view=diff
==============================================================================
--- aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/XAHibernate_5_0_9_Test.java (original)
+++ aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/XAHibernate_5_0_9_Test.java Wed Jun 15 09:04:32 2016
@@ -29,7 +29,7 @@ import org.ops4j.pax.exam.Option;
public class XAHibernate_5_0_9_Test extends XAJPATransactionTest {
protected String ariesJPAVersion() {
- return "2.4.0-SNAPSHOT";
+ return "2.4.0";
}
@Override
Modified: aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/XAJPATransactionTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/XAJPATransactionTest.java?rev=1748528&r1=1748527&r2=1748528&view=diff
==============================================================================
--- aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/XAJPATransactionTest.java (original)
+++ aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/XAJPATransactionTest.java Wed Jun 15 09:04:32 2016
@@ -28,12 +28,14 @@ import static org.ops4j.pax.exam.CoreOpt
import static org.ops4j.pax.exam.CoreOptions.when;
import java.io.File;
-import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Field;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Dictionary;
import java.util.Hashtable;
+import java.util.List;
+import java.util.NoSuchElementException;
import javax.inject.Inject;
import javax.persistence.EntityManager;
@@ -43,7 +45,6 @@ import javax.transaction.xa.XAException;
import javax.transaction.xa.XAResource;
import javax.transaction.xa.Xid;
-import org.apache.aries.itest.AbstractIntegrationTest;
import org.apache.aries.tx.control.itests.entity.Message;
import org.h2.tools.Server;
import org.junit.After;
@@ -60,16 +61,21 @@ import org.ops4j.pax.exam.spi.reactors.E
import org.ops4j.pax.exam.spi.reactors.PerClass;
import org.ops4j.pax.exam.util.Filter;
import org.ops4j.pax.tinybundles.core.TinyBundles;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
import org.osgi.service.cm.ConfigurationAdmin;
import org.osgi.service.jdbc.DataSourceFactory;
import org.osgi.service.jpa.EntityManagerFactoryBuilder;
import org.osgi.service.transaction.control.TransactionControl;
import org.osgi.service.transaction.control.TransactionRolledBackException;
import org.osgi.service.transaction.control.jpa.JPAEntityManagerProvider;
+import org.osgi.util.tracker.ServiceTracker;
@RunWith(PaxExam.class)
@ExamReactorStrategy(PerClass.class)
-public abstract class XAJPATransactionTest extends AbstractIntegrationTest {
+public abstract class XAJPATransactionTest {
static final String XA_TEST_UNIT_1 = "xa-test-unit-1";
static final String XA_TEST_UNIT_2 = "xa-test-unit-2";
@@ -77,6 +83,9 @@ public abstract class XAJPATransactionTe
protected static final String ARIES_EMF_BUILDER_TARGET_FILTER = "aries.emf.builder.target.filter";
@Inject
+ BundleContext context;
+
+ @Inject
@Filter("(osgi.xa.enabled=true)")
protected TransactionControl txControl;
@@ -85,6 +94,8 @@ public abstract class XAJPATransactionTe
private Server server1;
private Server server2;
+
+ private final List<ServiceTracker<?,?>> trackers = new ArrayList<>();
@Before
public void setUp() throws Exception {
@@ -111,7 +122,7 @@ public abstract class XAJPATransactionTe
return new File(testClassesDir.getParentFile(), "testdb/" + dbName).getAbsolutePath();
}
- private EntityManager configuredEntityManager(String jdbcUrl, String unit) throws IOException {
+ private EntityManager configuredEntityManager(String jdbcUrl, String unit) throws Exception {
Dictionary<String, Object> props = getBaseProperties();
@@ -125,17 +136,49 @@ public abstract class XAJPATransactionTe
props.put(ARIES_EMF_BUILDER_TARGET_FILTER, "(&(osgi.unit.name=" + unit + ")" + filter + ")");
}
- ConfigurationAdmin cm = context().getService(ConfigurationAdmin.class, 5000);
+ ConfigurationAdmin cm = getService(ConfigurationAdmin.class, 5000);
org.osgi.service.cm.Configuration config = cm.createFactoryConfiguration(
"org.apache.aries.tx.control.jpa.xa", null);
config.update(props);
- return context().getService(JPAEntityManagerProvider.class,
+ return getService(JPAEntityManagerProvider.class,
"(" + EntityManagerFactoryBuilder.JPA_UNIT_NAME + "=" + unit + ")",
5000).getResource(txControl);
}
+ private <T> T getService(Class<T> clazz, long timeout) {
+ try {
+ return getService(clazz, null, timeout);
+ } catch (InvalidSyntaxException e) {
+ throw new IllegalArgumentException(e);
+ }
+ }
+
+ private <T> T getService(Class<T> clazz, String filter, long timeout) throws InvalidSyntaxException {
+ org.osgi.framework.Filter f = FrameworkUtil.createFilter(filter == null ? "(|(foo=bar)(!(foo=bar)))" : filter);
+
+ ServiceTracker<T, T> tracker = new ServiceTracker<T, T>(context, clazz, null) {
+ @Override
+ public T addingService(ServiceReference<T> reference) {
+ return f.match(reference) ? super.addingService(reference) : null;
+ }
+ };
+
+ tracker.open();
+ try {
+ T t = tracker.waitForService(timeout);
+ if(t == null) {
+ throw new NoSuchElementException(clazz.getName());
+ }
+ return t;
+ } catch (InterruptedException e) {
+ throw new RuntimeException("Error waiting for service " + clazz.getName(), e);
+ } finally {
+ trackers.add(tracker);
+ }
+ }
+
protected Dictionary<String, Object> getBaseProperties() {
return new Hashtable<>();
}
@@ -152,12 +195,14 @@ public abstract class XAJPATransactionTe
server2.stop();
}
+ trackers.stream().forEach(ServiceTracker::close);
+
em1 = null;
em2 = null;
}
private void clearConfiguration() {
- ConfigurationAdmin cm = context().getService(ConfigurationAdmin.class, 5000);
+ ConfigurationAdmin cm = getService(ConfigurationAdmin.class, 5000);
org.osgi.service.cm.Configuration[] cfgs = null;
try {
cfgs = cm.listConfigurations(null);
@@ -196,7 +241,6 @@ public abstract class XAJPATransactionTe
return options(junitBundles(), systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
when(localRepo != null)
.useOptions(CoreOptions.vmOption("-Dorg.ops4j.pax.url.mvn.localRepository=" + localRepo)),
- mavenBundle("org.apache.aries.testsupport", "org.apache.aries.testsupport.unit").versionAsInProject(),
mavenBundle("org.apache.aries.tx-control", "tx-control-service-xa").versionAsInProject(),
mavenBundle("com.h2database", "h2").versionAsInProject(),
mavenBundle("org.apache.aries.tx-control", "tx-control-provider-jpa-xa").versionAsInProject(),
@@ -308,8 +352,16 @@ public abstract class XAJPATransactionTe
}
Object getMessageEntityFrom(String unit) throws Exception {
- Class<?> clz = context().getBundleByName(unit).loadClass(
- "org.apache.aries.tx.control.itests.entity.Message");
+ Class<?> clz = Arrays.stream(context.getBundles())
+ .filter(b -> unit.equals(b.getSymbolicName()))
+ .map(b -> {
+ try {
+ return b.loadClass("org.apache.aries.tx.control.itests.entity.Message");
+ } catch (ClassNotFoundException e) {
+ throw new RuntimeException(e);
+ }
+ })
+ .findFirst().orElseThrow(() -> new IllegalArgumentException(unit));
return clz.newInstance();
}
Modified: aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/XAOpenJPA_2_4_1_Test.java
URL: http://svn.apache.org/viewvc/aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/XAOpenJPA_2_4_1_Test.java?rev=1748528&r1=1748527&r2=1748528&view=diff
==============================================================================
--- aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/XAOpenJPA_2_4_1_Test.java (original)
+++ aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/XAOpenJPA_2_4_1_Test.java Wed Jun 15 09:04:32 2016
@@ -33,7 +33,7 @@ public class XAOpenJPA_2_4_1_Test extend
@Override
protected String ariesJPAVersion() {
- return "2.4.0-SNAPSHOT";
+ return "2.4.0";
}
@Override