MockServletContext needs  ServletContextListener add/remove methods
-------------------------------------------------------------------

                 Key: STS-494
                 URL: http://www.stripesframework.org/jira/browse/STS-494
             Project: Stripes
          Issue Type: New Feature
          Components: Context Management
    Affects Versions: Release 1.5
            Reporter: David G. Friedman
            Assignee: Tim Fennell


I have modified my copy of the Trunk to allow for adding and removing 
ServletContextListeners to be Mock tested.  I have included my code for your 
consideration.  To  allow for easier testing I pass in new()d class instances. 
This also avoids possible typing errors by passing in Strings as in a standard 
web.xml file This also allows for simpler testing (see my example test class 
below).

>From MockServletContext.java

 private List<ServletContextListener> listeners = new 
ArrayList<ServletContextListener>();

    public void removeListeners() {
        ServletContextEvent e = new ServletContextEvent(this);

        if (listeners == null || listeners.size() == 0) {
           return;
        }

        for (ServletContextListener l : listeners) {
            l.contextDestroyed(e);
       }
        listeners.clear();
 }

    public void addListener(ServletContextListener listener) {
        ServletContextEvent e = new ServletContextEvent(this);
        listener.contextInitialized(e);
        listeners.add(listener);
    }

    public void addListeners(List<ServletContextListener> l) {
        for (ServletContextListener s : l) {
            addListener(s);
        }
    }

>From my test class:

public class ListenerT {

    private MockServletContext context = MockTestFixture.getServletContext();

    @Test
    public void addListeners() {
        List<ServletContextListener> listeners = new 
ArrayList<ServletContextListener>();
        listeners.add(new ServletContextListener() {
            public void contextDestroyed(ServletContextEvent event) {
                event.getServletContext().removeAttribute("ListenerOne");
            }

            public void contextInitialized(ServletContextEvent event) {
                event.getServletContext().setAttribute("ListenerOne", 
"ListenerOneMessage");
            }
        });
        listeners.add(new ServletContextListener() {
            public void contextDestroyed(ServletContextEvent event) {
                event.getServletContext().removeAttribute("ListenerOne");
            }

            public void contextInitialized(ServletContextEvent event) {
                event.getServletContext().setAttribute("ListenerTwo", 
"ListenerTwoMessage");
            }
        });
        context.addListeners(listeners);
        assertEquals("ListenerOneMessage", (String) 
context.getAttribute("ListenerOne"));
        assertEquals("ListenerTwoMessage", (String) 
context.getAttribute("ListenerTwo"));
    }

    @Test(dependsOnMethods = "addListeners")
    public void removeListeners() {
        context.removeListeners();
    }

}

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://www.stripesframework.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Stripes-development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/stripes-development

Reply via email to