KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > appfuse > webapp > action > BasePageTestCase


1 package org.appfuse.webapp.action;
2
3 import javax.faces.FactoryFinder;
4 import javax.faces.context.FacesContext;
5 import javax.faces.context.FacesContextFactory;
6 import javax.faces.lifecycle.Lifecycle;
7 import javax.faces.lifecycle.LifecycleFactory;
8 import javax.faces.webapp.FacesServlet;
9 import javax.servlet.ServletContextEvent JavaDoc;
10 import javax.servlet.ServletContextListener JavaDoc;
11
12 import junit.framework.TestCase;
13 import org.apache.myfaces.webapp.StartupServletContextListener;
14
15 import org.apache.commons.logging.Log;
16 import org.apache.commons.logging.LogFactory;
17 import org.appfuse.Constants;
18 import org.appfuse.model.User;
19 import org.appfuse.service.UserManager;
20 import org.appfuse.webapp.util.FacesUtils;
21 import org.springframework.mail.javamail.JavaMailSenderImpl;
22 import org.springframework.mock.web.MockHttpServletRequest;
23 import org.springframework.mock.web.MockHttpServletResponse;
24 import org.springframework.mock.web.MockServletConfig;
25 import org.springframework.mock.web.MockServletContext;
26 import org.springframework.util.ClassUtils;
27 import org.springframework.web.context.ContextLoader;
28 import org.springframework.web.context.ContextLoaderListener;
29 import org.springframework.web.context.WebApplicationContext;
30 import org.springframework.web.context.support.WebApplicationContextUtils;
31
32 public abstract class BasePageTestCase extends TestCase {
33     protected final transient Log log = LogFactory.getLog(getClass());
34     protected static final String JavaDoc MESSAGES = "ApplicationResources";
35     protected static FacesContext facesContext;
36     protected static MockServletConfig config;
37     protected static MockServletContext servletContext;
38     protected static WebApplicationContext ctx;
39     protected static User user;
40
41     // This static block ensures that Spring's BeanFactory and JSF's
42
// FacesContext is only loaded once for all tests. If there's something
43
// wrong with this approach - please let me know!
44
static {
45         String JavaDoc pkg = ClassUtils.classPackageAsResourcePath(Constants.class);
46         servletContext = new MockServletContext("");
47         servletContext.addInitParameter(BasePage.jstlBundleParam, MESSAGES);
48         servletContext.addInitParameter(ContextLoader.CONFIG_LOCATION_PARAM,
49                 "classpath*:/" + pkg + "/dao/applicationContext-*.xml," +
50                 "classpath*:META-INF/applicationContext-*.xml");
51
52         ServletContextListener JavaDoc contextListener = new ContextLoaderListener();
53         ServletContextEvent JavaDoc event = new ServletContextEvent JavaDoc(servletContext);
54         contextListener.contextInitialized(event);
55
56         ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
57         config = new MockServletConfig(servletContext);
58         facesContext = performFacesContextConfig();
59     }
60     
61     protected void setUp() throws Exception JavaDoc {
62         // populate the userForm and place into session
63
UserManager userMgr = (UserManager) ctx.getBean("userManager");
64         user = userMgr.getUserByUsername("tomcat");
65         
66         // change the port on the mailSender so it doesn't conflict with an
67
// existing SMTP server on localhost
68
JavaMailSenderImpl mailSender = (JavaMailSenderImpl) ctx.getBean("mailSender");
69         mailSender.setPort(2525);
70         mailSender.setHost("localhost");
71     }
72
73     protected static FacesContext performFacesContextConfig() {
74         StartupServletContextListener facesListener =
75             new StartupServletContextListener();
76         ServletContextEvent JavaDoc event = new ServletContextEvent JavaDoc(servletContext);
77         facesListener.contextInitialized(event);
78
79         LifecycleFactory lifecycleFactory =
80             (LifecycleFactory) FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
81         Lifecycle lifecycle = lifecycleFactory.getLifecycle(getLifecycleId());
82         FacesContextFactory facesCtxFactory =
83             (FacesContextFactory) FactoryFinder.getFactory(FactoryFinder.FACES_CONTEXT_FACTORY);
84         FacesContext ctx =
85             facesCtxFactory.getFacesContext(servletContext, new MockHttpServletRequest(), new MockHttpServletResponse(),
86                                             lifecycle);
87
88         return ctx;
89     }
90
91     protected static String JavaDoc getLifecycleId() {
92         String JavaDoc lifecycleId =
93             servletContext.getInitParameter(FacesServlet.LIFECYCLE_ID_ATTR);
94
95         return (lifecycleId != null) ? lifecycleId
96                                      : LifecycleFactory.DEFAULT_LIFECYCLE;
97     }
98
99     protected Object JavaDoc getManagedBean(String JavaDoc name) {
100         return FacesUtils.getManagedBean(name);
101     }
102 }
103
Popular Tags