Added test to verify that with JTA transaction and XA DataSource we are in real transactional environment
git-svn-id: https://svn.apache.org/repos/asf/aries/trunk/jpa@1702967 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/blueprint/aries/itest/BlueprintTest.java b/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/blueprint/aries/itest/BlueprintTest.java
index 84c9872..3f94bde 100644
--- a/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/blueprint/aries/itest/BlueprintTest.java
+++ b/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/blueprint/aries/itest/BlueprintTest.java
@@ -25,6 +25,9 @@
import java.util.concurrent.TimeUnit;
import javax.inject.Inject;
+import javax.transaction.NotSupportedException;
+import javax.transaction.SystemException;
+import javax.transaction.UserTransaction;
import org.apache.aries.jpa.container.itest.entities.Car;
import org.apache.aries.jpa.container.itest.entities.CarService;
@@ -40,6 +43,9 @@
@Inject
Coordinator coordinator;
+ @Inject
+ UserTransaction ut;
+
@Test
public void testCoordination() {
assertNoCoordination();
@@ -91,6 +97,11 @@
}
@Test
+ public void testRealTransactional() throws Exception {
+ carRealTransactionalLifecycle(getCarService("emJtaAnn"));
+ }
+
+ @Test
public void testCoordinationLifecycle() throws InterruptedException, ExecutionException {
CarService carService = getCarService("em");
assertNoCars(carService);
@@ -122,6 +133,17 @@
assertBlueCar(carService.getCar(BLUE_CAR_PLATE));
carService.deleteCar(BLUE_CAR_PLATE);
}
+
+ private void carRealTransactionalLifecycle(CarService carService) throws IllegalStateException, SystemException, NotSupportedException {
+ assertNoCoordination();
+ if (carService.getCar(BLACK_CAR_PLATE) != null) {
+ carService.deleteCar(BLUE_CAR_PLATE);
+ }
+ ut.begin();
+ carService.addCar(createBlueCar());
+ ut.rollback();
+ Assert.assertNull(carService.getCar(BLUE_CAR_PLATE));
+ }
private void assertNoCoordination() {
Coordination coord = coordinator.peek();