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();