[Httpunit-commit] CVS: httpunit/test/com/meterware/servletunit EventAwareTestCase.java,NONE,1.1 WebX
Brought to you by:
russgold
|
From: Russell G. <rus...@us...> - 2004-02-13 03:23:07
|
Update of /cvsroot/httpunit/httpunit/test/com/meterware/servletunit In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20086/test/com/meterware/servletunit Modified Files: WebXMLString.java WebXMLTest.java Added Files: EventAwareTestCase.java Log Message: Patch #890936 - Jay Dunning added ServletContextListener support ***** Error reading new file[Errno 2] No such file or directory: 'EventAwareTestCase.java' Index: WebXMLString.java =================================================================== RCS file: /cvsroot/httpunit/httpunit/test/com/meterware/servletunit/WebXMLString.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- WebXMLString.java 19 Feb 2003 19:18:00 -0000 1.3 +++ WebXMLString.java 13 Feb 2004 03:17:46 -0000 1.4 @@ -2,7 +2,7 @@ /******************************************************************************************************************** * $Id$ * - * Copyright (c) 2001-2003, Russell Gold + * Copyright (c) 2001-2004, Russell Gold * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated * documentation files (the "Software"), to deal in the Software without restriction, including without limitation @@ -38,6 +38,7 @@ private ArrayList _servlets = new ArrayList(); private ArrayList _mappings = new ArrayList(); private ArrayList _servletNames = new ArrayList(); + private ArrayList _listeners = new ArrayList(); private String _loginConfig = ""; private Hashtable _resources = new Hashtable(); @@ -45,6 +46,7 @@ private Hashtable _contextParams = new Hashtable(); private Hashtable _loadOnStartup = new Hashtable(); + ByteArrayInputStream asInputStream() throws UnsupportedEncodingException { return new ByteArrayInputStream( asText().getBytes( "UTF-8" ) ); } @@ -58,6 +60,11 @@ result.append( " <context-param>\n <param-name>" ).append( entry.getKey() ); result.append( "</param-name>\n <param-value>" ).append( entry.getValue() ).append( "</param-value>\n </context-param>\n" ); } + for (int i = 0; i < _listeners.size(); i++) { + Class aClass = (Class) _listeners.get( i ); + result.append( " <listener><listener-class>" ).append( aClass.getName() ); + result.append( "</listener-class></listener>\n" ); + } for (int i = _servlets.size() - 1; i >= 0; i--) { Object name = _servletNames.get( i ); result.append( " <servlet>\n <servlet-name>" ).append( name ).append( "</servlet-name>\n" ); @@ -169,6 +176,11 @@ } + void addContextListener( Class aClass ) { + _listeners.add( aClass ); + } + + private WebResourceSpec getWebResource( String resourceName ) { WebResourceSpec result = (WebResourceSpec) _resources.get( resourceName ); if (result == null) { Index: WebXMLTest.java =================================================================== RCS file: /cvsroot/httpunit/httpunit/test/com/meterware/servletunit/WebXMLTest.java,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- WebXMLTest.java 17 Jun 2003 11:17:45 -0000 1.16 +++ WebXMLTest.java 13 Feb 2004 03:17:46 -0000 1.17 @@ -2,7 +2,7 @@ /******************************************************************************************************************** * $Id$ * -* Copyright (c) 2001-2003, Russell Gold +* Copyright (c) 2001-2004, Russell Gold * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated * documentation files (the "Software"), to deal in the Software without restriction, including without limitation @@ -30,8 +30,7 @@ import java.util.List; import java.util.Arrays; -import javax.servlet.ServletException; -import javax.servlet.ServletConfig; +import javax.servlet.*; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -41,11 +40,10 @@ import org.w3c.dom.Document; import org.xml.sax.SAXException; -import junit.framework.TestCase; import junit.framework.TestSuite; -public class WebXMLTest extends TestCase { +public class WebXMLTest extends EventAwareTestCase { public static void main(String args[]) { junit.textui.TestRunner.run( suite() ); @@ -152,6 +150,36 @@ } + public void testContextListeners() throws Exception { + WebXMLString wxs = new WebXMLString(); + wxs.addServlet( "/SimpleServlet", SimpleGetServlet.class ); + EventVerifier verifyContext = new ServletContextEventVerifier(); + + wxs.addContextListener( ListenerClass1.class ); + wxs.addContextListener( ListenerClass2.class ); + + clearEvents(); + expectEvent( "startup", ListenerClass1.class, verifyContext ); + expectEvent( "startup", ListenerClass2.class, verifyContext ); + ServletRunner sr = new ServletRunner( toInputStream( wxs.asText() ) ); + verifyEvents(); + + clearEvents(); + expectEvent( "shutdown", ListenerClass2.class, verifyContext ); + expectEvent( "shutdown", ListenerClass1.class, verifyContext ); + sr.shutDown(); + verifyEvents(); + } + + + static class ServletContextEventVerifier implements EventVerifier { + + public void verifyEvent( String eventLabel, Object eventObject ) { + if (!(eventObject instanceof ServletContextEvent)) fail( "Event " + eventLabel + " did not include a servlet context event" ); + } + } + + private Document newDocument( String contents ) throws UnsupportedEncodingException, SAXException, IOException, ParserConfigurationException { DocumentBuilderFactory fac = DocumentBuilderFactory.newInstance(); return fac.newDocumentBuilder().parse( toInputStream( contents ) ); } @@ -400,6 +428,18 @@ static class Servlet4 extends SimpleGetServlet {} static class Servlet5 extends SimpleGetServlet {} + + static class EventDispatcher { + + public void contextInitialized( ServletContextEvent event ) { sendEvent( "startup", this, event ); } + + public void contextDestroyed( ServletContextEvent event ) { sendEvent( "shutdown", this, event ); } + } + + + static class ListenerClass1 extends EventDispatcher implements ServletContextListener {} + static class ListenerClass2 extends EventDispatcher implements ServletContextListener {} + } |