1 package tests.jfun.yan.web; 2 3 4 import javax.servlet.ServletContext ; 5 import javax.servlet.ServletContextEvent ; 6 import javax.servlet.ServletContextListener ; 7 import javax.servlet.http.HttpServlet ; 8 9 import tests.jfun.models.BankAccount; 10 11 12 import jfun.yan.Container; 13 import jfun.yan.web.YanLoader; 14 import jfun.yan.web.YanLoaderListener; 15 import jfun.yan.web.YanLoaderServlet; 16 17 import com.mockobjects.servlet.MockServletConfig; 18 import com.mockobjects.servlet.MockServletContext; 19 20 21 import junit.framework.TestCase; 22 23 public class YanLoaderTestCase extends TestCase { 24 public void testContextLoaderServletWithDefaultContext() throws Exception { 25 MockServletContext sc = new MyServletContext("."); 26 sc.setInitParameter(YanLoader.CONFIG_FILE_PARAM, 27 "tests/jfun/yan/web/yan.xml"); 28 HttpServlet servlet = new YanLoaderServlet(); 29 MockServletConfig config = new MockServletConfig(); 30 config.setServletContext(sc); 31 servlet.init(config); 32 final BankAccount acct = verifyBean(sc, "account"); 33 servlet.destroy(); 34 assertTrue("Destroyed", acct.isDestroyed()); 35 } 36 public void testYanLoaderListenerWithDefaultContext() throws Exception { 37 38 MockServletContext sc = new MyServletContext("test/yan/web"); 39 verifyListener(sc, "BankAccount"); 40 } 41 public void testYanLoaderListenerWithCustomContext()throws Exception { 42 MockServletContext sc = new MyServletContext("test/yan/web"); 43 sc.setInitParameter(YanLoader.CONFIG_FILE_PARAM, "/WEB-INF/yancontainer.xml"); 44 sc.setInitParameter(YanLoader.USE_SPRING, "true"); 45 verifyListener(sc, "ba"); 46 } 47 private void verifyListener(ServletContext sc, String beanname){ 48 ServletContextListener listener = new YanLoaderListener(); 49 ServletContextEvent event = new ServletContextEvent (sc); 50 listener.contextInitialized(event); 51 final BankAccount acct = verifyBean(sc, beanname); 52 listener.contextDestroyed(event); 53 assertTrue(acct.isDestroyed()); 54 } 55 private BankAccount verifyBean(ServletContext sc, String beanname){ 56 Container yan = (Container) 57 sc.getAttribute(YanLoader.CONTAINER_ROOT); 58 assertNotNull(yan); 59 assertNotNull(sc.getAttribute(YanLoader.LIFECYCLE_MANAGER_ROOT)); 60 final WebBankAccount acct = toWebBankAccount(yan.getInstance(beanname)); 61 assertEquals(1000, acct.getBalance()); 62 assertEquals("shark", acct.getId()); 63 assertFalse(acct.isDestroyed()); 65 assertSame(sc, acct.getServletContext()); 66 return acct; 67 } 68 private WebBankAccount toWebBankAccount(Object obj){ 69 try{ 70 return (WebBankAccount)obj; 71 } 72 catch(ClassCastException e){ 73 throw new IllegalStateException ("ClassCastException - classloader0=" 74 +WebBankAccount.class.getClassLoader() 75 +", classloader1="+obj.getClass().getClassLoader()); 76 } 77 } 78 } 79 | Popular Tags |