@ -36,6 +36,8 @@ import org.springframework.core.testfixture.io.SerializationTestUtils;
@@ -36,6 +36,8 @@ import org.springframework.core.testfixture.io.SerializationTestUtils;
import org.springframework.dao.DataAccessException ;
import org.springframework.dao.OptimisticLockingFailureException ;
import org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver ;
import org.springframework.orm.jpa.domain.DriversLicense ;
import org.springframework.orm.jpa.domain.Person ;
import org.springframework.orm.jpa.persistenceunit.PersistenceUnitPostProcessor ;
import org.springframework.transaction.TransactionStatus ;
import org.springframework.transaction.interceptor.DefaultTransactionAttribute ;
@ -53,23 +55,16 @@ import static org.mockito.Mockito.verify;
@@ -53,23 +55,16 @@ import static org.mockito.Mockito.verify;
* @author Juergen Hoeller
* @author Phillip Webb
* /
@SuppressWarnings ( { "rawtypes" , "removal" } )
@SuppressWarnings ( "rawtypes" )
class LocalContainerEntityManagerFactoryBeanTests extends AbstractEntityManagerFactoryBeanTests {
// Static fields set by inner class DummyPersistenceProvider
private static Map actualProps ;
private static PersistenceUnitInfo actualPui ;
@Test
void testV alidPersistenceUnit( ) throws Exception {
void validPersistenceUnit ( ) {
parseValidPersistenceUnit ( ) ;
}
@Test
void t estE xceptionTranslationWithNoDialect( ) throws Exception {
void exceptionTranslationWithNoDialect ( ) {
LocalContainerEntityManagerFactoryBean cefb = parseValidPersistenceUnit ( ) ;
cefb . getObject ( ) ;
assertThat ( cefb . getJpaDialect ( ) ) . as ( "No dialect set" ) . isNull ( ) ;
@ -83,7 +78,7 @@ class LocalContainerEntityManagerFactoryBeanTests extends AbstractEntityManagerF
@@ -83,7 +78,7 @@ class LocalContainerEntityManagerFactoryBeanTests extends AbstractEntityManagerF
}
@Test
void t estE ntityManagerFactoryIsProxied( ) throws Exception {
void entityManagerFactoryIsProxied ( ) throws Exception {
LocalContainerEntityManagerFactoryBean cefb = parseValidPersistenceUnit ( ) ;
EntityManagerFactory emf = cefb . getObject ( ) ;
assertThat ( cefb . getObject ( ) ) . as ( "EntityManagerFactory reference must be cached after init" ) . isSameAs ( emf ) ;
@ -100,7 +95,7 @@ class LocalContainerEntityManagerFactoryBeanTests extends AbstractEntityManagerF
@@ -100,7 +95,7 @@ class LocalContainerEntityManagerFactoryBeanTests extends AbstractEntityManagerF
}
@Test
void testA pplicationManagedEntityManagerWithoutTransaction( ) throws Exception {
void a pplicationManagedEntityManagerWithoutTransaction( ) {
Object testEntity = new Object ( ) ;
EntityManager mockEm = mock ( ) ;
@ -120,7 +115,7 @@ class LocalContainerEntityManagerFactoryBeanTests extends AbstractEntityManagerF
@@ -120,7 +115,7 @@ class LocalContainerEntityManagerFactoryBeanTests extends AbstractEntityManagerF
}
@Test
void testA pplicationManagedEntityManagerWithTransaction( ) throws Exception {
void a pplicationManagedEntityManagerWithTransaction( ) {
Object testEntity = new Object ( ) ;
EntityTransaction mockTx = mock ( ) ;
@ -161,7 +156,7 @@ class LocalContainerEntityManagerFactoryBeanTests extends AbstractEntityManagerF
@@ -161,7 +156,7 @@ class LocalContainerEntityManagerFactoryBeanTests extends AbstractEntityManagerF
}
@Test
void testA pplicationManagedEntityManagerWithTransactionAndCommitException( ) throws Exception {
void a pplicationManagedEntityManagerWithTransactionAndCommitException( ) {
Object testEntity = new Object ( ) ;
EntityTransaction mockTx = mock ( ) ;
@ -203,7 +198,7 @@ class LocalContainerEntityManagerFactoryBeanTests extends AbstractEntityManagerF
@@ -203,7 +198,7 @@ class LocalContainerEntityManagerFactoryBeanTests extends AbstractEntityManagerF
}
@Test
void testA pplicationManagedEntityManagerWithJtaTransaction( ) throws Exception {
void a pplicationManagedEntityManagerWithJtaTransaction( ) {
Object testEntity = new Object ( ) ;
// This one's for the tx (shared)
@ -240,67 +235,79 @@ class LocalContainerEntityManagerFactoryBeanTests extends AbstractEntityManagerF
@@ -240,67 +235,79 @@ class LocalContainerEntityManagerFactoryBeanTests extends AbstractEntityManagerF
verify ( mockEmf ) . close ( ) ;
}
public LocalContainerEntityManagerFactoryBean parseValidPersistenceUnit (
PersistenceUnitPostProcessor . . . postProcessors ) {
@Test
void invalidPersistenceUnitName ( ) {
assertThatIllegalArgumentException ( ) . isThrownBy ( ( ) - >
createEntityManagerFactoryBean ( "org/springframework/orm/jpa/domain/persistence.xml" , null , "call me Bob" ) ) ;
}
return createEntityManagerFactoryBean (
"org/springframework/orm/jpa/domain/persistence.xml" , null ,
"Person" , postProcessors ) ;
@Test
void rejectsMissingPersistenceUnitInfo ( ) {
LocalContainerEntityManagerFactoryBean emfb = new LocalContainerEntityManagerFactoryBean ( ) ;
emfb . setPersistenceProviderClass ( DummyContainerPersistenceProvider . class ) ;
String entityManagerName = "call me Bob" ;
emfb . setPersistenceUnitName ( entityManagerName ) ;
assertThatIllegalArgumentException ( ) . isThrownBy ( emfb : : afterPropertiesSet ) ;
}
@Test
void testInvalidPersistenceUnitName ( ) {
assertThatIllegalArgumentException ( ) . isThrownBy ( ( ) - >
createEntityManagerFactoryBean ( "org/springframework/orm/jpa/domain/persistence.xml" , null , "call me Bob" ) ) ;
void acceptsPersistenceConfiguration ( ) {
DummyContainerPersistenceProvider persistenceProvider = new DummyContainerPersistenceProvider ( ) ;
LocalContainerEntityManagerFactoryBean emfb = new LocalContainerEntityManagerFactoryBean ( ) ;
emfb . setPersistenceProvider ( persistenceProvider ) ;
String entityManagerName = "call me Bob" ;
emfb . setPersistenceConfiguration ( new PersistenceConfiguration ( entityManagerName ) .
managedClass ( DriversLicense . class ) . managedClass ( Person . class ) ) ;
emfb . afterPropertiesSet ( ) ;
assertThat ( persistenceProvider . actualPui . getPersistenceUnitName ( ) ) . isEqualTo ( entityManagerName ) ;
assertThat ( persistenceProvider . actualPui . getManagedClassNames ( ) ) . containsExactly (
DriversLicense . class . getName ( ) , Person . class . getName ( ) ) ;
}
private LocalContainerEntityManagerFactoryBean parseValidPersistenceUnit ( PersistenceUnitPostProcessor . . . postProcessors ) {
return createEntityManagerFactoryBean (
"org/springframework/orm/jpa/domain/persistence.xml" , null ,
"Person" , postProcessors ) ;
}
@SuppressWarnings ( "unchecked" )
protected LocalContainerEntityManagerFactoryBean createEntityManagerFactoryBean (
private LocalContainerEntityManagerFactoryBean createEntityManagerFactoryBean (
String persistenceXml , Properties props , String entityManagerName ,
PersistenceUnitPostProcessor . . . postProcessors ) {
// This will be set by DummyPersistenceProvider
actualPui = null ;
actualProps = null ;
DummyContainerPersistenceProvider persistenceProvider = new DummyContainerPersistenceProvider ( ) ;
LocalContainerEntityManagerFactoryBean emfb = new LocalContainerEntityManagerFactoryBean ( ) ;
LocalContainerEntityManagerFactoryBean containerEmfb = new LocalContainerEntityManagerFactoryBean ( ) ;
containerEmfb . setPersistenceUnitName ( entityManagerName ) ;
containerEmfb . setPersistenceProviderClass ( DummyContainerPersistenceProvider . class ) ;
emfb . setPersistenceUnitName ( entityManagerName ) ;
emfb . setPersistenceProvider ( persistenceProvider ) ;
if ( props ! = null ) {
containerEmfb . setJpaProperties ( props ) ;
emfb . setJpaProperties ( props ) ;
}
contain erE mfb. setLoadTimeWeaver ( new InstrumentationLoadTimeWeaver ( ) ) ;
contain erE mfb. setPersistenceXmlLocation ( persistenceXml ) ;
contain erE mfb. setPersistenceUnitPostProcessors ( postProcessors ) ;
contain erE mfb. afterPropertiesSet ( ) ;
emfb . setLoadTimeWeaver ( new InstrumentationLoadTimeWeaver ( ) ) ;
emfb . setPersistenceXmlLocation ( persistenceXml ) ;
emfb . setPersistenceUnitPostProcessors ( postProcessors ) ;
emfb . afterPropertiesSet ( ) ;
assertThat ( actualPui . getPersistenceUnitName ( ) ) . isEqualTo ( entityManagerName ) ;
assertThat ( persistenceProvider . actualPui . getPersistenceUnitName ( ) ) . isEqualTo ( entityManagerName ) ;
if ( props ! = null ) {
assertThat ( actualProps ) . isEqualTo ( props ) ;
assertThat ( persistenceProvider . actualProps ) . isEqualTo ( props ) ;
}
//checkInvariants(containerEmfb);
return containerEmfb ;
checkInvariants ( emfb ) ;
//containerEmfb.destroy();
//emfMc.verify();
return emfb ;
}
@Test
void testRejectsMissingPersistenceUnitInfo ( ) {
LocalContainerEntityManagerFactoryBean containerEmfb = new LocalContainerEntityManagerFactoryBean ( ) ;
String entityManagerName = "call me Bob" ;
containerEmfb . setPersistenceUnitName ( entityManagerName ) ;
containerEmfb . setPersistenceProviderClass ( DummyContainerPersistenceProvider . class ) ;
assertThatIllegalArgumentException ( ) . isThrownBy (
containerEmfb : : afterPropertiesSet ) ;
}
private static class DummyContainerPersistenceProvider implements PersistenceProvider {
PersistenceUnitInfo actualPui ;
private static class DummyContainerPersistenceProvider implements PersistenceProvider {
Map actualProps ;
@Override
public EntityManagerFactory createContainerEntityManagerFactory ( PersistenceUnitInfo pui , Map map ) {