diff --git a/spring-orm/src/test/java/org/springframework/orm/jpa/JpaTransactionManagerTests.java b/spring-orm/src/test/java/org/springframework/orm/jpa/JpaTransactionManagerTests.java index f0d165f166..80ad93b08f 100644 --- a/spring-orm/src/test/java/org/springframework/orm/jpa/JpaTransactionManagerTests.java +++ b/spring-orm/src/test/java/org/springframework/orm/jpa/JpaTransactionManagerTests.java @@ -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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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();