diff --git a/org.springframework.orm/.classpath b/org.springframework.orm/.classpath
index abeb0317ce..b64298856d 100644
--- a/org.springframework.orm/.classpath
+++ b/org.springframework.orm/.classpath
@@ -1,43 +1,44 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/org.springframework.orm/src/test/java/org/springframework/orm/hibernate3/HibernateJtaTransactionTests.java b/org.springframework.orm/src/test/java/org/springframework/orm/hibernate3/HibernateJtaTransactionTests.java
index 5d1ae3c016..0aba455585 100644
--- a/org.springframework.orm/src/test/java/org/springframework/orm/hibernate3/HibernateJtaTransactionTests.java
+++ b/org.springframework.orm/src/test/java/org/springframework/orm/hibernate3/HibernateJtaTransactionTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2009 the original author or authors.
+ * Copyright 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,8 +16,15 @@
package org.springframework.orm.hibernate3;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
import java.util.ArrayList;
import java.util.List;
+
import javax.transaction.RollbackException;
import javax.transaction.Status;
import javax.transaction.Synchronization;
@@ -25,7 +32,6 @@ import javax.transaction.SystemException;
import javax.transaction.TransactionManager;
import javax.transaction.UserTransaction;
-import junit.framework.TestCase;
import org.easymock.MockControl;
import org.hibernate.FlushMode;
import org.hibernate.HibernateException;
@@ -35,7 +41,7 @@ import org.hibernate.classic.Session;
import org.hibernate.engine.SessionFactoryImplementor;
import org.hibernate.engine.SessionImplementor;
import org.junit.Ignore;
-
+import org.junit.Test;
import org.springframework.dao.DataAccessException;
import org.springframework.transaction.MockJtaTransaction;
import org.springframework.transaction.TransactionDefinition;
@@ -52,25 +58,30 @@ import org.springframework.transaction.support.TransactionTemplate;
* @author Juergen Hoeller
* @since 05.03.2005
*/
-@Ignore // getting errors on mocks
-public class HibernateJtaTransactionTests extends TestCase {
+@SuppressWarnings("deprecation")
+public class HibernateJtaTransactionTests {
+ @Test
public void testJtaTransactionCommit() throws Exception {
doTestJtaTransactionCommit(Status.STATUS_NO_TRANSACTION, false);
}
+ @Test
public void testJtaTransactionCommitWithReadOnly() throws Exception {
doTestJtaTransactionCommit(Status.STATUS_NO_TRANSACTION, true);
}
+ @Test
public void testJtaTransactionCommitWithExisting() throws Exception {
doTestJtaTransactionCommit(Status.STATUS_ACTIVE, false);
}
+ @Test
public void testJtaTransactionCommitWithExistingAndReadOnly() throws Exception {
doTestJtaTransactionCommit(Status.STATUS_ACTIVE, true);
}
+ @SuppressWarnings({ "rawtypes", "unchecked" })
private void doTestJtaTransactionCommit(int status, final boolean readOnly) throws Exception {
MockControl utControl = MockControl.createControl(UserTransaction.class);
UserTransaction ut = (UserTransaction) utControl.getMock();
@@ -125,13 +136,16 @@ public class HibernateJtaTransactionTests extends TestCase {
assertTrue("Hasn't thread session", !TransactionSynchronizationManager.hasResource(sf));
Object result = tt.execute(new TransactionCallback() {
+
public Object doInTransaction(TransactionStatus status) {
try {
- assertTrue("JTA synchronizations active", TransactionSynchronizationManager.isSynchronizationActive());
+ assertTrue("JTA synchronizations active",
+ TransactionSynchronizationManager.isSynchronizationActive());
assertTrue("Hasn't thread session", !TransactionSynchronizationManager.hasResource(sf));
HibernateTemplate ht = new HibernateTemplate(sf);
ht.setExposeNativeSession(true);
ht.executeFind(new HibernateCallback() {
+
public Object doInHibernate(org.hibernate.Session sess) {
assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf));
assertEquals(session, sess);
@@ -140,6 +154,7 @@ public class HibernateJtaTransactionTests extends TestCase {
});
ht = new HibernateTemplate(sf);
List htl = ht.executeFind(new HibernateCallback() {
+
public Object doInHibernate(org.hibernate.Session sess) {
assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf));
return sess.createQuery("some query string").list();
@@ -176,14 +191,17 @@ public class HibernateJtaTransactionTests extends TestCase {
sessionControl.verify();
}
+ @Test
public void testJtaTransactionCommitWithJtaTm() throws Exception {
doTestJtaTransactionCommitWithJtaTm(Status.STATUS_NO_TRANSACTION);
}
+ @Test
public void testJtaTransactionCommitWithJtaTmAndExisting() throws Exception {
doTestJtaTransactionCommitWithJtaTm(Status.STATUS_ACTIVE);
}
+ @SuppressWarnings({ "rawtypes", "unchecked" })
private void doTestJtaTransactionCommitWithJtaTm(int status) throws Exception {
MockControl utControl = MockControl.createControl(UserTransaction.class);
UserTransaction ut = (UserTransaction) utControl.getMock();
@@ -228,13 +246,16 @@ public class HibernateJtaTransactionTests extends TestCase {
assertTrue("Hasn't thread session", !TransactionSynchronizationManager.hasResource(sf));
Object result = tt.execute(new TransactionCallback() {
+
public Object doInTransaction(TransactionStatus status) {
try {
- assertTrue("JTA synchronizations active", TransactionSynchronizationManager.isSynchronizationActive());
+ assertTrue("JTA synchronizations active",
+ TransactionSynchronizationManager.isSynchronizationActive());
assertTrue("Hasn't thread session", !TransactionSynchronizationManager.hasResource(sf));
HibernateTemplate ht = new HibernateTemplate(sf);
ht.setExposeNativeSession(true);
List htl = ht.executeFind(new HibernateCallback() {
+
public Object doInHibernate(org.hibernate.Session sess) {
assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf));
assertEquals(session, sess);
@@ -244,6 +265,7 @@ public class HibernateJtaTransactionTests extends TestCase {
ht = new HibernateTemplate(sf);
ht.setExposeNativeSession(true);
htl = ht.executeFind(new HibernateCallback() {
+
public Object doInHibernate(org.hibernate.Session sess) {
assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf));
assertEquals(session, sess);
@@ -278,6 +300,8 @@ public class HibernateJtaTransactionTests extends TestCase {
sessionControl.verify();
}
+ @Test
+ @SuppressWarnings({ "rawtypes", "unchecked" })
public void testJtaTransactionWithFlushFailure() throws Exception {
MockControl utControl = MockControl.createControl(UserTransaction.class);
UserTransaction ut = (UserTransaction) utControl.getMock();
@@ -314,13 +338,16 @@ public class HibernateJtaTransactionTests extends TestCase {
try {
tt.execute(new TransactionCallback() {
+
public Object doInTransaction(TransactionStatus status) {
try {
- assertTrue("JTA synchronizations active", TransactionSynchronizationManager.isSynchronizationActive());
+ assertTrue("JTA synchronizations active",
+ TransactionSynchronizationManager.isSynchronizationActive());
assertTrue("Hasn't thread session", !TransactionSynchronizationManager.hasResource(sf));
HibernateTemplate ht = new HibernateTemplate(sf);
ht.setExposeNativeSession(true);
List htl = ht.executeFind(new HibernateCallback() {
+
public Object doInHibernate(org.hibernate.Session sess) {
assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf));
assertEquals(session, sess);
@@ -330,6 +357,7 @@ public class HibernateJtaTransactionTests extends TestCase {
ht = new HibernateTemplate(sf);
ht.setExposeNativeSession(true);
htl = ht.executeFind(new HibernateCallback() {
+
public Object doInHibernate(org.hibernate.Session sess) {
assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf));
assertEquals(session, sess);
@@ -368,14 +396,17 @@ public class HibernateJtaTransactionTests extends TestCase {
sessionControl.verify();
}
+ @Test
public void testJtaTransactionRollback() throws Exception {
doTestJtaTransactionRollback(false);
}
+ @Test
public void testJtaTransactionRollbackWithFlush() throws Exception {
doTestJtaTransactionRollback(true);
}
+ @SuppressWarnings({ "rawtypes", "unchecked" })
private void doTestJtaTransactionRollback(final boolean flush) throws Exception {
MockControl utControl = MockControl.createControl(UserTransaction.class);
UserTransaction ut = (UserTransaction) utControl.getMock();
@@ -411,11 +442,14 @@ public class HibernateJtaTransactionTests extends TestCase {
assertTrue("JTA synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive());
Object result = tt.execute(new TransactionCallback() {
+
public Object doInTransaction(TransactionStatus status) {
try {
- assertTrue("JTA synchronizations active", TransactionSynchronizationManager.isSynchronizationActive());
+ assertTrue("JTA synchronizations active",
+ TransactionSynchronizationManager.isSynchronizationActive());
HibernateTemplate ht = new HibernateTemplate(sf);
List htl = ht.executeFind(new HibernateCallback() {
+
public Object doInHibernate(org.hibernate.Session session) {
return l;
}
@@ -445,40 +479,49 @@ public class HibernateJtaTransactionTests extends TestCase {
sessionControl.verify();
}
+ @Test
public void testJtaTransactionCommitWithPreBound() throws Exception {
doTestJtaTransactionCommitWithPreBound(false, false, false);
}
+ @Test
public void testJtaTransactionCommitWithPreBoundAndReadOnly() throws Exception {
doTestJtaTransactionCommitWithPreBound(false, false, true);
}
+ @Test
public void testJtaTransactionCommitWithPreBoundAndFlushModeNever() throws Exception {
doTestJtaTransactionCommitWithPreBound(false, true, false);
}
+ @Test
public void testJtaTransactionCommitWithPreBoundAndFlushModeNeverAndReadOnly() throws Exception {
doTestJtaTransactionCommitWithPreBound(false, true, true);
}
+ @Test
public void testJtaTransactionCommitWithJtaTmAndPreBound() throws Exception {
doTestJtaTransactionCommitWithPreBound(true, false, false);
}
+ @Test
public void testJtaTransactionCommitWithJtaTmAndPreBoundAndReadOnly() throws Exception {
doTestJtaTransactionCommitWithPreBound(true, false, true);
}
+ @Test
public void testJtaTransactionCommitWithJtaTmAndPreBoundAndFlushModeNever() throws Exception {
doTestJtaTransactionCommitWithPreBound(true, true, false);
}
+ @Test
public void testJtaTransactionCommitWithJtaTmAndPreBoundAndFlushModeNeverAndReadOnly() throws Exception {
doTestJtaTransactionCommitWithPreBound(true, true, true);
}
- protected void doTestJtaTransactionCommitWithPreBound(
- boolean jtaTm, final boolean flushNever, final boolean readOnly) throws Exception {
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ protected void doTestJtaTransactionCommitWithPreBound(boolean jtaTm, final boolean flushNever,
+ final boolean readOnly) throws Exception {
MockControl utControl = MockControl.createControl(UserTransaction.class);
UserTransaction ut = (UserTransaction) utControl.getMock();
@@ -535,15 +578,18 @@ public class HibernateJtaTransactionTests extends TestCase {
assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf));
Object result = tt.execute(new TransactionCallback() {
+
public Object doInTransaction(TransactionStatus status) {
try {
- assertTrue("JTA synchronizations active", TransactionSynchronizationManager.isSynchronizationActive());
+ assertTrue("JTA synchronizations active",
+ TransactionSynchronizationManager.isSynchronizationActive());
assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf));
HibernateTemplate ht = new HibernateTemplate(sf);
ht.setExposeNativeSession(true);
List htl = null;
for (int i = 0; i < 5; i++) {
htl = ht.executeFind(new HibernateCallback() {
+
public Object doInHibernate(org.hibernate.Session sess) {
assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf));
assertEquals(session, sess);
@@ -592,6 +638,8 @@ public class HibernateJtaTransactionTests extends TestCase {
sessionControl.verify();
}
+ @Test
+ @SuppressWarnings({ "rawtypes", "unchecked" })
public void testJtaTransactionRollbackWithPreBound() throws Exception {
MockControl utControl = MockControl.createControl(UserTransaction.class);
UserTransaction ut = (UserTransaction) utControl.getMock();
@@ -631,19 +679,24 @@ public class HibernateJtaTransactionTests extends TestCase {
assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf));
tt.execute(new TransactionCallbackWithoutResult() {
+
public void doInTransactionWithoutResult(TransactionStatus status) {
tt.execute(new TransactionCallbackWithoutResult() {
+
public void doInTransactionWithoutResult(TransactionStatus status) {
status.setRollbackOnly();
try {
- assertTrue("JTA synchronizations active", TransactionSynchronizationManager.isSynchronizationActive());
+ assertTrue("JTA synchronizations active",
+ TransactionSynchronizationManager.isSynchronizationActive());
assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf));
HibernateTemplate ht = new HibernateTemplate(sf);
ht.setExposeNativeSession(true);
for (int i = 0; i < 5; i++) {
ht.execute(new HibernateCallback() {
+
public Object doInHibernate(org.hibernate.Session sess) {
- assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf));
+ assertTrue("Has thread session",
+ TransactionSynchronizationManager.hasResource(sf));
assertEquals(session, sess);
return null;
}
@@ -685,14 +738,17 @@ public class HibernateJtaTransactionTests extends TestCase {
sessionControl.verify();
}
+ @Test
public void testJtaTransactionCommitWithRequiresNew() throws Exception {
doTestJtaTransactionWithRequiresNew(false);
}
+ @Test
public void testJtaTransactionRollbackWithRequiresNew() throws Exception {
doTestJtaTransactionWithRequiresNew(true);
}
+ @SuppressWarnings({ "rawtypes", "unchecked" })
protected void doTestJtaTransactionWithRequiresNew(final boolean rollback) throws Exception {
MockControl utControl = MockControl.createControl(UserTransaction.class);
UserTransaction ut = (UserTransaction) utControl.getMock();
@@ -773,6 +829,7 @@ public class HibernateJtaTransactionTests extends TestCase {
assertTrue("Hasn't thread session", !TransactionSynchronizationManager.hasResource(sf));
try {
tt.execute(new TransactionCallback() {
+
public Object doInTransaction(TransactionStatus status) {
org.hibernate.Session outerSession = SessionFactoryUtils.getSession(sf, false);
assertSame(session1, outerSession);
@@ -780,12 +837,14 @@ public class HibernateJtaTransactionTests extends TestCase {
assertTrue("Has thread session", holder != null);
try {
tt.execute(new TransactionCallback() {
+
public Object doInTransaction(TransactionStatus status) {
org.hibernate.Session innerSession = SessionFactoryUtils.getSession(sf, false);
assertSame(session2, innerSession);
HibernateTemplate ht = new HibernateTemplate(sf);
ht.setFlushMode(HibernateTemplate.FLUSH_EAGER);
return ht.executeFind(new HibernateCallback() {
+
public Object doInHibernate(org.hibernate.Session innerSession) {
if (rollback) {
throw new HibernateException("");
@@ -798,7 +857,8 @@ public class HibernateJtaTransactionTests extends TestCase {
return null;
}
finally {
- assertTrue("Same thread session as before", outerSession == SessionFactoryUtils.getSession(sf, false));
+ assertTrue("Same thread session as before",
+ outerSession == SessionFactoryUtils.getSession(sf, false));
}
}
});
@@ -822,14 +882,17 @@ public class HibernateJtaTransactionTests extends TestCase {
session2Control.verify();
}
+ @Test
public void testJtaTransactionWithRequiresNewAndSuspendException() throws Exception {
doTestJtaTransactionWithRequiresNewAndException(true);
}
+ @Test
public void testJtaTransactionWithRequiresNewAndBeginException() throws Exception {
doTestJtaTransactionWithRequiresNewAndException(false);
}
+ @SuppressWarnings({ "rawtypes", "unchecked" })
protected void doTestJtaTransactionWithRequiresNewAndException(boolean suspendException) throws Exception {
MockControl utControl = MockControl.createControl(UserTransaction.class);
UserTransaction ut = (UserTransaction) utControl.getMock();
@@ -886,12 +949,14 @@ public class HibernateJtaTransactionTests extends TestCase {
assertTrue("Hasn't thread session", !TransactionSynchronizationManager.hasResource(sf));
try {
tt.execute(new TransactionCallback() {
+
public Object doInTransaction(TransactionStatus status) {
org.hibernate.Session outerSession = SessionFactoryUtils.getSession(sf, false);
assertSame(session1, outerSession);
SessionHolder holder = (SessionHolder) TransactionSynchronizationManager.getResource(sf);
assertTrue("Has thread session", holder != null);
tt.execute(new TransactionCallback() {
+
public Object doInTransaction(TransactionStatus status) {
return null;
}
@@ -914,14 +979,17 @@ public class HibernateJtaTransactionTests extends TestCase {
session1Control.verify();
}
+ @Test
public void testJtaTransactionCommitWithRequiresNewAndJtaTm() throws Exception {
doTestJtaTransactionWithRequiresNewAndJtaTm(false);
}
+ @Test
public void testJtaTransactionRollbackWithRequiresNewAndJtaTm() throws Exception {
doTestJtaTransactionWithRequiresNewAndJtaTm(true);
}
+ @SuppressWarnings({ "rawtypes", "unchecked" })
protected void doTestJtaTransactionWithRequiresNewAndJtaTm(final boolean rollback) throws Exception {
MockControl utControl = MockControl.createControl(UserTransaction.class);
UserTransaction ut = (UserTransaction) utControl.getMock();
@@ -1006,6 +1074,7 @@ public class HibernateJtaTransactionTests extends TestCase {
assertTrue("Hasn't thread session", !TransactionSynchronizationManager.hasResource(sf));
try {
tt.execute(new TransactionCallback() {
+
public Object doInTransaction(TransactionStatus status) {
org.hibernate.Session outerSession = SessionFactoryUtils.getSession(sf, false);
assertSame(session1, outerSession);
@@ -1013,12 +1082,14 @@ public class HibernateJtaTransactionTests extends TestCase {
assertTrue("Has thread session", holder != null);
try {
tt.execute(new TransactionCallback() {
+
public Object doInTransaction(TransactionStatus status) {
org.hibernate.Session innerSession = SessionFactoryUtils.getSession(sf, false);
assertSame(session2, innerSession);
HibernateTemplate ht = new HibernateTemplate(sf);
ht.setFlushMode(HibernateTemplate.FLUSH_EAGER);
return ht.executeFind(new HibernateCallback() {
+
public Object doInHibernate(org.hibernate.Session innerSession) {
if (rollback) {
throw new HibernateException("");
@@ -1031,7 +1102,8 @@ public class HibernateJtaTransactionTests extends TestCase {
return null;
}
finally {
- assertTrue("Same thread session as before", outerSession == SessionFactoryUtils.getSession(sf, false));
+ assertTrue("Same thread session as before",
+ outerSession == SessionFactoryUtils.getSession(sf, false));
}
}
});
@@ -1055,6 +1127,8 @@ public class HibernateJtaTransactionTests extends TestCase {
session2Control.verify();
}
+ @Test
+ @SuppressWarnings({ "rawtypes", "unchecked" })
public void testTransactionWithPropagationSupports() throws Exception {
MockControl utControl = MockControl.createControl(UserTransaction.class);
UserTransaction ut = (UserTransaction) utControl.getMock();
@@ -1098,6 +1172,7 @@ public class HibernateJtaTransactionTests extends TestCase {
assertTrue("Hasn't thread session", !TransactionSynchronizationManager.hasResource(sf));
tt.execute(new TransactionCallback() {
+
public Object doInTransaction(TransactionStatus status) {
assertTrue("Hasn't thread session", !TransactionSynchronizationManager.hasResource(sf));
assertTrue("Is not new transaction", !status.isNewTransaction());
@@ -1106,6 +1181,7 @@ public class HibernateJtaTransactionTests extends TestCase {
HibernateTemplate ht = new HibernateTemplate(sf);
ht.setFlushMode(HibernateTemplate.FLUSH_EAGER);
ht.execute(new HibernateCallback() {
+
public Object doInHibernate(org.hibernate.Session session) {
return null;
}
@@ -1120,6 +1196,8 @@ public class HibernateJtaTransactionTests extends TestCase {
sessionControl.verify();
}
+ @Test
+ @SuppressWarnings({ "rawtypes", "unchecked" })
public void testTransactionWithPropagationSupportsAndInnerTransaction() throws Exception {
MockControl utControl = MockControl.createControl(UserTransaction.class);
UserTransaction ut = (UserTransaction) utControl.getMock();
@@ -1161,6 +1239,7 @@ public class HibernateJtaTransactionTests extends TestCase {
assertTrue("Hasn't thread session", !TransactionSynchronizationManager.hasResource(sf));
tt.execute(new TransactionCallback() {
+
public Object doInTransaction(TransactionStatus status) {
assertTrue("Hasn't thread session", !TransactionSynchronizationManager.hasResource(sf));
assertTrue("Is not new transaction", !status.isNewTransaction());
@@ -1169,19 +1248,22 @@ public class HibernateJtaTransactionTests extends TestCase {
HibernateTemplate ht = new HibernateTemplate(sf);
ht.setFlushMode(HibernateTemplate.FLUSH_EAGER);
ht.execute(new HibernateCallback() {
+
public Object doInHibernate(org.hibernate.Session session) {
return null;
}
});
assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf));
tt2.execute(new TransactionCallback() {
+
public Object doInTransaction(TransactionStatus status) {
HibernateTemplate ht = new HibernateTemplate(sf);
ht.setFlushMode(HibernateTemplate.FLUSH_EAGER);
return ht.executeFind(new HibernateCallback() {
+
public Object doInHibernate(org.hibernate.Session session) {
assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
- //assertTrue(TransactionSynchronizationManager.isActualTransactionActive());
+ // assertTrue(TransactionSynchronizationManager.isActualTransactionActive());
return null;
}
});
@@ -1198,6 +1280,8 @@ public class HibernateJtaTransactionTests extends TestCase {
sessionControl.verify();
}
+ @Test
+ @SuppressWarnings("rawtypes")
public void testJtaSessionSynchronization() throws Exception {
MockControl tmControl = MockControl.createControl(TransactionManager.class);
TransactionManager tm = (TransactionManager) tmControl.getMock();
@@ -1231,6 +1315,7 @@ public class HibernateJtaTransactionTests extends TestCase {
ht.setExposeNativeSession(true);
for (int i = 0; i < 5; i++) {
ht.executeFind(new HibernateCallback() {
+
public Object doInHibernate(org.hibernate.Session sess) {
assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf));
assertEquals(session, sess);
@@ -1252,6 +1337,8 @@ public class HibernateJtaTransactionTests extends TestCase {
sessionControl.verify();
}
+ @Test
+ @SuppressWarnings("rawtypes")
public void testJtaSessionSynchronizationWithRollback() throws Exception {
MockControl tmControl = MockControl.createControl(TransactionManager.class);
TransactionManager tm = (TransactionManager) tmControl.getMock();
@@ -1281,6 +1368,7 @@ public class HibernateJtaTransactionTests extends TestCase {
ht.setExposeNativeSession(true);
for (int i = 0; i < 5; i++) {
ht.executeFind(new HibernateCallback() {
+
public Object doInHibernate(org.hibernate.Session sess) {
assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf));
assertEquals(session, sess);
@@ -1301,6 +1389,8 @@ public class HibernateJtaTransactionTests extends TestCase {
sessionControl.verify();
}
+ @Test
+ @SuppressWarnings("rawtypes")
public void testJtaSessionSynchronizationWithRollbackByOtherThread() throws Exception {
MockControl tmControl = MockControl.createControl(TransactionManager.class);
TransactionManager tm = (TransactionManager) tmControl.getMock();
@@ -1334,6 +1424,7 @@ public class HibernateJtaTransactionTests extends TestCase {
ht.setExposeNativeSession(true);
for (int i = 0; i < 5; i++) {
ht.executeFind(new HibernateCallback() {
+
public Object doInHibernate(org.hibernate.Session sess) {
assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf));
assertEquals(session, sess);
@@ -1345,6 +1436,7 @@ public class HibernateJtaTransactionTests extends TestCase {
final Synchronization synchronization = transaction.getSynchronization();
assertTrue("JTA synchronization registered", synchronization != null);
Thread thread = new Thread() {
+
public void run() {
synchronization.afterCompletion(Status.STATUS_ROLLEDBACK);
}
@@ -1359,10 +1451,12 @@ public class HibernateJtaTransactionTests extends TestCase {
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_SUPPORTS);
tt.setReadOnly(true);
tt.execute(new TransactionCallbackWithoutResult() {
+
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertTrue("JTA synchronizations active", TransactionSynchronizationManager.isSynchronizationActive());
for (int i = 0; i < 5; i++) {
ht.executeFind(new HibernateCallback() {
+
public Object doInHibernate(org.hibernate.Session sess) {
assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf));
assertEquals(session, sess);
@@ -1381,6 +1475,8 @@ public class HibernateJtaTransactionTests extends TestCase {
sessionControl.verify();
}
+ @Test
+ @SuppressWarnings("rawtypes")
public void testJtaSessionSynchronizationWithFlushFailure() throws Exception {
MockControl tmControl = MockControl.createControl(TransactionManager.class);
TransactionManager tm = (TransactionManager) tmControl.getMock();
@@ -1417,6 +1513,7 @@ public class HibernateJtaTransactionTests extends TestCase {
ht.setExposeNativeSession(true);
for (int i = 0; i < 5; i++) {
ht.executeFind(new HibernateCallback() {
+
public Object doInHibernate(org.hibernate.Session sess) {
assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf));
assertEquals(session, sess);
@@ -1444,6 +1541,8 @@ public class HibernateJtaTransactionTests extends TestCase {
sessionControl.verify();
}
+ @Test
+ @SuppressWarnings("rawtypes")
public void testJtaSessionSynchronizationWithSuspendedTransaction() throws Exception {
MockControl tmControl = MockControl.createControl(TransactionManager.class);
TransactionManager tm = (TransactionManager) tmControl.getMock();
@@ -1488,6 +1587,7 @@ public class HibernateJtaTransactionTests extends TestCase {
HibernateTemplate ht = new HibernateTemplate(sf);
ht.setExposeNativeSession(true);
ht.executeFind(new HibernateCallback() {
+
public Object doInHibernate(org.hibernate.Session sess) {
assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf));
assertEquals(session1, sess);
@@ -1495,6 +1595,7 @@ public class HibernateJtaTransactionTests extends TestCase {
}
});
ht.executeFind(new HibernateCallback() {
+
public Object doInHibernate(org.hibernate.Session sess) {
assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf));
assertEquals(session2, sess);
@@ -1521,6 +1622,8 @@ public class HibernateJtaTransactionTests extends TestCase {
session2Control.verify();
}
+ @Test
+ @SuppressWarnings("rawtypes")
public void testJtaSessionSynchronizationWithNonSessionFactoryImplementor() throws Exception {
MockControl tmControl = MockControl.createControl(TransactionManager.class);
TransactionManager tm = (TransactionManager) tmControl.getMock();
@@ -1559,6 +1662,7 @@ public class HibernateJtaTransactionTests extends TestCase {
ht.setExposeNativeSession(true);
for (int i = 0; i < 5; i++) {
ht.executeFind(new HibernateCallback() {
+
public Object doInHibernate(org.hibernate.Session sess) {
assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf));
assertEquals(session, sess);
@@ -1581,6 +1685,9 @@ public class HibernateJtaTransactionTests extends TestCase {
sfiControl.verify();
}
+ @Ignore("getting error on UserTransaction mock")
+ @Test
+ @SuppressWarnings("rawtypes")
public void testJtaSessionSynchronizationWithSpringTransactionLaterOn() throws Exception {
MockControl utControl = MockControl.createControl(UserTransaction.class);
UserTransaction ut = (UserTransaction) utControl.getMock();
@@ -1619,6 +1726,7 @@ public class HibernateJtaTransactionTests extends TestCase {
ht.setExposeNativeSession(true);
for (int i = 0; i < 2; i++) {
ht.executeFind(new HibernateCallback() {
+
public Object doInHibernate(org.hibernate.Session sess) {
assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf));
assertEquals(session, sess);
@@ -1629,9 +1737,11 @@ public class HibernateJtaTransactionTests extends TestCase {
TransactionTemplate tt = new TransactionTemplate(new JtaTransactionManager(ut));
tt.execute(new TransactionCallbackWithoutResult() {
+
protected void doInTransactionWithoutResult(TransactionStatus status) {
for (int i = 2; i < 5; i++) {
ht.executeFind(new HibernateCallback() {
+
public Object doInHibernate(org.hibernate.Session sess) {
assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf));
assertEquals(session, sess);
@@ -1656,14 +1766,17 @@ public class HibernateJtaTransactionTests extends TestCase {
sessionControl.verify();
}
+ @Test
public void testJtaSessionSynchronizationWithPreBound() throws Exception {
doTestJtaSessionSynchronizationWithPreBound(false);
}
+ @Test
public void testJtaJtaSessionSynchronizationWithPreBoundAndFlushNever() throws Exception {
doTestJtaSessionSynchronizationWithPreBound(true);
}
+ @SuppressWarnings("rawtypes")
private void doTestJtaSessionSynchronizationWithPreBound(boolean flushNever) throws Exception {
MockControl tmControl = MockControl.createControl(TransactionManager.class);
TransactionManager tm = (TransactionManager) tmControl.getMock();
@@ -1701,6 +1814,7 @@ public class HibernateJtaTransactionTests extends TestCase {
ht.setExposeNativeSession(true);
for (int i = 0; i < 5; i++) {
ht.executeFind(new HibernateCallback() {
+
public Object doInHibernate(org.hibernate.Session sess) {
assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf));
assertEquals(session, sess);
@@ -1739,6 +1853,8 @@ public class HibernateJtaTransactionTests extends TestCase {
sessionControl.verify();
}
+ @Test
+ @SuppressWarnings("rawtypes")
public void testJtaSessionSynchronizationWithRemoteTransaction() throws Exception {
MockControl tmControl = MockControl.createControl(TransactionManager.class);
TransactionManager tm = (TransactionManager) tmControl.getMock();
@@ -1785,6 +1901,7 @@ public class HibernateJtaTransactionTests extends TestCase {
ht.setExposeNativeSession(true);
for (int i = 0; i < 5; i++) {
ht.executeFind(new HibernateCallback() {
+
public Object doInHibernate(org.hibernate.Session sess) {
assertTrue("Has thread session", TransactionSynchronizationManager.hasResource(sf));
assertEquals(session, sess);
@@ -1796,9 +1913,12 @@ public class HibernateJtaTransactionTests extends TestCase {
final Synchronization synchronization = transaction.getSynchronization();
assertTrue("JTA synchronization registered", synchronization != null);
- // Call synchronization in a new thread, to simulate a synchronization
- // triggered by a new remote call from a remote transaction coordinator.
+ // Call synchronization in a new thread, to simulate a
+ // synchronization
+ // triggered by a new remote call from a remote transaction
+ // coordinator.
Thread synch = new Thread() {
+
public void run() {
synchronization.beforeCompletion();
synchronization.afterCompletion(Status.STATUS_COMMITTED);
@@ -1829,9 +1949,10 @@ public class HibernateJtaTransactionTests extends TestCase {
/**
- * Interface that combines Hibernate's Session and SessionImplementor interface.
- * Necessary for creating a mock that implements both interfaces.
- * Note: Hibernate 3.1's SessionImplementor interface does not extend Session anymore.
+ * Interface that combines Hibernate's Session and SessionImplementor
+ * interface. Necessary for creating a mock that implements both interfaces.
+ * Note: Hibernate 3.1's SessionImplementor interface does not extend
+ * Session anymore.
*/
public static interface ExtendedSession extends Session, SessionImplementor {
diff --git a/org.springframework.orm/src/test/java/org/springframework/orm/jpa/AbstractContainerEntityManagerFactoryIntegrationTests.java b/org.springframework.orm/src/test/java/org/springframework/orm/jpa/AbstractContainerEntityManagerFactoryIntegrationTests.java
index 479c52d89e..e53c4a1fad 100644
--- a/org.springframework.orm/src/test/java/org/springframework/orm/jpa/AbstractContainerEntityManagerFactoryIntegrationTests.java
+++ b/org.springframework.orm/src/test/java/org/springframework/orm/jpa/AbstractContainerEntityManagerFactoryIntegrationTests.java
@@ -40,6 +40,7 @@ import org.springframework.util.SerializationTestUtils;
* @author Rod Johnson
* @author Juergen Hoeller
*/
+@SuppressWarnings("deprecation")
public abstract class AbstractContainerEntityManagerFactoryIntegrationTests
extends AbstractEntityManagerFactoryIntegrationTests {
@@ -73,6 +74,7 @@ public abstract class AbstractContainerEntityManagerFactoryIntegrationTests
}
//@NotTransactional
+ @SuppressWarnings({ "unused", "unchecked" })
public void testEntityManagerProxyIsProxy() {
assertTrue(Proxy.isProxyClass(sharedEntityManager.getClass()));
Query q = sharedEntityManager.createQuery("select p from Person as p");
@@ -127,6 +129,7 @@ public abstract class AbstractContainerEntityManagerFactoryIntegrationTests
}
}
+ @SuppressWarnings("unchecked")
public void testMultipleResults() {
// Add with JDBC
String firstName = "Tony";
@@ -185,6 +188,7 @@ public abstract class AbstractContainerEntityManagerFactoryIntegrationTests
assertEquals("1 row must have been inserted", 1, countRowsInTable("person"));
}
+ @SuppressWarnings("unchecked")
public void testQueryNoPersons() {
EntityManager em = entityManagerFactory.createEntityManager();
Query q = em.createQuery("select p from Person as p");
@@ -200,6 +204,7 @@ public abstract class AbstractContainerEntityManagerFactoryIntegrationTests
}
@NotTransactional
+ @SuppressWarnings("unchecked")
public void testQueryNoPersonsNotTransactional() {
EntityManager em = entityManagerFactory.createEntityManager();
Query q = em.createQuery("select p from Person as p");
@@ -214,6 +219,7 @@ public abstract class AbstractContainerEntityManagerFactoryIntegrationTests
}
}
+ @SuppressWarnings({ "unused", "unchecked" })
public void testQueryNoPersonsShared() {
EntityManager em = SharedEntityManagerCreator.createSharedEntityManager(entityManagerFactory);
Query q = em.createQuery("select p from Person as p");
@@ -229,6 +235,7 @@ public abstract class AbstractContainerEntityManagerFactoryIntegrationTests
}
@NotTransactional
+ @SuppressWarnings("unchecked")
public void testQueryNoPersonsSharedNotTransactional() {
EntityManager em = SharedEntityManagerCreator.createSharedEntityManager(entityManagerFactory);
Query q = em.createQuery("select p from Person as p");
diff --git a/org.springframework.orm/src/test/java/org/springframework/orm/jpa/hibernate/HibernateEntityManagerFactoryIntegrationTests.java b/org.springframework.orm/src/test/java/org/springframework/orm/jpa/hibernate/HibernateEntityManagerFactoryIntegrationTests.java
index f9ca726b17..40e7af0431 100644
--- a/org.springframework.orm/src/test/java/org/springframework/orm/jpa/hibernate/HibernateEntityManagerFactoryIntegrationTests.java
+++ b/org.springframework.orm/src/test/java/org/springframework/orm/jpa/hibernate/HibernateEntityManagerFactoryIntegrationTests.java
@@ -22,11 +22,10 @@ import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.hibernate.ejb.HibernateEntityManager;
import org.hibernate.ejb.HibernateEntityManagerFactory;
-import org.junit.Ignore;
-
import org.springframework.orm.jpa.AbstractContainerEntityManagerFactoryIntegrationTests;
import org.springframework.orm.jpa.EntityManagerFactoryInfo;
import org.springframework.orm.jpa.domain.Person;
+import org.springframework.test.annotation.IfProfileValue;
/**
* Hibernate-specific JPA tests.
@@ -34,7 +33,8 @@ import org.springframework.orm.jpa.domain.Person;
* @author Juergen Hoeller
* @author Rod Johnson
*/
-@Ignore // cannot find AnnotationBeanConfigurerAspect
+// Essentially @Ignore-d since AnnotationBeanConfigurerAspect cannot be found
+@IfProfileValue(name="test-group", value="broken")
public class HibernateEntityManagerFactoryIntegrationTests extends
AbstractContainerEntityManagerFactoryIntegrationTests {