Author: knopp
Date: Sat Apr 11 19:14:43 2009
New Revision: 764237

URL: http://svn.apache.org/viewvc?rev=764237&view=rev
Log:
Mock the stuff

Added:
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockApplication.java
   (with props)
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockPageManager.java
   (with props)
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRenderPageRequestHandlerDelegate.java
   (with props)
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequest.java
   (with props)
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequestCycle.java
   (with props)
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockSessionStore.java
   (with props)
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/response/StringResponse.java
   (with props)
    
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/test/
    
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/test/TestPageRender.java
   (with props)
Modified:
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/IPage.java
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/RequestCycle.java
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/ThreadContext.java
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
    
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/session/HttpSessionStore.java

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/IPage.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/IPage.java?rev=764237&r1=764236&r2=764237&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/IPage.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/IPage.java
 Sat Apr 11 19:14:43 2009
@@ -63,7 +63,7 @@
         *         <code>false</code> otherwise.
         */
        public boolean wasCreatedBookmarkable();
-
+       
        /**
         * Gets whether the page is stateless. Components on stateless page 
must not render any
         * stateful urls.

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/RequestCycle.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/RequestCycle.java?rev=764237&r1=764236&r2=764237&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/RequestCycle.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/RequestCycle.java
 Sat Apr 11 19:14:43 2009
@@ -167,6 +167,26 @@
                }
                return false;
        }
+       
+       /**
+        * Convenience method that processes the request and detaches the 
{...@link RequestCycle}.
+        * 
+        * @return <code>true</code> if the request resolved to a Wicket 
request, <code>false</code>
+        *         otherwise.
+        */
+       public boolean processRequestAndDetach()
+       {
+               boolean result;
+               try
+               {
+                       result = processRequest();
+               }
+               finally
+               {
+                       detach();
+               }
+               return result;
+       }
 
        private void executeExceptionRequestHandler(RequestHandler handler, int 
retryCount)
        {
@@ -306,8 +326,7 @@
                                catch (Exception e)
                                {
                                        log.error("Error detaching 
DetachCallback", e);
-                               }
-                               ;
+                               };                              
                        }
                        set(null);
                }

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/ThreadContext.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/ThreadContext.java?rev=764237&r1=764236&r2=764237&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/ThreadContext.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/ThreadContext.java
 Sat Apr 11 19:14:43 2009
@@ -74,7 +74,7 @@
                return value;
        }
        
-       public static void set(ThreadContext threadContext)
+       public static void restore(ThreadContext threadContext)
        {
                threadLocal.set(threadContext); 
        }

Added: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockApplication.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockApplication.java?rev=764237&view=auto
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockApplication.java
 (added)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockApplication.java
 Sat Apr 11 19:14:43 2009
@@ -0,0 +1,60 @@
+package org.apache.wicket.mock;
+
+import org.apache.wicket.Application;
+import org.apache.wicket.IPage;
+import org.apache.wicket.page.PageManager;
+import org.apache.wicket.request.encoder.BookmarkableEncoder;
+import org.apache.wicket.request.encoder.PageInstanceEncoder;
+import org.apache.wicket.request.encoder.ResourceReferenceEncoder;
+import org.apache.wicket.request.handler.impl.RenderPageRequestHandler;
+import 
org.apache.wicket.request.handler.impl.render.RenderPageRequestHandlerDelegate;
+import org.apache.wicket.request.request.Request;
+import org.apache.wicket.request.response.Response;
+import org.apache.wicket.session.SessionStore;
+
+public class MockApplication extends Application
+{
+
+       public MockApplication()
+       {
+       }
+       
+       @Override
+       protected void registerDefaultEncoders()
+       {
+               registerEncoder(new PageInstanceEncoder());
+               registerEncoder(new BookmarkableEncoder());
+               registerEncoder(new ResourceReferenceEncoder());
+       }
+
+       @Override
+       public Class<? extends IPage> getHomePage()
+       {
+               return null;
+       }
+       
+       @Override
+       protected MockRequestCycle newRequestCycle(Request request, Response 
response)
+       {
+               return new MockRequestCycle(request, response, 
newRequestCycleContext(request, response));
+       }
+
+       @Override
+       public RenderPageRequestHandlerDelegate 
getRenderPageRequestHandlerDelegate(
+                       RenderPageRequestHandler renderPageRequestHandler)
+       {
+               return new 
MockRenderPageRequestHandlerDelegate(renderPageRequestHandler);
+       }
+
+       @Override
+       protected PageManager newPageManager()
+       {
+               return new MockPageManager();
+       }
+       
+       @Override
+       protected SessionStore newSessionStore()
+       {
+               return new MockSessionStore();
+       }       
+}

Propchange: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockApplication.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockPageManager.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockPageManager.java?rev=764237&view=auto
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockPageManager.java
 (added)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockPageManager.java
 Sat Apr 11 19:14:43 2009
@@ -0,0 +1,81 @@
+package org.apache.wicket.mock;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.wicket.IPage;
+import org.apache.wicket.page.PageManagerContext;
+import org.apache.wicket.page.common.AbstractPageManager;
+import org.apache.wicket.page.common.RequestAdapter;
+
+public class MockPageManager extends AbstractPageManager
+{
+
+       public MockPageManager()
+       {
+       }
+
+       private Map<String, Map<Integer, IPage>> sessionMap = new 
ConcurrentHashMap<String, Map<Integer, IPage>>();
+
+       private class MockRequestAdapter extends RequestAdapter
+       {
+               public MockRequestAdapter(PageManagerContext context)
+               {
+                       super(context);
+               }
+
+               @Override
+               protected IPage getPage(int id)
+               {
+                       Map<Integer, IPage> pages = 
sessionMap.get(getSessionId());
+                       return pages != null ? pages.get(id) : null;
+               }
+
+               @Override
+               protected void newSessionCreated()
+               {
+                       
+               }
+
+               @Override
+               protected void storeTouchedPages(List<IPage> touchedPages)
+               {
+                       bind();
+                       Map<Integer, IPage> pages = 
sessionMap.get(getSessionId());
+                       if (pages == null)
+                       {
+                               pages = new HashMap<Integer, IPage>();
+                               sessionMap.put(getSessionId(), pages);
+                       }
+                       for (IPage page : touchedPages)
+                       {
+                               pages.put(page.getPageId(), page);
+                       }
+               }
+       };
+
+       @Override
+       protected RequestAdapter newRequestAdapter(PageManagerContext context)
+       {
+               return new MockRequestAdapter(context);
+       }
+
+       @Override
+       public void sessionExpired(String sessionId)
+       {
+               sessionMap.remove(sessionId);
+       }
+
+       @Override
+       public boolean supportsVersioning()
+       {
+               return false;
+       }
+
+       public void destroy()
+       {
+               sessionMap.clear();
+       }
+}

Propchange: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockPageManager.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRenderPageRequestHandlerDelegate.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRenderPageRequestHandlerDelegate.java?rev=764237&view=auto
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRenderPageRequestHandlerDelegate.java
 (added)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRenderPageRequestHandlerDelegate.java
 Sat Apr 11 19:14:43 2009
@@ -0,0 +1,21 @@
+ package org.apache.wicket.mock;
+
+import org.apache.wicket.RequestCycle;
+import org.apache.wicket.request.handler.impl.RenderPageRequestHandler;
+import 
org.apache.wicket.request.handler.impl.render.RenderPageRequestHandlerDelegate;
+
+public class MockRenderPageRequestHandlerDelegate extends 
RenderPageRequestHandlerDelegate
+{
+
+       public MockRenderPageRequestHandlerDelegate(RenderPageRequestHandler 
renderPageRequestHandler)
+       {
+               super(renderPageRequestHandler);
+       }
+
+       @Override
+       public void respond(RequestCycle requestCycle)
+       {
+               getPageProvider().getPageInstance().renderPage();
+       }
+
+}

Propchange: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRenderPageRequestHandlerDelegate.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequest.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequest.java?rev=764237&view=auto
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequest.java
 (added)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequest.java
 Sat Apr 11 19:14:43 2009
@@ -0,0 +1,20 @@
+package org.apache.wicket.mock;
+
+import org.apache.wicket.request.Url;
+import org.apache.wicket.request.request.Request;
+
+public class MockRequest extends Request
+{
+       private final Url url;
+       
+       public MockRequest(Url url)
+       {
+               this.url = url;
+       }
+
+       @Override
+       public Url getUrl()
+       {
+               return url;
+       }
+}

Propchange: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequestCycle.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequestCycle.java?rev=764237&view=auto
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequestCycle.java
 (added)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequestCycle.java
 Sat Apr 11 19:14:43 2009
@@ -0,0 +1,36 @@
+package org.apache.wicket.mock;
+
+import org.apache.wicket.RequestCycle;
+import org.apache.wicket.RequestCycleContext;
+import org.apache.wicket.request.RequestHandler;
+import org.apache.wicket.request.request.Request;
+import org.apache.wicket.request.response.Response;
+
+public class MockRequestCycle extends RequestCycle
+{
+
+       public MockRequestCycle(Request request, Response response, 
RequestCycleContext context)
+       {
+               super(request, response, context);
+       }
+
+       private RequestHandler forcedRequestHandler;
+       
+       public void forceRequestHandler(RequestHandler requestHandler)
+       {
+               this.forcedRequestHandler = requestHandler;
+       }
+       
+       @Override
+       protected RequestHandler resolveRequestHandler()
+       {               
+               if (forcedRequestHandler != null)
+               {
+                       return forcedRequestHandler;
+               }
+               else
+               {
+                       return super.resolveRequestHandler();
+               }
+       }
+}

Propchange: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockRequestCycle.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockSessionStore.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockSessionStore.java?rev=764237&view=auto
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockSessionStore.java
 (added)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockSessionStore.java
 Sat Apr 11 19:14:43 2009
@@ -0,0 +1,105 @@
+package org.apache.wicket.mock;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+import java.util.concurrent.CopyOnWriteArraySet;
+
+import org.apache.wicket.Session;
+import org.apache.wicket.request.request.Request;
+import org.apache.wicket.session.SessionStore;
+
+/**
+ * Session store that holds one session.
+ * 
+ * @author Matej Knopp
+ */
+public class MockSessionStore implements SessionStore
+{
+
+       public MockSessionStore()
+       {
+               
+       }               
+       
+       private String sessionId;       
+       private Map<String, Serializable> attributes = new HashMap<String, 
Serializable>();
+       private Session session;
+       
+       public void bind(Request request, Session newSession)
+       {
+               session = newSession;   
+       }
+
+       public void destroy()
+       {
+               cleanup();
+       }
+
+       public Serializable getAttribute(Request request, String name)
+       {
+               return attributes.get(name);
+       }
+
+       public Set<String> getAttributeNames(Request request)
+       {
+               return Collections.unmodifiableSet(attributes.keySet());
+       }
+
+       public String getSessionId(Request request, boolean create)
+       {
+               if (create && sessionId == null)
+               {
+                       sessionId = UUID.randomUUID().toString();
+               }
+               return sessionId;
+       }
+
+       private void cleanup()
+       {
+               sessionId = null;
+               attributes.clear();
+               session = null; 
+       }
+       
+       public void invalidate(Request request)
+       {
+               for (UnboundListener l : unboundListeners)
+               {
+                       l.sessionUnbound(sessionId);
+               }
+               
+               cleanup();
+       }
+
+       public Session lookup(Request request)
+       {               
+               return session;
+       }
+       
+       private Set<UnboundListener> unboundListeners = new 
CopyOnWriteArraySet<UnboundListener>();
+
+       public void registerUnboundListener(UnboundListener listener)
+       {
+               unboundListeners.add(listener);                         
+       }
+
+       public void removeAttribute(Request request, String name)
+       {
+               attributes.remove(name);
+       }
+
+       public void setAttribute(Request request, String name, Serializable 
value)
+       {               
+               attributes.put(name, value);
+       }
+
+       public void unregisterUnboundListener(UnboundListener listener)
+       {
+               unboundListeners.remove(listener);
+       }
+
+}

Propchange: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/mock/MockSessionStore.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java?rev=764237&r1=764236&r2=764237&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
 Sat Apr 11 19:14:43 2009
@@ -15,6 +15,7 @@
  * limitations under the License.
  */
 package org.apache.wicket.protocol.http;
+
 import java.io.IOException;
 import java.io.InputStream;
 
@@ -73,7 +74,6 @@
         */
        public static final String APP_FACT_PARAM = 
"applicationFactoryClassName";
 
-       
        /**
         * Checks if the request is for home page and lacks trailing slash. If 
necessary redirects to
         * URL with trailing slash.
@@ -84,19 +84,18 @@
         * @return <code>true</code> if there is a trailing slash, 
<code>false</code> if redirect was
         *         necessary.
         */
-       private boolean checkForTrailingSlash(HttpServletRequest request, 
HttpServletResponse response,
-               String filterPath)
-       {       
+       private boolean checkForTrailingSlash(HttpServletRequest request, 
HttpServletResponse response, String filterPath)
+       {
                // current URI
                String uri = Strings.stripJSessionId(request.getRequestURI());
-               
+
                // home page without trailing slash URI
-               String homePageUri = request.getContextPath() + "/" + 
filterPath;               
+               String homePageUri = request.getContextPath() + "/" + 
filterPath;
                if (homePageUri.endsWith("/"))
                {
                        homePageUri = homePageUri.substring(0, 
homePageUri.length() - 1);
                }
-               
+
                if (uri.equals(homePageUri))
                {
                        // construct redirect URL
@@ -121,30 +120,27 @@
                return true;
        }
 
-       public void doFilter(ServletRequest request, ServletResponse response, 
FilterChain chain)
-               throws IOException, ServletException
+       public void doFilter(ServletRequest request, ServletResponse response, 
FilterChain chain) throws IOException,
+                       ServletException
        {
                try
                {
-                       HttpServletRequest httpServletRequest = 
(HttpServletRequest)request;
-                       HttpServletResponse httpServletResponse = 
(HttpServletResponse)response;
-       
+                       HttpServletRequest httpServletRequest = 
(HttpServletRequest) request;
+                       HttpServletResponse httpServletResponse = 
(HttpServletResponse) response;
+
                        String filterPath = getFilterPath(httpServletRequest);
-       
+
                        webApplication.set();
-                       
+
                        if (checkForTrailingSlash(httpServletRequest, 
httpServletResponse, filterPath))
                        {
                                ServletWebRequest req = new 
ServletWebRequest(httpServletRequest, filterPath);
                                ServletWebResponse resp = new 
ServletWebResponse(httpServletResponse);
-       
-                               RequestCycle requestCycle = 
webApplication.createRequestCycle(req, resp);                               
-       
-                               if (requestCycle.processRequest())
-                               {
-                                       requestCycle.detach();
-                               }
-                               else
+
+                               RequestCycle requestCycle = 
webApplication.createRequestCycle(req, resp);
+
+                               
+                               if (!requestCycle.processRequestAndDetach())
                                {
                                        chain.doFilter(request, response);
                                }
@@ -157,7 +153,7 @@
        }
 
        private WebApplication webApplication;
-       
+
        /**
         * Creates the web application factory instance.
         * 
@@ -182,17 +178,16 @@
                        try
                        {
                                // Try to find the specified factory class
-                               final Class<?> factoryClass = 
Thread.currentThread()
-                                       .getContextClassLoader()
-                                       .loadClass(appFactoryClassName);
+                               final Class<?> factoryClass = 
Thread.currentThread().getContextClassLoader().loadClass(
+                                               appFactoryClassName);
 
                                // Instantiate the factory
-                               return 
(IWebApplicationFactory)factoryClass.newInstance();
+                               return (IWebApplicationFactory) 
factoryClass.newInstance();
                        }
                        catch (ClassCastException e)
                        {
-                               throw new WicketRuntimeException("Application 
factory class " +
-                                       appFactoryClassName + " must implement 
IWebApplicationFactory");
+                               throw new WicketRuntimeException("Application 
factory class " + appFactoryClassName
+                                               + " must implement 
IWebApplicationFactory");
                        }
                        catch (ClassNotFoundException e)
                        {
@@ -215,25 +210,25 @@
 
        public void init(FilterConfig filterConfig) throws ServletException
        {
-               this.filterConfig = filterConfig;       
+               this.filterConfig = filterConfig;
                IWebApplicationFactory factory = getApplicationFactory();
                webApplication = factory.createApplication(this);
                webApplication.setName(filterConfig.getFilterName());
                webApplication.setWicketFilter(this);
-               
+
                initFilterPath();
-               
+
                webApplication.set();
                try
                {
                        webApplication.initApplication();
-               } 
+               }
                finally
                {
                        ThreadContext.detach();
-               }                               
+               }
        }
-       
+
        public FilterConfig getFilterConfig()
        {
                return filterConfig;
@@ -255,14 +250,12 @@
                        catch (SecurityException e)
                        {
                                // Swallow this at INFO.
-                               log.info("Couldn't read web.xml to 
automatically pick up servlet/filter path: " +
-                                       e.getMessage());
+                               log.info("Couldn't read web.xml to 
automatically pick up servlet/filter path: " + e.getMessage());
                        }
                        if (filterPath == null)
                        {
-                               log.info("Unable to parse filter mapping 
web.xml for " +
-                                       filterConfig.getFilterName() + ". " + 
"Configure with init-param " +
-                                       FILTER_MAPPING_PARAM + " if it is not 
\"/*\".");
+                               log.info("Unable to parse filter mapping 
web.xml for " + filterConfig.getFilterName() + ". "
+                                               + "Configure with init-param " 
+ FILTER_MAPPING_PARAM + " if it is not \"/*\".");
                        }
                }
        };
@@ -272,114 +265,114 @@
 
        private boolean servletMode = false;
 
-//     private String getFilterPath(String filterName, InputStream is) throws 
ServletException
-//     {
-//             String prefix = servletMode ? "servlet" : "filter";
-//             String mapping = prefix + "-mapping";
-//             String name = prefix + "-name";
-//
-//             // Filter mappings look like this:
-//             //
-//             // <filter-mapping> <filter-name>WicketFilter</filter-name>
-//             // <url-pattern>/*</url-pattern> <...> <filter-mapping>
-//             try
-//             {
-//                     ArrayList<String> urlPatterns = new ArrayList<String>();
-//                     XmlPullParser parser = new XmlPullParser();
-//                     parser.parse(is);
-//
-//                     while (true)
-//                     {
-//                             XmlTag elem;
-//                             do
-//                             {
-//                                     elem = (XmlTag)parser.nextTag();
-//                             }
-//                             while (elem != null && 
(!(elem.getName().equals(mapping) && elem.isOpen())));
-//
-//                             if (elem == null)
-//                             {
-//                                     break;
-//                             }
-//
-//                             String encounteredFilterName = null, urlPattern 
= null;
-//
-//                             do
-//                             {
-//                                     elem = (XmlTag)parser.nextTag();
-//                                     if (elem.isOpen())
-//                                     {
-//                                             parser.setPositionMarker();
-//                                     }
-//                                     else if (elem.isClose() && 
elem.getName().equals(name))
-//                                     {
-//                                             encounteredFilterName = 
parser.getInputFromPositionMarker(elem.getPos())
-//                                                     .toString()
-//                                                     .trim();
-//                                     }
-//                                     else if (elem.isClose() && 
elem.getName().equals("url-pattern"))
-//                                     {
-//                                             urlPattern = 
parser.getInputFromPositionMarker(elem.getPos())
-//                                                     .toString()
-//                                                     .trim();
-//                                     }
-//                             }
-//                             while (urlPattern == null || 
encounteredFilterName == null);
-//
-//                             if (filterName.equals(encounteredFilterName))
-//                             {
-//                                     urlPatterns.add(urlPattern);
-//                             }
-//                     }
-//
-//                     String prefixUppered = 
Character.toUpperCase(prefix.charAt(0)) + prefix.substring(1);
-//
-//                     // By the time we get here, we have a list of 
urlPatterns we match
-//                     // this filter against.
-//                     // In all likelihood, we will only have one. If we have 
none, we
-//                     // have an error.
-//                     // If we have more than one, we pick the first one to 
use for any
-//                     // 302 redirects that require absolute URLs.
-//                     if (urlPatterns.size() == 0)
-//                     {
-//                             throw new IllegalArgumentException("Error 
initializing Wicket" + prefixUppered +
-//                                     " - you have no <" + mapping + "> 
element with a url-pattern that uses " +
-//                                     prefix + ": " + filterName);
-//                     }
-//                     String urlPattern = urlPatterns.get(0);
-//
-//                     // Check for leading '/' and trailing '*'.
-//                     if (!urlPattern.startsWith("/") || 
!urlPattern.endsWith("*"))
-//                     {
-//                             throw new IllegalArgumentException("<" + 
mapping + "> for Wicket" + prefixUppered +
-//                                     " \"" + filterName + "\" must start 
with '/' and end with '*'.");
-//                     }
-//
-//                     // Strip trailing '*' and keep leading '/'.
-//                     return stripWildcard(urlPattern);
-//             }
-//             catch (IOException e)
-//             {
-//                     throw new ServletException("Error finding <" + prefix + 
"> " + filterName +
-//                             " in web.xml", e);
-//             }
-//             catch (ParseException e)
-//             {
-//                     throw new ServletException("Error finding <" + prefix + 
"> " + filterName +
-//                             " in web.xml", e);
-//             }
-//             catch (ResourceStreamNotFoundException e)
-//             {
-//                     throw new ServletException("Error finding <" + prefix + 
"> " + filterName +
-//                             " in web.xml", e);
-//             }
-//     }
-       
-               private String getFilterPath(String filterName, String name, 
Node node)
+       // private String getFilterPath(String filterName, InputStream is) 
throws ServletException
+       // {
+       // String prefix = servletMode ? "servlet" : "filter";
+       // String mapping = prefix + "-mapping";
+       // String name = prefix + "-name";
+       //
+       // // Filter mappings look like this:
+       // //
+       // // <filter-mapping> <filter-name>WicketFilter</filter-name>
+       // // <url-pattern>/*</url-pattern> <...> <filter-mapping>
+       // try
+       // {
+       // ArrayList<String> urlPatterns = new ArrayList<String>();
+       // XmlPullParser parser = new XmlPullParser();
+       // parser.parse(is);
+       //
+       // while (true)
+       // {
+       // XmlTag elem;
+       // do
+       // {
+       // elem = (XmlTag)parser.nextTag();
+       // }
+       // while (elem != null && (!(elem.getName().equals(mapping) && 
elem.isOpen())));
+       //
+       // if (elem == null)
+       // {
+       // break;
+       // }
+       //
+       // String encounteredFilterName = null, urlPattern = null;
+       //
+       // do
+       // {
+       // elem = (XmlTag)parser.nextTag();
+       // if (elem.isOpen())
+       // {
+       // parser.setPositionMarker();
+       // }
+       // else if (elem.isClose() && elem.getName().equals(name))
+       // {
+       // encounteredFilterName = 
parser.getInputFromPositionMarker(elem.getPos())
+       // .toString()
+       // .trim();
+       // }
+       // else if (elem.isClose() && elem.getName().equals("url-pattern"))
+       // {
+       // urlPattern = parser.getInputFromPositionMarker(elem.getPos())
+       // .toString()
+       // .trim();
+       // }
+       // }
+       // while (urlPattern == null || encounteredFilterName == null);
+       //
+       // if (filterName.equals(encounteredFilterName))
+       // {
+       // urlPatterns.add(urlPattern);
+       // }
+       // }
+       //
+       // String prefixUppered = Character.toUpperCase(prefix.charAt(0)) + 
prefix.substring(1);
+       //
+       // // By the time we get here, we have a list of urlPatterns we match
+       // // this filter against.
+       // // In all likelihood, we will only have one. If we have none, we
+       // // have an error.
+       // // If we have more than one, we pick the first one to use for any
+       // // 302 redirects that require absolute URLs.
+       // if (urlPatterns.size() == 0)
+       // {
+       // throw new IllegalArgumentException("Error initializing Wicket" + 
prefixUppered +
+       // " - you have no <" + mapping + "> element with a url-pattern that 
uses " +
+       // prefix + ": " + filterName);
+       // }
+       // String urlPattern = urlPatterns.get(0);
+       //
+       // // Check for leading '/' and trailing '*'.
+       // if (!urlPattern.startsWith("/") || !urlPattern.endsWith("*"))
+       // {
+       // throw new IllegalArgumentException("<" + mapping + "> for Wicket" + 
prefixUppered +
+       // " \"" + filterName + "\" must start with '/' and end with '*'.");
+       // }
+       //
+       // // Strip trailing '*' and keep leading '/'.
+       // return stripWildcard(urlPattern);
+       // }
+       // catch (IOException e)
+       // {
+       // throw new ServletException("Error finding <" + prefix + "> " + 
filterName +
+       // " in web.xml", e);
+       // }
+       // catch (ParseException e)
+       // {
+       // throw new ServletException("Error finding <" + prefix + "> " + 
filterName +
+       // " in web.xml", e);
+       // }
+       // catch (ResourceStreamNotFoundException e)
+       // {
+       // throw new ServletException("Error finding <" + prefix + "> " + 
filterName +
+       // " in web.xml", e);
+       // }
+       // }
+
+       private String getFilterPath(String filterName, String name, Node node)
        {
                String foundUrlPattern = null;
                String foundFilterName = null;
-               
+
                for (int i = 0; i < node.getChildNodes().getLength(); ++i)
                {
                        Node n = node.getChildNodes().item(i);
@@ -401,7 +394,7 @@
                        return null;
                }
        }
-       
+
        private String getFilterPath(String filterName, String mapping, String 
name, NodeList nodeList)
        {
                for (int i = 0; i < nodeList.getLength(); ++i)
@@ -434,20 +427,20 @@
                {
                        DocumentBuilder builder = factory.newDocumentBuilder();
                        Document document = builder.parse(is);
-                       
+
                        String prefix = servletMode ? "servlet" : "filter";
                        String mapping = prefix + "-mapping";
                        String name = prefix + "-name";
 
                        String urlPattern = getFilterPath(filterName, mapping, 
name, document.getChildNodes());
                        return stripWildcard(urlPattern);
-               } 
-               catch (Exception e) 
+               }
+               catch (Exception e)
                {
                        throw new ServletException(e);
                }
        }
-       
+
        protected String getFilterPath(HttpServletRequest request)
        {
                if (filterPath != null)
@@ -469,8 +462,8 @@
                }
                else if (!result.startsWith("/") || !result.endsWith("/*"))
                {
-                       throw new WicketRuntimeException("Your " + 
FILTER_MAPPING_PARAM +
-                               " must start with \"/\" and end with \"/*\". It 
is: " + result);
+                       throw new WicketRuntimeException("Your " + 
FILTER_MAPPING_PARAM
+                                       + " must start with \"/\" and end with 
\"/*\". It is: " + result);
                }
                return filterPath = stripWildcard(result);
        }
@@ -480,7 +473,7 @@
         * 
         * @param result
         * @return The stripped String
-        */     
+        */
        private String stripWildcard(String result)
        {
                return result.substring(1, result.length() - 1);
@@ -495,6 +488,5 @@
                }
        }
 
-       
        private static final Logger log = 
LoggerFactory.getLogger(WicketFilter.class);
 }

Added: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/response/StringResponse.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/response/StringResponse.java?rev=764237&view=auto
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/response/StringResponse.java
 (added)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/response/StringResponse.java
 Sat Apr 11 19:14:43 2009
@@ -0,0 +1,35 @@
+package org.apache.wicket.request.response;
+
+public class StringResponse extends Response
+{
+
+       private final StringBuilder builder = new StringBuilder();
+       
+       public StringResponse()
+       {
+       }
+
+       @Override
+       public String encodeURL(String url)
+       {
+               return url;
+       }
+
+       @Override
+       public void write(CharSequence sequence)
+       {
+               builder.append(sequence);
+       }
+
+       @Override
+       public void write(byte[] array)
+       {
+               throw new UnsupportedOperationException();
+       }
+               
+       @Override
+       public String toString()
+       {
+               return builder.toString();
+       }
+}

Propchange: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/request/response/StringResponse.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/session/HttpSessionStore.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/session/HttpSessionStore.java?rev=764237&r1=764236&r2=764237&view=diff
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/session/HttpSessionStore.java
 (original)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/session/HttpSessionStore.java
 Sat Apr 11 19:14:43 2009
@@ -88,6 +88,7 @@
                        log.debug("Session unbound: " + sessionId);
                        Application application = 
Application.get(applicationKey);
                        HttpSessionStore sessionStore = (HttpSessionStore) 
application.getSessionStore();
+                       
                        for (UnboundListener listener : 
sessionStore.unboundListeners)
                        {
                                listener.sessionUnbound(sessionId);

Added: 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/test/TestPageRender.java
URL: 
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/test/TestPageRender.java?rev=764237&view=auto
==============================================================================
--- 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/test/TestPageRender.java
 (added)
+++ 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/test/TestPageRender.java
 Sat Apr 11 19:14:43 2009
@@ -0,0 +1,67 @@
+package org.apache.wicket.test;
+
+import junit.framework.TestCase;
+
+import org.apache.wicket.Page;
+import org.apache.wicket.RequestCycle;
+import org.apache.wicket.ThreadContext;
+import org.apache.wicket.markup.html.link.Link;
+import org.apache.wicket.mock.MockApplication;
+import org.apache.wicket.mock.MockRequest;
+import org.apache.wicket.request.Url;
+import org.apache.wicket.request.encoder.MountedEncoder;
+import org.apache.wicket.request.request.Request;
+import org.apache.wicket.request.response.Response;
+import org.apache.wicket.request.response.StringResponse;
+
+public class TestPageRender extends TestCase
+{
+       public static class Page1 extends Page
+       {
+               private static final long serialVersionUID = 1L;
+
+               public Page1()
+               {
+                       Link l;
+                       add(l = new Link("link")
+                       {
+                               private static final long serialVersionUID = 1L;
+
+                               public void onLinkClicked()
+                               {
+
+                               }
+                       });
+                       l.setLabel("A Link!");
+               }
+
+               @Override
+               public void renderPage()
+               {
+                       super.renderPage();
+               }
+       };
+
+       public void testRender1()
+       {
+               ThreadContext context = ThreadContext.getAndClean();
+               MockApplication app = new MockApplication();
+               app.setName("TestApplication1");
+               app.set();
+               app.initApplication();
+
+               app.registerEncoder(new MountedEncoder("first-test-page", 
Page1.class));
+
+               Request request = new MockRequest(Url.parse("first-test-page"));
+               Response response = new StringResponse();
+
+               RequestCycle cycle = app.createRequestCycle(request, response);
+
+               cycle.processRequestAndDetach();
+
+               app.destroy();
+               ThreadContext.restore(context);
+
+               System.out.println(response.toString());
+       }
+}

Propchange: 
wicket/sandbox/knopp/experimental/wicket-ng/src/test/java/org/apache/wicket/test/TestPageRender.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain


Reply via email to