restored OpenEntityManagerInViewTests
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4769 50f2f4bb-b051-0410-bef5-90022cba6387
This commit is contained in:
parent
a6a730d136
commit
7bfa480c99
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2007 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,172 +16,191 @@
|
|||
|
||||
package org.springframework.orm.jpa.support;
|
||||
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import java.io.IOException;
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.persistence.EntityManagerFactory;
|
||||
import javax.servlet.FilterChain;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.ServletRequest;
|
||||
import javax.servlet.ServletResponse;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
import org.easymock.MockControl;
|
||||
|
||||
import org.springframework.mock.web.MockFilterConfig;
|
||||
import org.springframework.mock.web.MockHttpServletRequest;
|
||||
import org.springframework.mock.web.MockHttpServletResponse;
|
||||
import org.springframework.mock.web.MockServletContext;
|
||||
import org.springframework.mock.web.PassThroughFilterChain;
|
||||
import org.springframework.orm.jpa.JpaTemplate;
|
||||
import org.springframework.transaction.support.TransactionSynchronizationManager;
|
||||
import org.springframework.web.context.WebApplicationContext;
|
||||
import org.springframework.web.context.request.ServletWebRequest;
|
||||
import org.springframework.web.context.support.StaticWebApplicationContext;
|
||||
|
||||
/**
|
||||
* @author Costin Leau
|
||||
* @author Juergen Hoeller
|
||||
* @author Chris Beams
|
||||
*/
|
||||
@Ignore // dependency issues after moving from .testsuite -> .test
|
||||
public class OpenEntityManagerInViewTests {
|
||||
public class OpenEntityManagerInViewTests extends TestCase {
|
||||
|
||||
// private MockControl factoryControl, managerControl;
|
||||
//
|
||||
// private EntityManager manager;
|
||||
//
|
||||
// private EntityManagerFactory factory;
|
||||
//
|
||||
// private JpaTemplate template;
|
||||
//
|
||||
//
|
||||
// @Override
|
||||
// protected void setUp() throws Exception {
|
||||
// factoryControl = MockControl.createControl(EntityManagerFactory.class);
|
||||
// factory = (EntityManagerFactory) factoryControl.getMock();
|
||||
// managerControl = MockControl.createControl(EntityManager.class);
|
||||
// manager = (EntityManager) managerControl.getMock();
|
||||
//
|
||||
// template = new JpaTemplate(factory);
|
||||
// template.afterPropertiesSet();
|
||||
//
|
||||
// factoryControl.expectAndReturn(factory.createEntityManager(), manager);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// protected void tearDown() throws Exception {
|
||||
// assertTrue(TransactionSynchronizationManager.getResourceMap().isEmpty());
|
||||
// assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
|
||||
// assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
|
||||
// assertFalse(TransactionSynchronizationManager.isActualTransactionActive());
|
||||
// }
|
||||
//
|
||||
// public void testOpenEntityManagerInterceptorInView() throws Exception {
|
||||
// OpenEntityManagerInViewInterceptor rawInterceptor = new OpenEntityManagerInViewInterceptor();
|
||||
// rawInterceptor.setEntityManagerFactory(factory);
|
||||
// HandlerInterceptor interceptor = new WebRequestHandlerInterceptorAdapter(rawInterceptor);
|
||||
//
|
||||
// MockServletContext sc = new MockServletContext();
|
||||
// MockHttpServletRequest request = new MockHttpServletRequest(sc);
|
||||
// MockHttpServletResponse response = new MockHttpServletResponse();
|
||||
//
|
||||
// managerControl.replay();
|
||||
// factoryControl.replay();
|
||||
//
|
||||
// interceptor.preHandle(request, response, "handler");
|
||||
// assertTrue(TransactionSynchronizationManager.hasResource(factory));
|
||||
//
|
||||
// // check that further invocations simply participate
|
||||
// interceptor.preHandle(request, response, "handler");
|
||||
//
|
||||
// interceptor.preHandle(request, response, "handler");
|
||||
// interceptor.postHandle(request, response, "handler", null);
|
||||
// interceptor.afterCompletion(request, response, "handler", null);
|
||||
//
|
||||
// interceptor.postHandle(request, response, "handler", null);
|
||||
// interceptor.afterCompletion(request, response, "handler", null);
|
||||
//
|
||||
// interceptor.preHandle(request, response, "handler");
|
||||
// interceptor.postHandle(request, response, "handler", null);
|
||||
// interceptor.afterCompletion(request, response, "handler", null);
|
||||
//
|
||||
// factoryControl.verify();
|
||||
// managerControl.verify();
|
||||
//
|
||||
// managerControl.reset();
|
||||
// factoryControl.reset();
|
||||
// managerControl.replay();
|
||||
// factoryControl.replay();
|
||||
//
|
||||
// interceptor.postHandle(request, response, "handler", null);
|
||||
// assertTrue(TransactionSynchronizationManager.hasResource(factory));
|
||||
//
|
||||
// factoryControl.verify();
|
||||
// managerControl.verify();
|
||||
//
|
||||
// managerControl.reset();
|
||||
// factoryControl.reset();
|
||||
//
|
||||
// manager.close();
|
||||
//
|
||||
// managerControl.replay();
|
||||
// factoryControl.replay();
|
||||
//
|
||||
// interceptor.afterCompletion(request, response, "handler", null);
|
||||
// assertFalse(TransactionSynchronizationManager.hasResource(factory));
|
||||
//
|
||||
// factoryControl.verify();
|
||||
// managerControl.verify();
|
||||
// }
|
||||
//
|
||||
// public void testOpenEntityManagerInViewFilter() throws Exception {
|
||||
// manager.close();
|
||||
//
|
||||
// managerControl.replay();
|
||||
// factoryControl.replay();
|
||||
//
|
||||
// MockControl factoryControl2 = MockControl.createControl(EntityManagerFactory.class);
|
||||
// final EntityManagerFactory factory2 = (EntityManagerFactory) factoryControl2.getMock();
|
||||
//
|
||||
// MockControl managerControl2 = MockControl.createControl(EntityManager.class);
|
||||
// EntityManager manager2 = (EntityManager) managerControl2.getMock();
|
||||
//
|
||||
// factoryControl2.expectAndReturn(factory2.createEntityManager(), manager2);
|
||||
// manager2.close();
|
||||
//
|
||||
// factoryControl2.replay();
|
||||
// managerControl2.replay();
|
||||
//
|
||||
// MockServletContext sc = new MockServletContext();
|
||||
// StaticWebApplicationContext wac = new StaticWebApplicationContext();
|
||||
// wac.setServletContext(sc);
|
||||
// wac.getDefaultListableBeanFactory().registerSingleton("entityManagerFactory", factory);
|
||||
// wac.getDefaultListableBeanFactory().registerSingleton("myEntityManagerFactory", factory2);
|
||||
// wac.refresh();
|
||||
// sc.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, wac);
|
||||
// MockHttpServletRequest request = new MockHttpServletRequest(sc);
|
||||
// MockHttpServletResponse response = new MockHttpServletResponse();
|
||||
//
|
||||
// MockFilterConfig filterConfig = new MockFilterConfig(wac.getServletContext(), "filter");
|
||||
// MockFilterConfig filterConfig2 = new MockFilterConfig(wac.getServletContext(), "filter2");
|
||||
// filterConfig2.addInitParameter("entityManagerFactoryBeanName", "myEntityManagerFactory");
|
||||
//
|
||||
// final OpenEntityManagerInViewFilter filter = new OpenEntityManagerInViewFilter();
|
||||
// filter.init(filterConfig);
|
||||
// final OpenEntityManagerInViewFilter filter2 = new OpenEntityManagerInViewFilter();
|
||||
// filter2.init(filterConfig2);
|
||||
//
|
||||
// final FilterChain filterChain = new FilterChain() {
|
||||
// public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse) {
|
||||
// assertTrue(TransactionSynchronizationManager.hasResource(factory));
|
||||
// servletRequest.setAttribute("invoked", Boolean.TRUE);
|
||||
// }
|
||||
// };
|
||||
//
|
||||
// final FilterChain filterChain2 = new FilterChain() {
|
||||
// public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse)
|
||||
// throws IOException, ServletException {
|
||||
// assertTrue(TransactionSynchronizationManager.hasResource(factory2));
|
||||
// filter.doFilter(servletRequest, servletResponse, filterChain);
|
||||
// }
|
||||
// };
|
||||
//
|
||||
// FilterChain filterChain3 = new PassThroughFilterChain(filter2, filterChain2);
|
||||
//
|
||||
// assertFalse(TransactionSynchronizationManager.hasResource(factory));
|
||||
// assertFalse(TransactionSynchronizationManager.hasResource(factory2));
|
||||
// filter2.doFilter(request, response, filterChain3);
|
||||
// assertFalse(TransactionSynchronizationManager.hasResource(factory));
|
||||
// assertFalse(TransactionSynchronizationManager.hasResource(factory2));
|
||||
// assertNotNull(request.getAttribute("invoked"));
|
||||
//
|
||||
// factoryControl.verify();
|
||||
// managerControl.verify();
|
||||
// factoryControl2.verify();
|
||||
// managerControl2.verify();
|
||||
//
|
||||
// wac.close();
|
||||
// }
|
||||
private MockControl factoryControl, managerControl;
|
||||
|
||||
private EntityManager manager;
|
||||
|
||||
private EntityManagerFactory factory;
|
||||
|
||||
private JpaTemplate template;
|
||||
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
factoryControl = MockControl.createControl(EntityManagerFactory.class);
|
||||
factory = (EntityManagerFactory) factoryControl.getMock();
|
||||
managerControl = MockControl.createControl(EntityManager.class);
|
||||
manager = (EntityManager) managerControl.getMock();
|
||||
|
||||
template = new JpaTemplate(factory);
|
||||
template.afterPropertiesSet();
|
||||
|
||||
factoryControl.expectAndReturn(factory.createEntityManager(), manager);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void tearDown() throws Exception {
|
||||
assertTrue(TransactionSynchronizationManager.getResourceMap().isEmpty());
|
||||
assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
|
||||
assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
|
||||
assertFalse(TransactionSynchronizationManager.isActualTransactionActive());
|
||||
}
|
||||
|
||||
public void testOpenEntityManagerInViewInterceptor() throws Exception {
|
||||
OpenEntityManagerInViewInterceptor interceptor = new OpenEntityManagerInViewInterceptor();
|
||||
interceptor.setEntityManagerFactory(factory);
|
||||
|
||||
MockServletContext sc = new MockServletContext();
|
||||
MockHttpServletRequest request = new MockHttpServletRequest(sc);
|
||||
|
||||
managerControl.replay();
|
||||
factoryControl.replay();
|
||||
|
||||
interceptor.preHandle(new ServletWebRequest(request));
|
||||
assertTrue(TransactionSynchronizationManager.hasResource(factory));
|
||||
|
||||
// check that further invocations simply participate
|
||||
interceptor.preHandle(new ServletWebRequest(request));
|
||||
|
||||
interceptor.preHandle(new ServletWebRequest(request));
|
||||
interceptor.postHandle(new ServletWebRequest(request), null);
|
||||
interceptor.afterCompletion(new ServletWebRequest(request), null);
|
||||
|
||||
interceptor.postHandle(new ServletWebRequest(request), null);
|
||||
interceptor.afterCompletion(new ServletWebRequest(request), null);
|
||||
|
||||
interceptor.preHandle(new ServletWebRequest(request));
|
||||
interceptor.postHandle(new ServletWebRequest(request), null);
|
||||
interceptor.afterCompletion(new ServletWebRequest(request), null);
|
||||
|
||||
factoryControl.verify();
|
||||
managerControl.verify();
|
||||
|
||||
managerControl.reset();
|
||||
factoryControl.reset();
|
||||
managerControl.replay();
|
||||
factoryControl.replay();
|
||||
|
||||
interceptor.postHandle(new ServletWebRequest(request), null);
|
||||
assertTrue(TransactionSynchronizationManager.hasResource(factory));
|
||||
|
||||
factoryControl.verify();
|
||||
managerControl.verify();
|
||||
|
||||
managerControl.reset();
|
||||
factoryControl.reset();
|
||||
|
||||
managerControl.expectAndReturn(manager.isOpen(), true);
|
||||
manager.close();
|
||||
|
||||
managerControl.replay();
|
||||
factoryControl.replay();
|
||||
|
||||
interceptor.afterCompletion(new ServletWebRequest(request), null);
|
||||
assertFalse(TransactionSynchronizationManager.hasResource(factory));
|
||||
|
||||
factoryControl.verify();
|
||||
managerControl.verify();
|
||||
}
|
||||
|
||||
public void testOpenEntityManagerInViewFilter() throws Exception {
|
||||
managerControl.expectAndReturn(manager.isOpen(), true);
|
||||
manager.close();
|
||||
|
||||
managerControl.replay();
|
||||
factoryControl.replay();
|
||||
|
||||
MockControl factoryControl2 = MockControl.createControl(EntityManagerFactory.class);
|
||||
final EntityManagerFactory factory2 = (EntityManagerFactory) factoryControl2.getMock();
|
||||
|
||||
MockControl managerControl2 = MockControl.createControl(EntityManager.class);
|
||||
EntityManager manager2 = (EntityManager) managerControl2.getMock();
|
||||
|
||||
factoryControl2.expectAndReturn(factory2.createEntityManager(), manager2);
|
||||
managerControl2.expectAndReturn(manager2.isOpen(), true);
|
||||
manager2.close();
|
||||
|
||||
factoryControl2.replay();
|
||||
managerControl2.replay();
|
||||
|
||||
MockServletContext sc = new MockServletContext();
|
||||
StaticWebApplicationContext wac = new StaticWebApplicationContext();
|
||||
wac.setServletContext(sc);
|
||||
wac.getDefaultListableBeanFactory().registerSingleton("entityManagerFactory", factory);
|
||||
wac.getDefaultListableBeanFactory().registerSingleton("myEntityManagerFactory", factory2);
|
||||
wac.refresh();
|
||||
sc.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, wac);
|
||||
MockHttpServletRequest request = new MockHttpServletRequest(sc);
|
||||
MockHttpServletResponse response = new MockHttpServletResponse();
|
||||
|
||||
MockFilterConfig filterConfig = new MockFilterConfig(wac.getServletContext(), "filter");
|
||||
MockFilterConfig filterConfig2 = new MockFilterConfig(wac.getServletContext(), "filter2");
|
||||
filterConfig2.addInitParameter("entityManagerFactoryBeanName", "myEntityManagerFactory");
|
||||
|
||||
final OpenEntityManagerInViewFilter filter = new OpenEntityManagerInViewFilter();
|
||||
filter.init(filterConfig);
|
||||
final OpenEntityManagerInViewFilter filter2 = new OpenEntityManagerInViewFilter();
|
||||
filter2.init(filterConfig2);
|
||||
|
||||
final FilterChain filterChain = new FilterChain() {
|
||||
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse) {
|
||||
assertTrue(TransactionSynchronizationManager.hasResource(factory));
|
||||
servletRequest.setAttribute("invoked", Boolean.TRUE);
|
||||
}
|
||||
};
|
||||
|
||||
final FilterChain filterChain2 = new FilterChain() {
|
||||
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse)
|
||||
throws IOException, ServletException {
|
||||
assertTrue(TransactionSynchronizationManager.hasResource(factory2));
|
||||
filter.doFilter(servletRequest, servletResponse, filterChain);
|
||||
}
|
||||
};
|
||||
|
||||
FilterChain filterChain3 = new PassThroughFilterChain(filter2, filterChain2);
|
||||
|
||||
assertFalse(TransactionSynchronizationManager.hasResource(factory));
|
||||
assertFalse(TransactionSynchronizationManager.hasResource(factory2));
|
||||
filter2.doFilter(request, response, filterChain3);
|
||||
assertFalse(TransactionSynchronizationManager.hasResource(factory));
|
||||
assertFalse(TransactionSynchronizationManager.hasResource(factory2));
|
||||
assertNotNull(request.getAttribute("invoked"));
|
||||
|
||||
factoryControl.verify();
|
||||
managerControl.verify();
|
||||
factoryControl2.verify();
|
||||
managerControl2.verify();
|
||||
|
||||
wac.close();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue