Added: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockServletContext.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockServletContext.java?rev=917331&view=auto
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockServletContext.java
 (added)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockServletContext.java
 Mon Mar  1 00:01:57 2010
@@ -0,0 +1,566 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.protocol.http.mock;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.servlet.RequestDispatcher;
+import javax.servlet.Servlet;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+
+import org.apache.wicket.Application;
+import org.apache.wicket.util.value.ValueMap;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * Mock implementation of the servlet context for testing purposes. This 
implementation supports all
+ * of the standard context methods except that request dispatching just 
indicates what is being
+ * dispatched to, rather than doing the actual dispatch.
+ * <p>
+ * The context can be configured with a path parameter that should point to an 
absolute directory
+ * location that represents the place where the contents of the WAR bundle are 
located. Setting this
+ * value allows all of the resource location functionality to work as in a 
fully functioning web
+ * application. This value is not set then not resource location functionality 
will work and instead
+ * null will always be returned.
+ * 
+ * @author Chris Turner
+ */
+public class MockServletContext implements ServletContext
+{
+       private static final Logger log = 
LoggerFactory.getLogger(MockServletContext.class);
+
+       private final Application application;
+
+       private final ValueMap attributes = new ValueMap();
+
+       private final ValueMap initParameters = new ValueMap();
+
+       /** Map of mime types */
+       private final ValueMap mimeTypes = new ValueMap();
+
+       private File webappRoot;
+
+       /**
+        * Create the mock object. As part of the creation, the context sets 
the root directory where
+        * web application content is stored. This must be an ABSOLUTE 
directory relative to where the
+        * tests are being executed. For example: 
<code>System.getProperty("user.dir") +
+        * "/src/webapp"</code>
+        * 
+        * @param application
+        *            The application that this context is for
+        * @param path
+        *            The path to the root of the web application
+        */
+       public MockServletContext(final Application application, final String 
path)
+       {
+               this.application = application;
+
+               webappRoot = null;
+               if (path != null)
+               {
+                       webappRoot = new File(path);
+                       if (!webappRoot.exists() || !webappRoot.isDirectory())
+                       {
+                               log.warn("WARNING: The webapp root directory is 
invalid: " + path);
+                               webappRoot = null;
+                       }
+               }
+
+               // assume we're running in maven or an eclipse project created 
by maven,
+               // so the sessions directory will be created inside the target 
directory,
+               // and will be cleaned up with a mvn clean
+
+               File file = new File("target/work/");
+               file.mkdirs();
+               attributes.put("javax.servlet.context.tempdir", file);
+
+               mimeTypes.put("html", "text/html");
+               mimeTypes.put("htm", "text/html");
+               mimeTypes.put("css", "text/css");
+               mimeTypes.put("xml", "text/xml");
+               mimeTypes.put("js", "text/plain");
+               mimeTypes.put("gif", "image/gif");
+               mimeTypes.put("jpg", "image/jpeg");
+               mimeTypes.put("png", "image/png");
+       }
+
+       /**
+        * Add an init parameter.
+        * 
+        * @param name
+        *            The parameter name
+        * @param value
+        *            The parameter value
+        */
+       public void addInitParameter(final String name, final String value)
+       {
+               initParameters.put(name, value);
+       }
+
+       // Configuration methods
+
+       /**
+        * Add a new recognized mime type.
+        * 
+        * @param fileExtension
+        *            The file extension (e.g. "jpg")
+        * @param mimeType
+        *            The mime type (e.g. "image/jpeg")
+        */
+       public void addMimeType(final String fileExtension, final String 
mimeType)
+       {
+               mimeTypes.put(fileExtension, mimeType);
+       }
+
+       /**
+        * Get an attribute with the given name.
+        * 
+        * @param name
+        *            The attribute name
+        * @return The value, or null
+        */
+       public Object getAttribute(final String name)
+       {
+               return attributes.get(name);
+       }
+
+       /**
+        * Get all of the attribute names.
+        * 
+        * @return The attribute names
+        */
+       public Enumeration<String> getAttributeNames()
+       {
+               return Collections.enumeration(attributes.keySet());
+       }
+
+       // ServletContext interface methods
+
+       /**
+        * Get the context for the given URL path
+        * 
+        * @param name
+        *            The url path
+        * @return Always returns this
+        */
+       public ServletContext getContext(String name)
+       {
+               return this;
+       }
+
+       /**
+        * Get the init parameter with the given name.
+        * 
+        * @param name
+        *            The name
+        * @return The parameter, or null if no such parameter
+        */
+       public String getInitParameter(final String name)
+       {
+               return initParameters.getString(name);
+       }
+
+       /**
+        * Get the name of all of the init parameters.
+        * 
+        * @return The init parameter names
+        */
+       public Enumeration<String> getInitParameterNames()
+       {
+               return Collections.enumeration(initParameters.keySet());
+       }
+
+       /**
+        * @return Always 2
+        */
+       public int getMajorVersion()
+       {
+               return 2;
+       }
+
+       /**
+        * Get the mime type for the given file. Uses a hardcoded map of mime 
types set at
+        * Initialization time.
+        * 
+        * @param name
+        *            The name to get the mime type for
+        * @return The mime type
+        */
+       public String getMimeType(final String name)
+       {
+               int index = name.lastIndexOf('.');
+               if (index == -1 || index == (name.length() - 1))
+               {
+                       return null;
+               }
+               else
+               {
+                       return mimeTypes.getString(name.substring(index + 1));
+               }
+       }
+
+       /**
+        * @return Always 3
+        */
+       public int getMinorVersion()
+       {
+               return 3;
+       }
+
+       /**
+        * Wicket does not use the RequestDispatcher, so this implementation 
just returns a dummy value.
+        * 
+        * @param name
+        *            The name of the servlet or JSP
+        * @return The dispatcher
+        */
+       public RequestDispatcher getNamedDispatcher(final String name)
+       {
+               return getRequestDispatcher(name);
+       }
+
+       /**
+        * Get the real file path of the given resource name.
+        * 
+        * @param name
+        *            The name
+        * @return The real path or null
+        */
+       public String getRealPath(String name)
+       {
+               if (webappRoot == null)
+               {
+                       return null;
+               }
+
+               if (name.startsWith("/"))
+               {
+                       name = name.substring(1);
+               }
+
+               File f = new File(webappRoot, name);
+               if (!f.exists())
+               {
+                       return null;
+               }
+               else
+               {
+                       return f.getPath();
+               }
+       }
+
+       /**
+        * Wicket does not use the RequestDispatcher, so this implementation 
just returns a dummy value.
+        * 
+        * @param name
+        *            The name of the resource to get the dispatcher for
+        * @return The dispatcher
+        */
+       public RequestDispatcher getRequestDispatcher(final String name)
+       {
+               return new RequestDispatcher()
+               {
+                       public void forward(ServletRequest servletRequest, 
ServletResponse servletResponse)
+                               throws IOException
+                       {
+                               servletResponse.getWriter().write("FORWARD TO 
RESOURCE: " + name);
+                       }
+
+                       public void include(ServletRequest servletRequest, 
ServletResponse servletResponse)
+                               throws IOException
+                       {
+                               servletResponse.getWriter().write("INCLUDE OF 
RESOURCE: " + name);
+                       }
+               };
+       }
+
+       /**
+        * Get the URL for a particular resource that is relative to the web 
app root directory.
+        * 
+        * @param name
+        *            The name of the resource to get
+        * @return The resource, or null if resource not found
+        * @throws MalformedURLException
+        *             If the URL is invalid
+        */
+       public URL getResource(String name) throws MalformedURLException
+       {
+               if (webappRoot == null)
+               {
+                       return null;
+               }
+
+               if (name.startsWith("/"))
+               {
+                       name = name.substring(1);
+               }
+
+               File f = new File(webappRoot, name);
+               if (!f.exists())
+               {
+                       return null;
+               }
+               else
+               {
+                       return f.toURI().toURL();
+               }
+       }
+
+       /**
+        * Get an input stream for a particular resource that is relative to 
the web app root directory.
+        * 
+        * @param name
+        *            The name of the resource to get
+        * @return The input stream for the resource, or null of resource is 
not found
+        */
+       public InputStream getResourceAsStream(String name)
+       {
+               if (webappRoot == null)
+               {
+                       return null;
+               }
+
+               if (name.startsWith("/"))
+               {
+                       name = name.substring(1);
+               }
+
+               File f = new File(webappRoot, name);
+               if (!f.exists())
+               {
+                       return null;
+               }
+               else
+               {
+                       try
+                       {
+                               return new FileInputStream(f);
+                       }
+                       catch (FileNotFoundException e)
+                       {
+                               e.printStackTrace();
+                               return null;
+                       }
+               }
+       }
+
+       /**
+        * Get the resource paths starting from the web app root directory and 
then relative to the the
+        * given name.
+        * 
+        * @param name
+        *            The starting name
+        * @return The set of resource paths at this location
+        */
+       public Set<String> getResourcePaths(String name)
+       {
+               if (webappRoot == null)
+               {
+                       return new HashSet<String>();
+               }
+
+               if (name.startsWith("/"))
+               {
+                       name = name.substring(1);
+               }
+               if (name.endsWith("/"))
+               {
+                       name = name.substring(0, name.length() - 1);
+               }
+               String[] elements = null;
+               if (name.trim().length() == 0)
+               {
+                       elements = new String[0];
+               }
+               else
+               {
+                       elements = name.split("/");
+               }
+
+               File current = webappRoot;
+               for (int i = 0; i < elements.length; i++)
+               {
+                       File[] files = current.listFiles();
+                       boolean match = false;
+                       for (int f = 0; f < files.length; f++)
+                       {
+                               if (files[f].getName().equals(elements[i]) && 
files[f].isDirectory())
+                               {
+                                       current = files[f];
+                                       match = true;
+                                       break;
+                               }
+                       }
+                       if (!match)
+                       {
+                               return null;
+                       }
+               }
+
+               File[] files = current.listFiles();
+               Set<String> result = new HashSet<String>();
+               int stripLength = webappRoot.getPath().length();
+               for (int f = 0; f < files.length; f++)
+               {
+                       String s = 
files[f].getPath().substring(stripLength).replace('\\', '/');
+                       if (files[f].isDirectory())
+                       {
+                               s = s + "/";
+                       }
+                       result.add(s);
+               }
+               return result;
+       }
+
+       /**
+        * Get the server info.
+        * 
+        * @return The server info
+        */
+       public String getServerInfo()
+       {
+               return "Wicket Mock Test Environment v1.0";
+       }
+
+       /**
+        * NOT USED - Servlet Spec requires that this always returns null.
+        * 
+        * @param name
+        *            Not used
+        * @return null
+        * @throws ServletException
+        *             Not used
+        */
+       public Servlet getServlet(String name) throws ServletException
+       {
+               return null;
+       }
+
+       /**
+        * Return the name of the servlet context.
+        * 
+        * @return The name
+        */
+       public String getServletContextName()
+       {
+               return application.getName();
+       }
+
+       /**
+        * NOT USED - Servlet spec requires that this always returns null.
+        * 
+        * @return null
+        */
+       public Enumeration<String> getServletNames()
+       {
+               return null;
+       }
+
+       /**
+        * NOT USED - Servlet spec requires that this always returns null.
+        * 
+        * @return null
+        */
+       public Enumeration<Servlet> getServlets()
+       {
+               return null;
+       }
+
+       /**
+        * As part of testing we always log to the console.
+        * 
+        * @param e
+        *            The exception to log
+        * @param msg
+        *            The message to log
+        */
+       public void log(Exception e, String msg)
+       {
+               log.error(msg, e);
+       }
+
+       /**
+        * As part of testing we always log to the console.
+        * 
+        * @param msg
+        *            The message to log
+        */
+       public void log(String msg)
+       {
+               log.info(msg);
+       }
+
+       /**
+        * As part of testing we always log to the console.
+        * 
+        * @param msg
+        *            The message to log
+        * @param cause
+        *            The cause exception
+        */
+       public void log(String msg, Throwable cause)
+       {
+               log.error(msg, cause);
+       }
+
+       /**
+        * Remove an attribute with the given name.
+        * 
+        * @param name
+        *            The name
+        */
+       public void removeAttribute(final String name)
+       {
+               attributes.remove(name);
+       }
+
+       /**
+        * Set an attribute.
+        * 
+        * @param name
+        *            The name of the attribute
+        * @param o
+        *            The value
+        */
+       public void setAttribute(final String name, final Object o)
+       {
+               attributes.put(name, o);
+       }
+
+       /**
+        * @return context path
+        */
+       public String getContextPath()
+       {
+               return "";
+       }
+}

Propchange: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockServletContext.java
------------------------------------------------------------------------------
    svn:executable = *

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/settings/Settings.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/settings/Settings.java?rev=917331&r1=917330&r2=917331&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/settings/Settings.java 
(original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/settings/Settings.java 
Mon Mar  1 00:01:57 2010
@@ -314,7 +314,7 @@
        private Bytes defaultMaximumUploadSize = Bytes.MAX;
 
        /** escape string for '..' within resource keys */
-       private CharSequence parentFolderPlaceholder = null;
+       private CharSequence parentFolderPlaceholder = "";
 
        /** Default cache duration */
        private int defaultCacheDuration = 3600;

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/cookies/CookieUtils.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/cookies/CookieUtils.java?rev=917331&r1=917330&r2=917331&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/cookies/CookieUtils.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/cookies/CookieUtils.java
 Mon Mar  1 00:01:57 2010
@@ -21,6 +21,7 @@
 
 import org.apache.wicket.markup.html.form.FormComponent;
 import org.apache.wicket.ng.request.cycle.RequestCycle;
+import org.apache.wicket.protocol.http.WebRequest;
 import org.apache.wicket.protocol.http.WebResponse;
 import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
 import org.apache.wicket.util.string.Strings;
@@ -261,12 +262,12 @@
                                if (cookie != null)
                                {
                                        log.debug("Found Cookie with name=" + 
key + " and request URI=" +
-                                               
getWebRequest().getHttpServletRequest().getRequestURI());
+                                               
getWebRequest().getUrl().toString());
                                }
                                else
                                {
                                        log.debug("Unable to find Cookie with 
name=" + key + " and request URI=" +
-                                               
getWebRequest().getHttpServletRequest().getRequestURI());
+                                               
getWebRequest().getUrl().toString());
                                }
                        }
 
@@ -301,7 +302,7 @@
                if (log.isDebugEnabled())
                {
                        log.debug("Cookie saved: " + 
cookieToDebugString(cookie) + "; request URI=" +
-                               
getWebRequest().getHttpServletRequest().getRequestURI());
+                               getWebRequest().getUrl().toString());
                }
 
                return cookie;
@@ -327,7 +328,7 @@
                        cookie.setDomain(domain);
                }
 
-               HttpServletRequest request = 
getWebRequest().getHttpServletRequest();
+               HttpServletRequest request = 
((ServletWebRequest)getWebRequest()).getHttpServletRequest();
                String path = request.getContextPath() + 
request.getServletPath();
                if (Strings.isEmpty(path))
                {
@@ -343,9 +344,9 @@
         * 
         * @return WebRequest related to the RequestCycle
         */
-       private ServletWebRequest getWebRequest()
+       private WebRequest getWebRequest()
        {
-               return (ServletWebRequest)RequestCycle.get().getRequest();
+               return (WebRequest)RequestCycle.get().getRequest();
        }
 
        /**

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/crypt/KeyInSessionSunJceCryptFactory.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/crypt/KeyInSessionSunJceCryptFactory.java?rev=917331&r1=917330&r2=917331&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/crypt/KeyInSessionSunJceCryptFactory.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/crypt/KeyInSessionSunJceCryptFactory.java
 Mon Mar  1 00:01:57 2010
@@ -18,12 +18,9 @@
 
 import java.util.UUID;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-
-import org.apache.wicket.Application;
+import org.apache.wicket.MetaDataKey;
+import org.apache.wicket.Session;
 import org.apache.wicket.ng.request.cycle.RequestCycle;
-import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
 
 /**
  * Crypt factory that produces {...@link SunJceCrypt} instances based on http 
session-specific
@@ -36,22 +33,28 @@
  */
 public class KeyInSessionSunJceCryptFactory implements ICryptFactory
 {
+       /** metadata-key used to store crypto-key in session metadata */
+       private static MetaDataKey<String> KEY = new MetaDataKey<String>()
+       {
+               private static final long serialVersionUID = 1L;
+       };
+
+
        public ICrypt newCrypt()
        {
                RequestCycle rc = RequestCycle.get();
-               HttpServletRequest request = 
((ServletWebRequest)rc.getRequest()).getHttpServletRequest();
 
-               // get http session, create if necessary
-               HttpSession session = request.getSession(true);
+               Session session = Session.get();
+               session.bind();
+
 
                // retrieve or generate encryption key from session
-               final String keyAttr = Application.get().getApplicationKey() + 
"." + getClass().getName();
-               String key = (String)session.getAttribute(keyAttr);
+               String key = session.getMetaData(KEY);
                if (key == null)
                {
                        // generate new key
                        key = session.getId() + "." + 
UUID.randomUUID().toString();
-                       session.setAttribute(keyAttr, key);
+                       session.setMetaData(KEY, key);
                }
 
                // build the crypt based on session key

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java?rev=917331&r1=917330&r2=917331&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
 Mon Mar  1 00:01:57 2010
@@ -29,6 +29,7 @@
 
 import org.apache.wicket.Application;
 import org.apache.wicket.Component;
+import org.apache.wicket.IPageManagerProvider;
 import org.apache.wicket.IPageRendererProvider;
 import org.apache.wicket.IRequestCycleProvider;
 import org.apache.wicket.IRequestHandler;
@@ -64,6 +65,8 @@
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.ng.ThreadContext;
 import org.apache.wicket.ng.mock.MockApplication;
+import org.apache.wicket.ng.mock.MockPageManager;
+import org.apache.wicket.ng.mock.MockSessionStore;
 import org.apache.wicket.ng.mock.MockWebRequest;
 import org.apache.wicket.ng.mock.MockWebResponse;
 import org.apache.wicket.ng.request.IRequestMapper;
@@ -79,9 +82,13 @@
 import 
org.apache.wicket.ng.request.handler.impl.ListenerInterfaceRequestHandler;
 import org.apache.wicket.ng.request.handler.impl.RenderPageRequestHandler;
 import org.apache.wicket.ng.request.handler.impl.render.PageRenderer;
+import org.apache.wicket.pageStore.IPageManager;
+import org.apache.wicket.pageStore.IPageManagerContext;
 import org.apache.wicket.protocol.http.MockServletContext;
 import org.apache.wicket.protocol.http.WebApplication;
+import org.apache.wicket.session.ISessionStore;
 import org.apache.wicket.settings.IRequestCycleSettings.RenderStrategy;
+import org.apache.wicket.util.IProvider;
 import org.apache.wicket.util.diff.DiffUtil;
 import org.apache.wicket.util.lang.Classes;
 import org.apache.wicket.util.string.Strings;
@@ -239,6 +246,8 @@
                        application.getPageRendererProvider()));
                application.setRequestCycleProvider(new 
TestRequestCycleProvider(
                        application.getRequestCycleProvider()));
+               application.setSessionStoreProvider(new 
TestSessionStoreProvider());
+               application.setPageManagerProvider(new 
TestPageManagerProvider());
 
                // prepare session
                setupNextRequestCycle();
@@ -249,16 +258,27 @@
                request = new MockWebRequest(Url.parse("/"));
                response = new MockWebResponse();
 
-               if (session == null)
-               {
-                       session = application.newSession(request, response);
-                       application.getSessionStore().bind(null, session);
-                       ThreadContext.setSession(session);
-               }
 
                requestCycle = application.createRequestCycle(request, 
response);
                requestCycle.setCleanupFeedbackMessagesOnDetach(false);
                ThreadContext.setRequestCycle(requestCycle);
+
+
+               if (session == null)
+               {
+                       createNewSession();
+               }
+       }
+
+
+       /**
+        * 
+        */
+       private void createNewSession()
+       {
+               session = Session.get();
+               application.getSessionStore().bind(null, session);
+               ThreadContext.setSession(session);
        }
 
        public MockWebRequest getRequest()
@@ -366,7 +386,7 @@
 
                forcedHandler = forcedRequestHandler;
 
-               if (!redirect && getRequest().getHeader("Wicket-Ajax-BaseURL") 
== null)
+               if (!redirect && getRequest().getHeader("Wicket-Ajax") == null)
                {
                        lastRenderedPage = null;
                }
@@ -549,6 +569,10 @@
                return url;
        }
 
+       public String urlFor(Link link)
+       {
+               return link.urlFor(ILinkListener.INTERFACE).toString();
+       }
 
        /**
         * Renders a <code>Page</code> defined in <code>TestPageSource</code>. 
This is usually used when
@@ -628,6 +652,24 @@
                transform(url);
                request.setUrl(url);
                request.setHeader("Wicket-Ajax-BaseURL", url.toString());
+               request.setHeader("Wicket-Ajax", "Wicket-Ajax");
+               processRequest();
+       }
+
+       public Url urlFor(AjaxLink link)
+       {
+               AbstractAjaxBehavior behavior = 
WicketTesterHelper.findAjaxEventBehavior(link, "onclick");
+               Url url = Url.parse(behavior.getCallbackUrl().toString());
+               transform(url);
+               return url;
+       }
+
+       public void executeAjaxUrl(Url url)
+       {
+               transform(url);
+               request.setUrl(url);
+               request.setHeader("Wicket-Ajax-BaseURL", url.toString());
+               request.setHeader("Wicket-Ajax", "Wicket-Ajax");
                processRequest();
        }
 
@@ -1507,6 +1549,7 @@
                Url url = Url.parse(behavior.getCallbackUrl().toString());
                transform(url);
                request.setHeader("Wicket-Ajax-BaseURL", url.toString());
+               request.setHeader("Wicket-Ajax", "Wicket-Ajax");
                processRequest(request.requestWithUrl(url), null);
        }
 
@@ -1632,6 +1675,14 @@
                this.exposeExceptions = exposeExceptions;
        }
 
+       public void executeUrl(String _url)
+       {
+               Url url = Url.parse(_url);
+               transform(url);
+               getRequest().setUrl(url);
+               processRequest();
+       }
+
 
        private class LastPageRecordingPageRendererProvider implements 
IPageRendererProvider
        {
@@ -1733,4 +1784,31 @@
 
        }
 
+       private class TestSessionStore extends MockSessionStore
+       {
+               @Override
+               public void invalidate(Request request)
+               {
+                       super.invalidate(request);
+                       createNewSession();
+               }
+       }
+       private class TestSessionStoreProvider implements 
IProvider<ISessionStore>
+       {
+               public ISessionStore get()
+               {
+                       return new TestSessionStore();
+               }
+       }
+
+       private class TestPageManagerProvider implements IPageManagerProvider
+       {
+
+               public IPageManager get(IPageManagerContext context)
+               {
+                       return new MockPageManager(context);
+               }
+
+       }
+
 }

Modified: 
wicket/trunk/wicket/src/test/java/org/apache/wicket/ParentResourceEscapePathTest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/ParentResourceEscapePathTest.java?rev=917331&r1=917330&r2=917331&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/test/java/org/apache/wicket/ParentResourceEscapePathTest.java
 (original)
+++ 
wicket/trunk/wicket/src/test/java/org/apache/wicket/ParentResourceEscapePathTest.java
 Mon Mar  1 00:01:57 2010
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket;
 
+import java.io.InputStream;
+
 import org.apache.wicket.ng.request.Url;
 import org.apache.wicket.ng.resource.PackageResourceReference;
 import org.apache.wicket.ng.resource.ResourceReference;
@@ -38,10 +40,12 @@
                
tester.assertRenderedPage(ParentResourceEscapePathTestPage.class);
                tester.assertNoErrorMessage();
 
+               System.out.println(tester.getLastResponseAsString());
+
                String html = tester.getLastResponseAsString();
                assertContains(html, "<html><head><wicket:link><script ");
                assertContains(html, " type=\"text/javascript\"");
-               assertContains(html, "src=\"" + expectedResourceUrl() + "\"");
+               assertContains(html, expectedResourceUrl() + "\"");
                assertContains(html, 
"\"></script></wicket:link></head></html>");
        }
 
@@ -64,7 +68,7 @@
                final ResourceReference ref = new PackageResourceReference(
                        ParentResourceEscapePathTestPage.class, 
"../../../ParentResourceTest.js");
 
-               assertEquals(expectedResourceUrl(), 
tester.getLastRequestCycle().urlFor(ref));
+               assertContains(tester.getRequestCycle().urlFor(ref).toString(), 
expectedResourceUrl());
        }
 
        public void testRequestHandlingOfResourceUrlWithEscapeStringInside()
@@ -78,13 +82,15 @@
 
        private void requestHandlingOfResourceUrlWithEscapeStringInside()
        {
-               tester.getRequest()
-                       .setUrl(
-                               
Url.parse("wicket/resource/WicketTester$DummyWebApplication/WicketTester$DummyWebApplication/"
 +
-                                       expectedResourceUrl()));
+               tester.getRequest().setUrl(Url.parse("wicket/" + 
expectedResourceUrl()));
+               InputStream i = 
getClass().getClassLoader().getResourceAsStream("ParentResourceTest.js");
+               i = 
getClass().getClassLoader().getResourceAsStream("/ParentResourceTest.js");
+
                tester.processRequest();
                tester.assertNoErrorMessage();
-               assertEquals("// ParentResourceTest.js", 
tester.getLastResponseAsString());
+
+               String res = new 
String(tester.getLastResponse().getBinaryResponse());
+               assertEquals("// ParentResourceTest.js", res);
        }
 
        private String expectedResourceUrl()
@@ -94,7 +100,7 @@
                        .getParentFolderPlaceholder();
 
                final StringBuilder url = new StringBuilder();
-               
url.append("../wicket/resource/org.apache.wicket.ParentResourceEscapePathTestPage/");
+               
url.append("resource/org.apache.wicket.ParentResourceEscapePathTestPage/");
 
                for (int i = 0; i < 3; i++)
                {

Modified: 
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/image/ImageTest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/image/ImageTest.java?rev=917331&r1=917330&r2=917331&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/image/ImageTest.java
 (original)
+++ 
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/image/ImageTest.java
 Mon Mar  1 00:01:57 2010
@@ -58,6 +58,6 @@
        {
                
tester.getApplication().getResourceSettings().setParentFolderPlaceholder("$up$");
                tester.startPage(Home.class);
-               
tester.assertContains("resource/org.apache.wicket.markup.html.image.Home/[$]up[$]/border/test.png\"");
+               
tester.assertContains("resource/org.apache.wicket.markup.html.image.Home/[$]up[$]/[$]up[$]/border/logo.gif\"");
        }
 }

Modified: 
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/link/submitLink/FormPage.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/link/submitLink/FormPage.java?rev=917331&r1=917330&r2=917331&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/link/submitLink/FormPage.java
 (original)
+++ 
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/link/submitLink/FormPage.java
 Mon Mar  1 00:01:57 2010
@@ -27,7 +27,7 @@
  */
 public class FormPage extends WebPage
 {
-       private final int somevalue = 1;
+       private final Integer somevalue = 1;
 
        private boolean formSubmitted;
 

Modified: 
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/resolver/TestHomePage.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/resolver/TestHomePage.java?rev=917331&r1=917330&r2=917331&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/resolver/TestHomePage.java
 (original)
+++ 
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/resolver/TestHomePage.java
 Mon Mar  1 00:01:57 2010
@@ -39,7 +39,7 @@
                tester.assertLabel("message",
                        "If you see this message wicket is properly configured 
and running");
 
-               String href = 
"href=\"resources/org.apache.wicket.markup.resolver.HomePage_1/main.css\"";
+               String href = 
"href=\"../resource/org.apache.wicket.markup.resolver.HomePage_1/main.css\"";
 
                String doc = tester.getLastResponseAsString();
                tester.assertContains(href);
@@ -58,7 +58,7 @@
                // start and render the test page
                tester.startPage(HomePage_2.class);
 
-               String href = 
"href=\"resources/org.apache.wicket.markup.resolver.HomePage_2/main.css\"";
+               String href = 
"href=\"../resource/org.apache.wicket.markup.resolver.HomePage_2/main.css\"";
 
                String doc = tester.getLastResponseAsString();
                tester.assertContains(href);

Modified: 
wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/TestExpirePage.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/TestExpirePage.java?rev=917331&r1=917330&r2=917331&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/TestExpirePage.java
 (original)
+++ 
wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/TestExpirePage.java
 Mon Mar  1 00:01:57 2010
@@ -16,9 +16,8 @@
  */
 package org.apache.wicket.protocol.http;
 
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.markup.html.AjaxLink;
 import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.link.Link;
 
 /**
  * Test page for session expiry (/ page not found).
@@ -33,14 +32,13 @@
        public TestExpirePage()
        {
 
-               add(new AjaxLink("link")
+               add(new Link("link")
                {
                        private static final long serialVersionUID = 1L;
 
                        @Override
-                       public void onClick(AjaxRequestTarget target)
+                       public void onClick()
                        {
-                               target.addComponent(this);
                        }
                });
        }

Modified: 
wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/WebResponseExceptionsTest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/WebResponseExceptionsTest.java?rev=917331&r1=917330&r2=917331&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/WebResponseExceptionsTest.java
 (original)
+++ 
wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/WebResponseExceptionsTest.java
 Mon Mar  1 00:01:57 2010
@@ -18,6 +18,8 @@
 
 import org.apache.wicket.WicketTestCase;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.markup.html.link.Link;
+import org.apache.wicket.markup.html.pages.PageExpiredErrorPage;
 import org.apache.wicket.settings.IExceptionSettings;
 import org.apache.wicket.settings.IRequestCycleSettings;
 
@@ -60,30 +62,16 @@
                String document = tester.getLastResponseAsString();
                assertTrue(document.contains("Click me to get an error"));
 
-               AjaxLink link = 
(AjaxLink)tester.getComponentFromLastRenderedPage("link");
-
-               // Clear the session to remove the pages
-               // tester.getWicketSession().invalidateNow();
-               //
-               // tester.setCreateAjaxRequest(true);
-               // tester.executeAjaxEvent(link, "onclick");
-               // tester.clickLink("link");
-               //
-               // document = tester.getServletResponse().getDocument();
-               // assertTrue(document.contains("-"));
-               // tester.assertAjaxLocation();
-
-               tester.getSession().invalidateNow();
+               Link<?> link = 
(Link<?>)tester.getComponentFromLastRenderedPage("link");
+               String linkUrl = tester.urlFor(link);
 
                // Clear the session to remove the pages
                tester.getSession().invalidateNow();
 
                // Invoke the call back URL of the ajax event behavior
-               tester.clickLink(link);
-
-               document = tester.getLastResponseAsString();
-               assertTrue(document.equals("-"));
-               tester.assertAjaxLocation();
+               tester.setExposeExceptions(false);
+               tester.executeUrl(linkUrl);
+               assertEquals(PageExpiredErrorPage.class, 
tester.getLastRenderedPage().getClass());
        }
 
        /**
@@ -92,7 +80,7 @@
        public void testInternalErrorPage()
        {
                tester.startPage(TestErrorPage.class);
-               tester.getRequestCycle().setExposeExceptions(false);
+               tester.setExposeExceptions(false);
                AjaxLink link = 
(AjaxLink)tester.getComponentFromLastRenderedPage("link");
 
                tester.executeAjaxEvent(link, "onclick");

Modified: 
wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/WicketFilterTest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/WicketFilterTest.java?rev=917331&r1=917330&r2=917331&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/WicketFilterTest.java
 (original)
+++ 
wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/WicketFilterTest.java
 Mon Mar  1 00:01:57 2010
@@ -42,7 +42,11 @@
 import junit.framework.TestCase;
 
 import org.apache.wicket.Application;
+import org.apache.wicket.ng.ThreadContext;
+import org.apache.wicket.ng.mock.MockApplication;
 import org.apache.wicket.ng.resource.DynamicImageResource;
+import org.apache.wicket.protocol.http.mock.MockHttpServletRequest;
+import org.apache.wicket.protocol.http.mock.MockHttpServletResponse;
 
 public class WicketFilterTest extends TestCase
 {
@@ -73,41 +77,49 @@
        public void testNotModifiedResponseIncludesExpiresHeader() throws 
IOException,
                ServletException, ParseException
        {
-               application = new DummyWebApplication();
-               WicketFilter filter = new WicketFilter();
-               filter.init(new FilterTestingConfig());
-               Application.set(application);
-               DynamicImageResource resource = new DynamicImageResource()
+               try
                {
-                       private static final long serialVersionUID = 1L;
+                       application = new MockApplication();
+                       WicketFilter filter = new WicketFilter();
+                       filter.init(new FilterTestingConfig());
+                       application.set();
+                       DynamicImageResource resource = new 
DynamicImageResource()
+                       {
+                               private static final long serialVersionUID = 1L;
 
-                       @Override
-                       protected byte[] getImageData()
+                               @Override
+                               protected byte[] getImageData()
+                               {
+                                       throw new 
UnsupportedOperationException("Not implemented");
+                               }
+                       };
+                       // resource.setCacheable(true);
+                       application.getSharedResources().add("foo.gif", 
resource);
+                       MockHttpServletRequest request = new 
MockHttpServletRequest(application, null, null);
+                       request.setURL(request.getContextPath() + "/app/" + 
"resources/" +
+                               Application.class.getName() + "/foo.gif");
+                       setIfModifiedSinceToNextWeek(request);
+                       MockHttpServletResponse response = new 
MockHttpServletResponse(request);
+                       filter.doFilter(request, response, new FilterChain()
                        {
-                               throw new UnsupportedOperationException("Not 
implemented");
-                       }
-               };
-               resource.setCacheable(true);
-               application.getSharedResources().add("foo.gif", resource);
-               MockHttpServletRequest request = new 
MockHttpServletRequest(application, null, null);
-               request.setURL(request.getContextPath() + "/app/" + 
"resources/" +
-                       Application.class.getName() + "/foo.gif");
-               setIfModifiedSinceToNextWeek(request);
-               MockHttpServletResponse response = new 
MockHttpServletResponse(request);
-               filter.doFilter(request, response, new FilterChain()
+                               public void doFilter(ServletRequest 
servletRequest, ServletResponse servletResponse)
+                                       throws IOException, ServletException
+                               {
+                               }
+                       });
+                       assertEquals(HttpServletResponse.SC_NOT_MODIFIED, 
response.getStatus());
+                       String responseExpiresHeader = 
response.getHeader("Expires");
+                       assertNotNull("Expires header must be set on not 
modified response",
+                               responseExpiresHeader);
+
+                       Date responseExpires = 
headerDateFormat.parse(responseExpiresHeader);
+                       assertTrue("Expected later than current date but was " 
+ responseExpires,
+                               responseExpires.after(new Date()));
+               }
+               finally
                {
-                       public void doFilter(ServletRequest servletRequest, 
ServletResponse servletResponse)
-                               throws IOException, ServletException
-                       {
-                       }
-               });
-               assertEquals(HttpServletResponse.SC_NOT_MODIFIED, 
response.getStatus());
-               String responseExpiresHeader = response.getHeader("Expires");
-               assertNotNull("Expires header must be set on not modified 
response", responseExpiresHeader);
-
-               Date responseExpires = 
headerDateFormat.parse(responseExpiresHeader);
-               assertTrue("Expected later than current date but was " + 
responseExpires,
-                       responseExpires.after(new Date()));
+                       ThreadContext.detach();
+               }
        }
 
        private void setIfModifiedSinceToNextWeek(MockHttpServletRequest 
request)
@@ -159,7 +171,7 @@
                                
FilterTestingApplicationFactory.class.getName());
                        initParameters.put(WicketFilter.FILTER_MAPPING_PARAM, 
"/app/*");
                        
initParameters.put(ContextParamWebApplicationFactory.APP_CLASS_PARAM,
-                               DummyWebApplication.class.getName());
+                               MockApplication.class.getName());
                }
 
                public String getFilterName()

Modified: 
wicket/trunk/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams.java?rev=917331&r1=917330&r2=917331&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams.java
 (original)
+++ 
wicket/trunk/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams.java
 Mon Mar  1 00:01:57 2010
@@ -43,7 +43,8 @@
                        @Override
                        public void onClick()
                        {
-                               if 
(getPageParameters().getNamedParameterKeys().size() == 2)
+                               if 
(getPageParameters().getNamedParameterKeys().size() == 2 ||
+                                       
getPageParameters().getIndexedParamsCount() == 2)
                                {
                                        throw new 
WicketRuntimeException("wanted exception");
                                }

Modified: 
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/cookies/CookieUtilsTest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/util/cookies/CookieUtilsTest.java?rev=917331&r1=917330&r2=917331&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/cookies/CookieUtilsTest.java
 (original)
+++ 
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/cookies/CookieUtilsTest.java
 Mon Mar  1 00:01:57 2010
@@ -65,7 +65,7 @@
                // See comment in CookieUtils on how removing a Cookies works. 
As no cookies in the request,
                // no "delete" cookie will be added to the response.
                persister.remove(textField);
-               assertNull(getRequestCookies());
+               assertEquals(0, getRequestCookies().size());
                assertEquals(0, getResponseCookies().size());
 
                // Save the input field's value (add it to the response's 
cookie list)

Modified: 
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java?rev=917331&r1=917330&r2=917331&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java
 (original)
+++ 
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java
 Mon Mar  1 00:01:57 2010
@@ -551,7 +551,12 @@
                try
                {
                        tester.startPage(BlockedResourceLinkPage.class);
-                       
System.out.println(tester.getLastResponse().getStatus());
+
+                       TagTester linkTag = 
TagTester.createTagByAttribute(tester.getLastResponseAsString(),
+                               "wicket:id", "link");
+                       String url = linkTag.getAttribute("href");
+                       url = url.replace("../", "wicket/");
+                       tester.executeUrl(url);
                        fail("Accessing " + BlockedResourceLinkPage.class + " 
should have raised a " +
                                PackageResourceBlockedException.class);
                }


Reply via email to