Repository: wicket
Updated Branches:
  refs/heads/master 655763444 -> 0c38b5717


Improved MockServletContext to support servlet registration (for spec.
3.0)

Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/0c38b571
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/0c38b571
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/0c38b571

Branch: refs/heads/master
Commit: 0c38b57174369490a875dd1355cb0eb2f5808922
Parents: 6557634
Author: adelbene <[email protected]>
Authored: Fri Sep 12 16:42:58 2014 +0200
Committer: adelbene <[email protected]>
Committed: Fri Sep 12 16:42:58 2014 +0200

----------------------------------------------------------------------
 .../protocol/http/mock/MockServletContext.java  | 103 ++++++++++++-------
 1 file changed, 66 insertions(+), 37 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/0c38b571/wicket-core/src/main/java/org/apache/wicket/protocol/http/mock/MockServletContext.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/protocol/http/mock/MockServletContext.java
 
b/wicket-core/src/main/java/org/apache/wicket/protocol/http/mock/MockServletContext.java
index 70af32e..c398054 100755
--- 
a/wicket-core/src/main/java/org/apache/wicket/protocol/http/mock/MockServletContext.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/protocol/http/mock/MockServletContext.java
@@ -23,9 +23,11 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Enumeration;
 import java.util.EventListener;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
@@ -37,6 +39,7 @@ import javax.servlet.Servlet;
 import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
 import javax.servlet.ServletRegistration;
+import javax.servlet.ServletRegistration.Dynamic;
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
 import javax.servlet.SessionCookieConfig;
@@ -44,8 +47,10 @@ import javax.servlet.SessionTrackingMode;
 import javax.servlet.descriptor.JspConfigDescriptor;
 
 import org.apache.wicket.Application;
+import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.util.string.Strings;
 import org.apache.wicket.util.value.ValueMap;
+import org.mockito.Mockito;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -72,6 +77,8 @@ public class MockServletContext implements ServletContext
        private final ValueMap attributes = new ValueMap();
 
        private final ValueMap initParameters = new ValueMap();
+       
+       private final Map<String, ServletRegistration.Dynamic> 
servletRegistration = new HashMap<>();
 
        /** Map of mime types */
        private final ValueMap mimeTypes = new ValueMap();
@@ -535,37 +542,63 @@ public class MockServletContext implements ServletContext
        @Override
        public ServletRegistration.Dynamic addServlet(String servletName, 
String className)
        {
-               return null;
+               try
+               {
+                       return addServlet(servletName, 
Class.forName(className).asSubclass(Servlet.class));
+               }
+               catch (ClassNotFoundException e)
+               {
+                       throw new WicketRuntimeException(e);
+               }
        }
 
        @Override
        public ServletRegistration.Dynamic addServlet(String servletName, 
Servlet servlet)
        {
-               return null;
+               Dynamic mockRegistration = 
Mockito.mock(ServletRegistration.Dynamic.class);
+               
Mockito.when(mockRegistration.getMappings()).thenReturn(Arrays.asList(servletName));
+               
+               servletRegistration.put(servletName, mockRegistration);
+               
+               return mockRegistration;
        }
 
        @Override
        public ServletRegistration.Dynamic addServlet(String servletName, 
Class<? extends Servlet> servletClass)
        {
-               return null;
+               try
+               {
+                       return addServlet(servletName, 
servletClass.newInstance());
+               }
+               catch (InstantiationException | IllegalAccessException e)
+               {
+                       throw new WicketRuntimeException(e);
+               }
        }
 
        @Override
        public <T extends Servlet> T createServlet(Class<T> clazz) throws 
ServletException
        {
-               return null;
+               try
+               {
+                       return clazz.newInstance();
+               }
+               catch (InstantiationException | IllegalAccessException e)
+               {
+                       throw new WicketRuntimeException(e);
+               }
        }
 
        @Override
        public ServletRegistration getServletRegistration(String servletName)
        {
-               return null;
+               return servletRegistration.get(servletName);
        }
 
        @Override
        public Map<String, ? extends ServletRegistration> 
getServletRegistrations()
        {
-               return null;
+               return servletRegistration;
        }
 
        @Override
@@ -761,7 +794,33 @@ public class MockServletContext implements ServletContext
        {
                return "";
        }
-
+       
+       /**
+        * Utility method to create a mock Servlet.
+        * 
+        * @param clazz
+        *              the Servlet class we want to mock.
+        * @return
+        *              the mock for the given Servlet class.
+        */
+       public <T extends Servlet> T createMockServlet(Class<T> clazz)
+       {
+               return Mockito.mock(clazz);
+       }
+       
+       /**
+        * Utility method to add a mock Servlet.
+        * 
+        * @param servletName
+        *              the name of the servlet.
+        * @param clazz
+        *              the Servlet class we want to mock.
+        */
+       public void  addMockServlet(String servletName, Class<? extends 
Servlet> clazz)
+       {
+               addServlet(servletName, createMockServlet(clazz));
+       }
+       
        // @formatter:off
        /* TODO JAVA6,SERVLET3.0
         * servlet 3.0 stuff
@@ -781,36 +840,6 @@ public class MockServletContext implements ServletContext
                return false;
        }
 
-       public Dynamic addServlet(String servletName, String className)
-       {
-               return null;
-       }
-
-       public Dynamic addServlet(String servletName, Servlet servlet)
-       {
-               return null;
-       }
-
-       public Dynamic addServlet(String servletName, Class<? extends Servlet> 
servletClass)
-       {
-               return null;
-       }
-
-       public <T extends Servlet> T createServlet(Class<T> clazz) throws 
ServletException
-       {
-               return null;
-       }
-
-       public ServletRegistration getServletRegistration(String servletName)
-       {
-               return null;
-       }
-
-       public Map<String, ? extends ServletRegistration> 
getServletRegistrations()
-       {
-               return null;
-       }
-
        public javax.servlet.FilterRegistration.Dynamic addFilter(String 
filterName, String className)
        {
                return null;

Reply via email to