@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2016 the original author or authors.
|
||||
* Copyright 2002-2018 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.
|
||||
@@ -19,7 +19,6 @@ package org.springframework.beans.factory.config;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
|
||||
@@ -37,21 +36,18 @@ import static org.mockito.BDDMockito.*;
|
||||
public class CustomScopeConfigurerTests {
|
||||
|
||||
private static final String FOO_SCOPE = "fooScope";
|
||||
private ConfigurableListableBeanFactory factory;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
factory = new DefaultListableBeanFactory();
|
||||
}
|
||||
private final ConfigurableListableBeanFactory factory = new DefaultListableBeanFactory();
|
||||
|
||||
|
||||
@Test
|
||||
public void testWithNoScopes() throws Exception {
|
||||
public void testWithNoScopes() {
|
||||
CustomScopeConfigurer figurer = new CustomScopeConfigurer();
|
||||
figurer.postProcessBeanFactory(factory);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSunnyDayWithBonaFideScopeInstance() throws Exception {
|
||||
public void testSunnyDayWithBonaFideScopeInstance() {
|
||||
Scope scope = mock(Scope.class);
|
||||
factory.registerScope(FOO_SCOPE, scope);
|
||||
Map<String, Object> scopes = new HashMap<>();
|
||||
@@ -62,7 +58,7 @@ public class CustomScopeConfigurerTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSunnyDayWithBonaFideScopeClass() throws Exception {
|
||||
public void testSunnyDayWithBonaFideScopeClass() {
|
||||
Map<String, Object> scopes = new HashMap<>();
|
||||
scopes.put(FOO_SCOPE, NoOpScope.class);
|
||||
CustomScopeConfigurer figurer = new CustomScopeConfigurer();
|
||||
@@ -72,7 +68,7 @@ public class CustomScopeConfigurerTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSunnyDayWithBonaFideScopeClassname() throws Exception {
|
||||
public void testSunnyDayWithBonaFideScopeClassName() {
|
||||
Map<String, Object> scopes = new HashMap<>();
|
||||
scopes.put(FOO_SCOPE, NoOpScope.class.getName());
|
||||
CustomScopeConfigurer figurer = new CustomScopeConfigurer();
|
||||
@@ -82,7 +78,7 @@ public class CustomScopeConfigurerTests {
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void testWhereScopeMapHasNullScopeValueInEntrySet() throws Exception {
|
||||
public void testWhereScopeMapHasNullScopeValueInEntrySet() {
|
||||
Map<String, Object> scopes = new HashMap<>();
|
||||
scopes.put(FOO_SCOPE, null);
|
||||
CustomScopeConfigurer figurer = new CustomScopeConfigurer();
|
||||
@@ -91,9 +87,9 @@ public class CustomScopeConfigurerTests {
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void testWhereScopeMapHasNonScopeInstanceInEntrySet() throws Exception {
|
||||
public void testWhereScopeMapHasNonScopeInstanceInEntrySet() {
|
||||
Map<String, Object> scopes = new HashMap<>();
|
||||
scopes.put(FOO_SCOPE, this); // <-- not a valid value...
|
||||
scopes.put(FOO_SCOPE, this); // <-- not a valid value...
|
||||
CustomScopeConfigurer figurer = new CustomScopeConfigurer();
|
||||
figurer.setScopes(scopes);
|
||||
figurer.postProcessBeanFactory(factory);
|
||||
@@ -101,9 +97,9 @@ public class CustomScopeConfigurerTests {
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Test(expected = ClassCastException.class)
|
||||
public void testWhereScopeMapHasNonStringTypedScopeNameInKeySet() throws Exception {
|
||||
public void testWhereScopeMapHasNonStringTypedScopeNameInKeySet() {
|
||||
Map scopes = new HashMap();
|
||||
scopes.put(this, new NoOpScope()); // <-- not a valid value (the key)...
|
||||
scopes.put(this, new NoOpScope()); // <-- not a valid value (the key)...
|
||||
CustomScopeConfigurer figurer = new CustomScopeConfigurer();
|
||||
figurer.setScopes(scopes);
|
||||
figurer.postProcessBeanFactory(factory);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2018 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.
|
||||
@@ -28,28 +28,23 @@ import static org.junit.Assert.*;
|
||||
*/
|
||||
public class DeprecatedBeanWarnerTests {
|
||||
|
||||
private DefaultListableBeanFactory beanFactory;
|
||||
|
||||
private String beanName;
|
||||
|
||||
private BeanDefinition beanDefinition;
|
||||
|
||||
private DeprecatedBeanWarner warner;
|
||||
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("deprecation")
|
||||
public void postProcess() {
|
||||
beanFactory = new DefaultListableBeanFactory();
|
||||
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
|
||||
BeanDefinition def = new RootBeanDefinition(MyDeprecatedBean.class);
|
||||
String beanName = "deprecated";
|
||||
beanFactory.registerBeanDefinition(beanName, def);
|
||||
|
||||
warner = new MyDeprecatedBeanWarner();
|
||||
DeprecatedBeanWarner warner = new MyDeprecatedBeanWarner();
|
||||
warner.postProcessBeanFactory(beanFactory);
|
||||
assertEquals(beanName, this.beanName);
|
||||
assertEquals(def, this.beanDefinition);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -294,7 +294,7 @@ public class SchedulerFactoryBean extends SchedulerAccessor implements FactoryBe
|
||||
* @see #setQuartzProperties
|
||||
* @see LocalTaskExecutorThreadPool
|
||||
* @see org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
|
||||
* @see org.springframework.scheduling.commonj.WorkManagerTaskExecutor
|
||||
* @see org.springframework.scheduling.concurrent.DefaultManagedTaskExecutor
|
||||
*/
|
||||
public void setTaskExecutor(Executor taskExecutor) {
|
||||
this.taskExecutor = taskExecutor;
|
||||
|
||||
@@ -127,7 +127,7 @@ public abstract class SharedEntityManagerCreator {
|
||||
|
||||
/**
|
||||
* Create a transactional EntityManager proxy for the given EntityManagerFactory.
|
||||
* @param emf EntityManagerFactory to obtain EntityManagers from as needed
|
||||
* @param emf the EntityManagerFactory to obtain EntityManagers from as needed
|
||||
* @param properties the properties to be passed into the
|
||||
* {@code createEntityManager} call (may be {@code null})
|
||||
* @param entityManagerInterfaces the interfaces to be implemented by the
|
||||
@@ -142,7 +142,7 @@ public abstract class SharedEntityManagerCreator {
|
||||
|
||||
/**
|
||||
* Create a transactional EntityManager proxy for the given EntityManagerFactory.
|
||||
* @param emf EntityManagerFactory to obtain EntityManagers from as needed
|
||||
* @param emf the EntityManagerFactory to obtain EntityManagers from as needed
|
||||
* @param properties the properties to be passed into the
|
||||
* {@code createEntityManager} call (may be {@code null})
|
||||
* @param synchronizedWithTransaction whether to automatically join ongoing
|
||||
@@ -345,11 +345,11 @@ public abstract class SharedEntityManagerCreator {
|
||||
private final Query target;
|
||||
|
||||
@Nullable
|
||||
private EntityManager em;
|
||||
private EntityManager entityManager;
|
||||
|
||||
public DeferredQueryInvocationHandler(Query target, EntityManager em) {
|
||||
public DeferredQueryInvocationHandler(Query target, EntityManager entityManager) {
|
||||
this.target = target;
|
||||
this.em = em;
|
||||
this.entityManager = entityManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -387,8 +387,8 @@ public abstract class SharedEntityManagerCreator {
|
||||
if (queryTerminatingMethods.contains(method.getName())) {
|
||||
// Actual execution of the query: close the EntityManager right
|
||||
// afterwards, since that was the only reason we kept it open.
|
||||
EntityManagerFactoryUtils.closeEntityManager(this.em);
|
||||
this.em = null;
|
||||
EntityManagerFactoryUtils.closeEntityManager(this.entityManager);
|
||||
this.entityManager = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2014 the original author or authors.
|
||||
* Copyright 2002-2018 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.
|
||||
@@ -18,18 +18,23 @@ package org.springframework.orm.jpa;
|
||||
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.persistence.EntityManagerFactory;
|
||||
import javax.persistence.Query;
|
||||
import javax.persistence.TransactionRequiredException;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.*;
|
||||
import static org.junit.Assert.*;
|
||||
import static org.mockito.Mockito.*;
|
||||
import static org.mockito.BDDMockito.*;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.withSettings;
|
||||
|
||||
/**
|
||||
* Unit tests for {@link SharedEntityManagerCreator}.
|
||||
*
|
||||
* @author Oliver Gierke
|
||||
* @author Juergen Hoeller
|
||||
*/
|
||||
public class SharedEntityManagerCreatorTests {
|
||||
|
||||
@@ -83,4 +88,68 @@ public class SharedEntityManagerCreatorTests {
|
||||
em.refresh(new Object());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void deferredQueryWithUpdate() {
|
||||
EntityManagerFactory emf = mock(EntityManagerFactory.class);
|
||||
EntityManager targetEm = mock(EntityManager.class);
|
||||
Query query = mock(Query.class);
|
||||
given(emf.createEntityManager()).willReturn(targetEm);
|
||||
given(targetEm.createQuery("x")).willReturn(query);
|
||||
given(targetEm.isOpen()).willReturn(true);
|
||||
|
||||
EntityManager em = SharedEntityManagerCreator.createSharedEntityManager(emf);
|
||||
em.createQuery("x").executeUpdate();
|
||||
|
||||
verify(query).executeUpdate();
|
||||
verify(targetEm).close();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void deferredQueryWithSingleResult() {
|
||||
EntityManagerFactory emf = mock(EntityManagerFactory.class);
|
||||
EntityManager targetEm = mock(EntityManager.class);
|
||||
Query query = mock(Query.class);
|
||||
given(emf.createEntityManager()).willReturn(targetEm);
|
||||
given(targetEm.createQuery("x")).willReturn(query);
|
||||
given(targetEm.isOpen()).willReturn(true);
|
||||
|
||||
EntityManager em = SharedEntityManagerCreator.createSharedEntityManager(emf);
|
||||
em.createQuery("x").getSingleResult();
|
||||
|
||||
verify(query).getSingleResult();
|
||||
verify(targetEm).close();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void deferredQueryWithResultList() {
|
||||
EntityManagerFactory emf = mock(EntityManagerFactory.class);
|
||||
EntityManager targetEm = mock(EntityManager.class);
|
||||
Query query = mock(Query.class);
|
||||
given(emf.createEntityManager()).willReturn(targetEm);
|
||||
given(targetEm.createQuery("x")).willReturn(query);
|
||||
given(targetEm.isOpen()).willReturn(true);
|
||||
|
||||
EntityManager em = SharedEntityManagerCreator.createSharedEntityManager(emf);
|
||||
em.createQuery("x").getResultList();
|
||||
|
||||
verify(query).getResultList();
|
||||
verify(targetEm).close();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void deferredQueryWithResultStream() {
|
||||
EntityManagerFactory emf = mock(EntityManagerFactory.class);
|
||||
EntityManager targetEm = mock(EntityManager.class);
|
||||
Query query = mock(Query.class);
|
||||
given(emf.createEntityManager()).willReturn(targetEm);
|
||||
given(targetEm.createQuery("x")).willReturn(query);
|
||||
given(targetEm.isOpen()).willReturn(true);
|
||||
|
||||
EntityManager em = SharedEntityManagerCreator.createSharedEntityManager(emf);
|
||||
em.createQuery("x").getResultStream();
|
||||
|
||||
verify(query).getResultStream();
|
||||
verify(targetEm).close();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user