提交 676ab5f0 编写于 作者: J Juergen Hoeller

restored OpenEntityManagerInViewTests

上级 179dad8c
/*
* 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();
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册