Polishing contribution

Closes gh-34807
This commit is contained in:
rstoyanchev 2025-06-09 16:08:53 +01:00
parent 9d3de4ff68
commit 84a4b44cf0
1 changed files with 30 additions and 73 deletions

View File

@ -1,5 +1,5 @@
/*
* Copyright 2002-2024 the original author or authors.
* Copyright 2002-2025 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,7 +16,6 @@
package org.springframework.orm.jpa;
import java.util.ArrayList;
import java.util.List;
import jakarta.persistence.EntityManager;
@ -46,21 +45,25 @@ import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
/**
* Unit tests for {@link JpaTransactionManager}.
* @author Costin Leau
* @author Juergen Hoeller
* @author Phillip Webb
*/
class JpaTransactionManagerTests {
private EntityManagerFactory factory = mock();
private static final List<String> testList = List.of("test");
private EntityManager manager = mock();
private EntityTransaction tx = mock();
private final EntityManagerFactory factory = mock();
private JpaTransactionManager tm = new JpaTransactionManager(factory);
private final EntityManager manager = mock();
private TransactionTemplate tt = new TransactionTemplate(tm);
private final EntityTransaction tx = mock();
private final JpaTransactionManager tm = new JpaTransactionManager(factory);
private final TransactionTemplate tt = new TransactionTemplate(tm);
@BeforeEach
@ -81,18 +84,15 @@ class JpaTransactionManagerTests {
@Test
void testTransactionCommit() {
final List<String> l = new ArrayList<>();
l.add("test");
assertThat(TransactionSynchronizationManager.hasResource(factory)).isFalse();
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
Object result = tt.execute(status -> {
assertThat(TransactionSynchronizationManager.hasResource(factory)).isTrue();
EntityManagerFactoryUtils.getTransactionalEntityManager(factory).flush();
return l;
return testList;
});
assertThat(result).isSameAs(l);
assertThat(result).isSameAs(testList);
assertThat(TransactionSynchronizationManager.hasResource(factory)).isFalse();
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -107,9 +107,6 @@ class JpaTransactionManagerTests {
given(tx.getRollbackOnly()).willReturn(true);
willThrow(new RollbackException()).given(tx).commit();
final List<String> l = new ArrayList<>();
l.add("test");
assertThat(TransactionSynchronizationManager.hasResource(factory)).isFalse();
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -117,9 +114,9 @@ class JpaTransactionManagerTests {
Object result = tt.execute(status -> {
assertThat(TransactionSynchronizationManager.hasResource(factory)).isTrue();
EntityManagerFactoryUtils.getTransactionalEntityManager(factory).flush();
return l;
return testList;
});
assertThat(result).isSameAs(l);
assertThat(result).isSameAs(testList);
}
catch (TransactionSystemException tse) {
// expected
@ -137,9 +134,6 @@ class JpaTransactionManagerTests {
void testTransactionRollback() {
given(tx.isActive()).willReturn(true);
final List<String> l = new ArrayList<>();
l.add("test");
assertThat(TransactionSynchronizationManager.hasResource(factory)).isFalse();
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -159,9 +153,6 @@ class JpaTransactionManagerTests {
@Test
void testTransactionRollbackWithAlreadyRolledBack() {
final List<String> l = new ArrayList<>();
l.add("test");
assertThat(TransactionSynchronizationManager.hasResource(factory)).isFalse();
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -182,9 +173,6 @@ class JpaTransactionManagerTests {
void testTransactionRollbackOnly() {
given(tx.isActive()).willReturn(true);
final List<String> l = new ArrayList<>();
l.add("test");
assertThat(TransactionSynchronizationManager.hasResource(factory)).isFalse();
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -194,7 +182,7 @@ class JpaTransactionManagerTests {
EntityManagerFactoryUtils.getTransactionalEntityManager(factory).flush();
status.setRollbackOnly();
return l;
return testList;
});
assertThat(TransactionSynchronizationManager.hasResource(factory)).isFalse();
@ -207,9 +195,6 @@ class JpaTransactionManagerTests {
@Test
void testParticipatingTransactionWithCommit() {
final List<String> l = new ArrayList<>();
l.add("test");
assertThat(TransactionSynchronizationManager.hasResource(factory)).isFalse();
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -218,7 +203,7 @@ class JpaTransactionManagerTests {
return tt.execute(status1 -> {
EntityManagerFactoryUtils.getTransactionalEntityManager(factory).flush();
return l;
return testList;
});
});
@ -234,9 +219,6 @@ class JpaTransactionManagerTests {
void testParticipatingTransactionWithRollback() {
given(tx.isActive()).willReturn(true);
final List<String> l = new ArrayList<>();
l.add("test");
assertThat(TransactionSynchronizationManager.hasResource(factory)).isFalse();
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -263,9 +245,6 @@ class JpaTransactionManagerTests {
given(tx.getRollbackOnly()).willReturn(true);
willThrow(new RollbackException()).given(tx).commit();
final List<String> l = new ArrayList<>();
l.add("test");
assertThat(TransactionSynchronizationManager.hasResource(factory)).isFalse();
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -293,9 +272,6 @@ class JpaTransactionManagerTests {
void testParticipatingTransactionWithRequiresNew() {
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
final List<String> l = new ArrayList<>();
l.add("test");
assertThat(TransactionSynchronizationManager.hasResource(factory)).isFalse();
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -303,10 +279,10 @@ class JpaTransactionManagerTests {
assertThat(TransactionSynchronizationManager.hasResource(factory)).isTrue();
return tt.execute(status1 -> {
EntityManagerFactoryUtils.getTransactionalEntityManager(factory).flush();
return l;
return testList;
});
});
assertThat(result).isSameAs(l);
assertThat(result).isSameAs(testList);
assertThat(TransactionSynchronizationManager.hasResource(factory)).isFalse();
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -320,10 +296,6 @@ class JpaTransactionManagerTests {
void testParticipatingTransactionWithRequiresNewAndPrebound() {
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
final List<String> l = new ArrayList<>();
l.add("test");
assertThat(TransactionSynchronizationManager.hasResource(factory)).isFalse();
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -336,10 +308,10 @@ class JpaTransactionManagerTests {
assertThat(TransactionSynchronizationManager.hasResource(factory)).isTrue();
return tt.execute(status1 -> {
EntityManagerFactoryUtils.getTransactionalEntityManager(factory).flush();
return l;
return testList;
});
});
assertThat(result).isSameAs(l);
assertThat(result).isSameAs(testList);
}
finally {
TransactionSynchronizationManager.unbindResource(factory);
@ -358,9 +330,6 @@ class JpaTransactionManagerTests {
void testPropagationSupportsAndRequiresNew() {
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_SUPPORTS);
final List<String> l = new ArrayList<>();
l.add("test");
assertThat(TransactionSynchronizationManager.hasResource(factory)).isFalse();
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -370,10 +339,10 @@ class JpaTransactionManagerTests {
tt2.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
return tt2.execute(status1 -> {
EntityManagerFactoryUtils.getTransactionalEntityManager(factory).flush();
return l;
return testList;
});
});
assertThat(result).isSameAs(l);
assertThat(result).isSameAs(testList);
assertThat(TransactionSynchronizationManager.hasResource(factory)).isFalse();
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -387,9 +356,6 @@ class JpaTransactionManagerTests {
void testPropagationSupportsAndRequiresNewAndEarlyAccess() {
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_SUPPORTS);
final List<String> l = new ArrayList<>();
l.add("test");
assertThat(TransactionSynchronizationManager.hasResource(factory)).isFalse();
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -401,10 +367,10 @@ class JpaTransactionManagerTests {
tt2.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
return tt2.execute(status1 -> {
EntityManagerFactoryUtils.getTransactionalEntityManager(factory).flush();
return l;
return testList;
});
});
assertThat(result).isSameAs(l);
assertThat(result).isSameAs(testList);
assertThat(TransactionSynchronizationManager.hasResource(factory)).isFalse();
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -456,9 +422,6 @@ class JpaTransactionManagerTests {
@Test
void testTransactionCommitWithPropagationSupports() {
final List<String> l = new ArrayList<>();
l.add("test");
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_SUPPORTS);
assertThat(TransactionSynchronizationManager.hasResource(factory)).isFalse();
@ -469,9 +432,9 @@ class JpaTransactionManagerTests {
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue();
assertThat(status.isNewTransaction()).isFalse();
EntityManagerFactoryUtils.getTransactionalEntityManager(factory).flush();
return l;
return testList;
});
assertThat(result).isSameAs(l);
assertThat(result).isSameAs(testList);
assertThat(TransactionSynchronizationManager.hasResource(factory)).isFalse();
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -505,9 +468,6 @@ class JpaTransactionManagerTests {
@Test
void testTransactionCommitWithPrebound() {
final List<String> l = new ArrayList<>();
l.add("test");
assertThat(TransactionSynchronizationManager.hasResource(factory)).isFalse();
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
TransactionSynchronizationManager.bindResource(factory, new EntityManagerHolder(manager));
@ -517,9 +477,9 @@ class JpaTransactionManagerTests {
assertThat(TransactionSynchronizationManager.hasResource(factory)).isTrue();
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue();
EntityManagerFactoryUtils.getTransactionalEntityManager(factory);
return l;
return testList;
});
assertThat(result).isSameAs(l);
assertThat(result).isSameAs(testList);
assertThat(TransactionSynchronizationManager.hasResource(factory)).isTrue();
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -563,9 +523,6 @@ class JpaTransactionManagerTests {
@Test
void testTransactionCommitWithPreboundAndPropagationSupports() {
final List<String> l = new ArrayList<>();
l.add("test");
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_SUPPORTS);
assertThat(TransactionSynchronizationManager.hasResource(factory)).isFalse();
@ -578,9 +535,9 @@ class JpaTransactionManagerTests {
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue();
assertThat(status.isNewTransaction()).isFalse();
EntityManagerFactoryUtils.getTransactionalEntityManager(factory).flush();
return l;
return testList;
});
assertThat(result).isSameAs(l);
assertThat(result).isSameAs(testList);
assertThat(TransactionSynchronizationManager.hasResource(factory)).isTrue();
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();