restored OpenEntityManagerInViewTests

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4769 50f2f4bb-b051-0410-bef5-90022cba6387
This commit is contained in:
Juergen Hoeller 2011-07-25 12:15:33 +00:00
parent a6a730d136
commit 7bfa480c99
1 changed files with 180 additions and 161 deletions

View File

@ -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"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -16,172 +16,191 @@
package org.springframework.orm.jpa.support; package org.springframework.orm.jpa.support;
import org.junit.Ignore; import java.io.IOException;
import org.junit.Test; 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 Costin Leau
* @author Juergen Hoeller * @author Juergen Hoeller
* @author Chris Beams * @author Chris Beams
*/ */
@Ignore // dependency issues after moving from .testsuite -> .test public class OpenEntityManagerInViewTests extends TestCase {
public class OpenEntityManagerInViewTests {
// private MockControl factoryControl, managerControl; private MockControl factoryControl, managerControl;
//
// private EntityManager manager; private EntityManager manager;
//
// private EntityManagerFactory factory; private EntityManagerFactory factory;
//
// private JpaTemplate template; private JpaTemplate template;
//
//
// @Override @Override
// protected void setUp() throws Exception { protected void setUp() throws Exception {
// factoryControl = MockControl.createControl(EntityManagerFactory.class); factoryControl = MockControl.createControl(EntityManagerFactory.class);
// factory = (EntityManagerFactory) factoryControl.getMock(); factory = (EntityManagerFactory) factoryControl.getMock();
// managerControl = MockControl.createControl(EntityManager.class); managerControl = MockControl.createControl(EntityManager.class);
// manager = (EntityManager) managerControl.getMock(); manager = (EntityManager) managerControl.getMock();
//
// template = new JpaTemplate(factory); template = new JpaTemplate(factory);
// template.afterPropertiesSet(); template.afterPropertiesSet();
//
// factoryControl.expectAndReturn(factory.createEntityManager(), manager); factoryControl.expectAndReturn(factory.createEntityManager(), manager);
// } }
//
// @Override @Override
// protected void tearDown() throws Exception { protected void tearDown() throws Exception {
// assertTrue(TransactionSynchronizationManager.getResourceMap().isEmpty()); assertTrue(TransactionSynchronizationManager.getResourceMap().isEmpty());
// assertFalse(TransactionSynchronizationManager.isSynchronizationActive()); assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
// assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly()); assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly());
// assertFalse(TransactionSynchronizationManager.isActualTransactionActive()); assertFalse(TransactionSynchronizationManager.isActualTransactionActive());
// } }
//
// public void testOpenEntityManagerInterceptorInView() throws Exception { public void testOpenEntityManagerInViewInterceptor() throws Exception {
// OpenEntityManagerInViewInterceptor rawInterceptor = new OpenEntityManagerInViewInterceptor(); OpenEntityManagerInViewInterceptor interceptor = new OpenEntityManagerInViewInterceptor();
// rawInterceptor.setEntityManagerFactory(factory); interceptor.setEntityManagerFactory(factory);
// HandlerInterceptor interceptor = new WebRequestHandlerInterceptorAdapter(rawInterceptor);
// MockServletContext sc = new MockServletContext();
// MockServletContext sc = new MockServletContext(); MockHttpServletRequest request = new MockHttpServletRequest(sc);
// MockHttpServletRequest request = new MockHttpServletRequest(sc);
// MockHttpServletResponse response = new MockHttpServletResponse(); managerControl.replay();
// factoryControl.replay();
// managerControl.replay();
// factoryControl.replay(); interceptor.preHandle(new ServletWebRequest(request));
// assertTrue(TransactionSynchronizationManager.hasResource(factory));
// interceptor.preHandle(request, response, "handler");
// assertTrue(TransactionSynchronizationManager.hasResource(factory)); // check that further invocations simply participate
// interceptor.preHandle(new ServletWebRequest(request));
// // check that further invocations simply participate
// interceptor.preHandle(request, response, "handler"); interceptor.preHandle(new ServletWebRequest(request));
// interceptor.postHandle(new ServletWebRequest(request), null);
// interceptor.preHandle(request, response, "handler"); interceptor.afterCompletion(new ServletWebRequest(request), null);
// interceptor.postHandle(request, response, "handler", null);
// interceptor.afterCompletion(request, response, "handler", null); interceptor.postHandle(new ServletWebRequest(request), null);
// interceptor.afterCompletion(new ServletWebRequest(request), null);
// interceptor.postHandle(request, response, "handler", null);
// interceptor.afterCompletion(request, response, "handler", null); interceptor.preHandle(new ServletWebRequest(request));
// interceptor.postHandle(new ServletWebRequest(request), null);
// interceptor.preHandle(request, response, "handler"); interceptor.afterCompletion(new ServletWebRequest(request), null);
// interceptor.postHandle(request, response, "handler", null);
// interceptor.afterCompletion(request, response, "handler", null); factoryControl.verify();
// managerControl.verify();
// factoryControl.verify();
// managerControl.verify(); managerControl.reset();
// factoryControl.reset();
// managerControl.reset(); managerControl.replay();
// factoryControl.reset(); factoryControl.replay();
// managerControl.replay();
// factoryControl.replay(); interceptor.postHandle(new ServletWebRequest(request), null);
// assertTrue(TransactionSynchronizationManager.hasResource(factory));
// interceptor.postHandle(request, response, "handler", null);
// assertTrue(TransactionSynchronizationManager.hasResource(factory)); factoryControl.verify();
// managerControl.verify();
// factoryControl.verify();
// managerControl.verify(); managerControl.reset();
// factoryControl.reset();
// managerControl.reset();
// factoryControl.reset(); managerControl.expectAndReturn(manager.isOpen(), true);
// manager.close();
// manager.close();
// managerControl.replay();
// managerControl.replay(); factoryControl.replay();
// factoryControl.replay();
// interceptor.afterCompletion(new ServletWebRequest(request), null);
// interceptor.afterCompletion(request, response, "handler", null); assertFalse(TransactionSynchronizationManager.hasResource(factory));
// assertFalse(TransactionSynchronizationManager.hasResource(factory));
// factoryControl.verify();
// factoryControl.verify(); managerControl.verify();
// managerControl.verify(); }
// }
// public void testOpenEntityManagerInViewFilter() throws Exception {
// public void testOpenEntityManagerInViewFilter() throws Exception { managerControl.expectAndReturn(manager.isOpen(), true);
// manager.close(); manager.close();
//
// managerControl.replay(); managerControl.replay();
// factoryControl.replay(); factoryControl.replay();
//
// MockControl factoryControl2 = MockControl.createControl(EntityManagerFactory.class); MockControl factoryControl2 = MockControl.createControl(EntityManagerFactory.class);
// final EntityManagerFactory factory2 = (EntityManagerFactory) factoryControl2.getMock(); final EntityManagerFactory factory2 = (EntityManagerFactory) factoryControl2.getMock();
//
// MockControl managerControl2 = MockControl.createControl(EntityManager.class); MockControl managerControl2 = MockControl.createControl(EntityManager.class);
// EntityManager manager2 = (EntityManager) managerControl2.getMock(); EntityManager manager2 = (EntityManager) managerControl2.getMock();
//
// factoryControl2.expectAndReturn(factory2.createEntityManager(), manager2); factoryControl2.expectAndReturn(factory2.createEntityManager(), manager2);
// manager2.close(); managerControl2.expectAndReturn(manager2.isOpen(), true);
// manager2.close();
// factoryControl2.replay();
// managerControl2.replay(); factoryControl2.replay();
// managerControl2.replay();
// MockServletContext sc = new MockServletContext();
// StaticWebApplicationContext wac = new StaticWebApplicationContext(); MockServletContext sc = new MockServletContext();
// wac.setServletContext(sc); StaticWebApplicationContext wac = new StaticWebApplicationContext();
// wac.getDefaultListableBeanFactory().registerSingleton("entityManagerFactory", factory); wac.setServletContext(sc);
// wac.getDefaultListableBeanFactory().registerSingleton("myEntityManagerFactory", factory2); wac.getDefaultListableBeanFactory().registerSingleton("entityManagerFactory", factory);
// wac.refresh(); wac.getDefaultListableBeanFactory().registerSingleton("myEntityManagerFactory", factory2);
// sc.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, wac); wac.refresh();
// MockHttpServletRequest request = new MockHttpServletRequest(sc); sc.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, wac);
// MockHttpServletResponse response = new MockHttpServletResponse(); MockHttpServletRequest request = new MockHttpServletRequest(sc);
// MockHttpServletResponse response = new MockHttpServletResponse();
// MockFilterConfig filterConfig = new MockFilterConfig(wac.getServletContext(), "filter");
// MockFilterConfig filterConfig2 = new MockFilterConfig(wac.getServletContext(), "filter2"); MockFilterConfig filterConfig = new MockFilterConfig(wac.getServletContext(), "filter");
// filterConfig2.addInitParameter("entityManagerFactoryBeanName", "myEntityManagerFactory"); MockFilterConfig filterConfig2 = new MockFilterConfig(wac.getServletContext(), "filter2");
// filterConfig2.addInitParameter("entityManagerFactoryBeanName", "myEntityManagerFactory");
// final OpenEntityManagerInViewFilter filter = new OpenEntityManagerInViewFilter();
// filter.init(filterConfig); final OpenEntityManagerInViewFilter filter = new OpenEntityManagerInViewFilter();
// final OpenEntityManagerInViewFilter filter2 = new OpenEntityManagerInViewFilter(); filter.init(filterConfig);
// filter2.init(filterConfig2); final OpenEntityManagerInViewFilter filter2 = new OpenEntityManagerInViewFilter();
// filter2.init(filterConfig2);
// final FilterChain filterChain = new FilterChain() {
// public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse) { final FilterChain filterChain = new FilterChain() {
// assertTrue(TransactionSynchronizationManager.hasResource(factory)); public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse) {
// servletRequest.setAttribute("invoked", Boolean.TRUE); assertTrue(TransactionSynchronizationManager.hasResource(factory));
// } servletRequest.setAttribute("invoked", Boolean.TRUE);
// }; }
// };
// final FilterChain filterChain2 = new FilterChain() {
// public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse) final FilterChain filterChain2 = new FilterChain() {
// throws IOException, ServletException { public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse)
// assertTrue(TransactionSynchronizationManager.hasResource(factory2)); throws IOException, ServletException {
// filter.doFilter(servletRequest, servletResponse, filterChain); assertTrue(TransactionSynchronizationManager.hasResource(factory2));
// } filter.doFilter(servletRequest, servletResponse, filterChain);
// }; }
// };
// FilterChain filterChain3 = new PassThroughFilterChain(filter2, filterChain2);
// FilterChain filterChain3 = new PassThroughFilterChain(filter2, filterChain2);
// assertFalse(TransactionSynchronizationManager.hasResource(factory));
// assertFalse(TransactionSynchronizationManager.hasResource(factory2)); assertFalse(TransactionSynchronizationManager.hasResource(factory));
// filter2.doFilter(request, response, filterChain3); assertFalse(TransactionSynchronizationManager.hasResource(factory2));
// assertFalse(TransactionSynchronizationManager.hasResource(factory)); filter2.doFilter(request, response, filterChain3);
// assertFalse(TransactionSynchronizationManager.hasResource(factory2)); assertFalse(TransactionSynchronizationManager.hasResource(factory));
// assertNotNull(request.getAttribute("invoked")); assertFalse(TransactionSynchronizationManager.hasResource(factory2));
// assertNotNull(request.getAttribute("invoked"));
// factoryControl.verify();
// managerControl.verify(); factoryControl.verify();
// factoryControl2.verify(); managerControl.verify();
// managerControl2.verify(); factoryControl2.verify();
// managerControl2.verify();
// wac.close();
// } wac.close();
}
} }