You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by kn...@apache.org on 2010/01/09 00:47:36 UTC

svn commit: r897350 - in /wicket/trunk: wicket-examples/src/main/java/org/apache/wicket/examples/linkomatic/ wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/form/upload/ wicket/src/main/java/org/apache/wicket/ wicket/src/m...

Author: knopp
Date: Fri Jan  8 23:47:33 2010
New Revision: 897350

URL: http://svn.apache.org/viewvc?rev=897350&view=rev
Log:
got some examples working

Added:
    wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/MultiPartServletWebRequest.java   (with props)
    wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/MultipartServletWebRequest.java   (with props)
    wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/MultipartServletWebRequestImpl.java   (contents, props changed)
      - copied, changed from r897015, wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/MultipartServletWebRequest.java
Modified:
    wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/linkomatic/LinkomaticApplication.java
    wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/form/upload/MultipartRequest.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/Request.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/image/ContextPathGenerator.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/link/ExternalLink.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/RelativePathPrefixHandler.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/Url.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/component/IRequestableComponent.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/cycle/UrlRenderer.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/DefaultPageProvider.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/PageAndComponentProvider.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/AbstractBookmarkableMapper.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/PageInstanceMapper.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/ClassScanner.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/basic/RedirectRequestHandler.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/util/string/UrlUtils.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/MockComponent.java

Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/linkomatic/LinkomaticApplication.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/linkomatic/LinkomaticApplication.java?rev=897350&r1=897349&r2=897350&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/linkomatic/LinkomaticApplication.java (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/linkomatic/LinkomaticApplication.java Fri Jan  8 23:47:33 2010
@@ -45,6 +45,8 @@
 	{
 		super.init();
 
+		mountBookmarkablePage("/home", Home.class);
+
 		// TODO WNG
 		// getSharedResources().add("cancelButton", new DefaultButtonImageResource("Cancel"));
 		// log host name and server time in the browser's status bar

Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/form/upload/MultipartRequest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/form/upload/MultipartRequest.java?rev=897350&r1=897349&r2=897350&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/form/upload/MultipartRequest.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/form/upload/MultipartRequest.java Fri Jan  8 23:47:33 2010
@@ -20,7 +20,7 @@
 
 import org.apache.wicket.RequestCycle;
 import org.apache.wicket.protocol.http.WebRequest;
-import org.apache.wicket.protocol.http.servlet.MultipartServletWebRequest;
+import org.apache.wicket.protocol.http.servlet.MultipartServletWebRequestImpl;
 import org.apache.wicket.util.lang.Bytes;
 import org.apache.wicket.util.upload.FileUploadException;
 
@@ -29,7 +29,7 @@
  * 
  * @author Igor Vaynberg (ivaynberg)
  */
-class MultipartRequest extends MultipartServletWebRequest
+class MultipartRequest extends MultipartServletWebRequestImpl
 {
 	/**
 	 * @param req
@@ -46,7 +46,7 @@
 	}
 
 	/**
-	 * @see org.apache.wicket.protocol.http.servlet.MultipartServletWebRequest#wantUploadProgressUpdates()
+	 * @see org.apache.wicket.protocol.http.servlet.MultipartServletWebRequestImpl#wantUploadProgressUpdates()
 	 */
 	@Override
 	protected boolean wantUploadProgressUpdates()
@@ -55,7 +55,7 @@
 	}
 
 	/**
-	 * @see org.apache.wicket.protocol.http.servlet.MultipartServletWebRequest#onUploadStarted(int)
+	 * @see org.apache.wicket.protocol.http.servlet.MultipartServletWebRequestImpl#onUploadStarted(int)
 	 */
 	@Override
 	protected void onUploadStarted(int totalBytes)
@@ -67,7 +67,7 @@
 	}
 
 	/**
-	 * @see org.apache.wicket.protocol.http.servlet.MultipartServletWebRequest#onUploadUpdate(int,
+	 * @see org.apache.wicket.protocol.http.servlet.MultipartServletWebRequestImpl#onUploadUpdate(int,
 	 *      int)
 	 */
 	@Override
@@ -86,7 +86,7 @@
 	}
 
 	/**
-	 * @see org.apache.wicket.protocol.http.servlet.MultipartServletWebRequest#onUploadCompleted()
+	 * @see org.apache.wicket.protocol.http.servlet.MultipartServletWebRequestImpl#onUploadCompleted()
 	 */
 	@Override
 	protected void onUploadCompleted()

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java?rev=897350&r1=897349&r2=897350&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java Fri Jan  8 23:47:33 2010
@@ -52,8 +52,8 @@
 import org.apache.wicket.ng.request.cycle.RequestCycle;
 import org.apache.wicket.ng.request.handler.DefaultPageProvider;
 import org.apache.wicket.ng.request.handler.PageAndComponentProvider;
+import org.apache.wicket.ng.request.handler.impl.BookmarkablePageRequestHandler;
 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.resource.ResourceReferenceRequestHandler;
 import org.apache.wicket.ng.resource.ResourceReference;
 import org.apache.wicket.protocol.http.WebRequest;
@@ -3198,8 +3198,8 @@
 	public final <C extends Page> CharSequence urlFor(final Class<C> pageClass,
 		final PageParameters parameters)
 	{
-		IRequestHandler handler = new RenderPageRequestHandler(new DefaultPageProvider(pageClass,
-			parameters));
+		IRequestHandler handler = new BookmarkablePageRequestHandler(new DefaultPageProvider(
+			pageClass, parameters));
 		return getRequestCycle().renderUrlFor(handler);
 	}
 

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/Request.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/Request.java?rev=897350&r1=897349&r2=897350&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/Request.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/Request.java Fri Jan  8 23:47:33 2010
@@ -101,4 +101,17 @@
 		};
 	}
 
+	/**
+	 * Returns prefix from Wicket Filter mapping to context path. This method does not take the
+	 * actual URL into account.
+	 * <p>
+	 * For example if Wicket filter is mapped to hello/* this method should return ../
+	 * 
+	 * @return prefix to context path for this request.
+	 * 
+	 */
+	public String getPrefixToContextPath()
+	{
+		return "";
+	}
 }

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/image/ContextPathGenerator.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/image/ContextPathGenerator.java?rev=897350&r1=897349&r2=897350&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/image/ContextPathGenerator.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/image/ContextPathGenerator.java Fri Jan  8 23:47:33 2010
@@ -66,8 +66,7 @@
 		// get path
 		final String path = contextRelativePath.getObject();
 
-		final String rewritten = UrlUtils.rewriteToContextRelative(path, RequestCycle.get()
-			.getRequest());
+		final String rewritten = UrlUtils.rewriteToContextRelative(path, RequestCycle.get());
 
 		tag.put("src", rewritten);
 	}

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/link/ExternalLink.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/link/ExternalLink.java?rev=897350&r1=897349&r2=897350&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/link/ExternalLink.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/link/ExternalLink.java Fri Jan  8 23:47:33 2010
@@ -161,7 +161,7 @@
 					{
 						url = url.substring(1);
 					}
-					url = UrlUtils.rewriteToContextRelative(url, RequestCycle.get().getRequest());
+					url = UrlUtils.rewriteToContextRelative(url, RequestCycle.get());
 				}
 
 				// if the tag is an anchor proper

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/RelativePathPrefixHandler.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/RelativePathPrefixHandler.java?rev=897350&r1=897349&r2=897350&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/RelativePathPrefixHandler.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/RelativePathPrefixHandler.java Fri Jan  8 23:47:33 2010
@@ -20,7 +20,6 @@
 
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
-import org.apache.wicket.Request;
 import org.apache.wicket.behavior.AbstractBehavior;
 import org.apache.wicket.behavior.IBehavior;
 import org.apache.wicket.markup.ComponentTag;
@@ -89,9 +88,8 @@
 				if ((attrValue != null) && (attrValue.startsWith("/") == false) &&
 					(attrValue.indexOf(":") < 0) && !(attrValue.startsWith("#")))
 				{
-					Request request = RequestCycle.get().getRequest();
 					tag.getAttributes().put(attrName,
-						UrlUtils.rewriteToContextRelative(attrValue, request));
+						UrlUtils.rewriteToContextRelative(attrValue, RequestCycle.get()));
 				}
 			}
 		}

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/Url.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/Url.java?rev=897350&r1=897349&r2=897350&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/Url.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/Url.java Fri Jan  8 23:47:33 2010
@@ -170,15 +170,6 @@
 	/**
 	 * Construct.
 	 * 
-	 * @param string
-	 */
-	public Url(String string)
-	{
-	}
-
-	/**
-	 * Construct.
-	 * 
 	 * @param url
 	 *            url being copied
 	 */

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/component/IRequestableComponent.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/component/IRequestableComponent.java?rev=897350&r1=897349&r2=897350&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/component/IRequestableComponent.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/component/IRequestableComponent.java Fri Jan  8 23:47:33 2010
@@ -35,7 +35,7 @@
 	 * 
 	 * @return Colon separated path to this component in the component hierarchy
 	 */
-	public String getPath();
+	public String getPageRelativePath();
 
 	/**
 	 * Gets the id of this component.

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/cycle/UrlRenderer.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/cycle/UrlRenderer.java?rev=897350&r1=897349&r2=897350&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/cycle/UrlRenderer.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/cycle/UrlRenderer.java Fri Jan  8 23:47:33 2010
@@ -19,8 +19,10 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.wicket.Request;
 import org.apache.wicket.ng.request.Url;
 import org.apache.wicket.util.lang.Checks;
+import org.apache.wicket.util.string.PrependingStringBuffer;
 
 /**
  * Takes care of rendering relative (or in future possibly absolute - depending on configuration)
@@ -124,4 +126,17 @@
 			return new Url(newSegments, url.getQueryParameters()).toString();
 		}
 	}
+
+	public String renderContextPathRelativeUrl(final String url, final Request request)
+	{
+		PrependingStringBuffer buffer = new PrependingStringBuffer(url);
+		for (int i = 0; i < baseUrl.getSegments().size() - 1; ++i)
+		{
+			buffer.prepend("../");
+		}
+
+		buffer.prepend(request.getPrefixToContextPath());
+
+		return buffer.toString();
+	}
 }

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/DefaultPageProvider.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/DefaultPageProvider.java?rev=897350&r1=897349&r2=897350&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/DefaultPageProvider.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/DefaultPageProvider.java Fri Jan  8 23:47:33 2010
@@ -124,6 +124,10 @@
 		{
 			setPageParameters(pageParameters);
 		}
+		else
+		{
+			setPageParameters(new PageParameters());
+		}
 	}
 
 	/**

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/PageAndComponentProvider.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/PageAndComponentProvider.java?rev=897350&r1=897349&r2=897350&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/PageAndComponentProvider.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/PageAndComponentProvider.java Fri Jan  8 23:47:33 2010
@@ -175,7 +175,7 @@
 		}
 		else
 		{
-			return component.getPath();
+			return component.getPageRelativePath();
 		}
 	}
 

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/AbstractBookmarkableMapper.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/AbstractBookmarkableMapper.java?rev=897350&r1=897349&r2=897350&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/AbstractBookmarkableMapper.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/AbstractBookmarkableMapper.java Fri Jan  8 23:47:33 2010
@@ -325,7 +325,7 @@
 			PageInfo pageInfo = new PageInfo(page);
 			ComponentInfo componentInfo = new ComponentInfo(page.getRenderCount(),
 				requestListenerInterfaceToString(handler.getListenerInterface()),
-				handler.getComponent().getPath(), handler.getBehaviorIndex());
+				handler.getComponent().getPageRelativePath(), handler.getBehaviorIndex());
 
 			UrlInfo urlInfo = new UrlInfo(new PageComponentInfo(pageInfo, componentInfo),
 				page.getClass(), handler.getPageParameters());

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/PageInstanceMapper.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/PageInstanceMapper.java?rev=897350&r1=897349&r2=897350&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/PageInstanceMapper.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/PageInstanceMapper.java Fri Jan  8 23:47:33 2010
@@ -114,7 +114,7 @@
 		{
 			ListenerInterfaceRequestHandler handler = (ListenerInterfaceRequestHandler)requestHandler;
 			IRequestablePage page = handler.getPage();
-			String componentPath = handler.getComponent().getPath();
+			String componentPath = handler.getComponent().getPageRelativePath();
 			RequestListenerInterface listenerInterface = handler.getListenerInterface();
 
 			PageInfo pageInfo = new PageInfo(page);

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/ClassScanner.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/ClassScanner.java?rev=897350&r1=897349&r2=897350&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/ClassScanner.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/ClassScanner.java Fri Jan  8 23:47:33 2010
@@ -18,6 +18,7 @@
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
+import java.util.HashSet;
 import java.util.Set;
 
 import org.slf4j.Logger;
@@ -25,7 +26,7 @@
 
 abstract class ClassScanner
 {
-	private Set<String> scannedClasses;
+	private final Set<String> scannedClasses = new HashSet<String>();;
 
 	abstract void foundResourceReference(ResourceReference reference);
 

Added: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/MultiPartServletWebRequest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/MultiPartServletWebRequest.java?rev=897350&view=auto
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/MultiPartServletWebRequest.java (added)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/MultiPartServletWebRequest.java Fri Jan  8 23:47:33 2010
@@ -0,0 +1,84 @@
+/*
+ * 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.servlet;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.wicket.ng.request.IRequestParameters;
+import org.apache.wicket.ng.request.Url;
+import org.apache.wicket.protocol.http.IMultipartWebRequest;
+import org.apache.wicket.util.upload.FileItem;
+
+/**
+ * Servlet specific WebRequest subclass for multipart content uploads.
+ * 
+ * @author Matej Knopp
+ */
+public abstract class MultipartServletWebRequest extends ServletWebRequest
+	implements
+		IMultipartWebRequest
+{
+
+	/**
+	 * Construct.
+	 * 
+	 * @param httpServletRequest
+	 * @param filterPrefix
+	 */
+	public MultipartServletWebRequest(HttpServletRequest httpServletRequest, String filterPrefix)
+	{
+		super(httpServletRequest, filterPrefix);
+	}
+
+	/**
+	 * Construct.
+	 * 
+	 * @param httpServletRequest
+	 * @param filterPrefix
+	 * @param url
+	 */
+	public MultipartServletWebRequest(HttpServletRequest httpServletRequest, String filterPrefix,
+		Url url)
+	{
+		super(httpServletRequest, filterPrefix, url);
+	}
+
+	@Override
+	public ServletWebRequest requestWithUrl(Url url)
+	{
+		return new MultipartServletWebRequest(getHttpServletRequest(), getFilterPrefix(), url)
+		{
+			public FileItem getFile(String fieldName)
+			{
+				return MultipartServletWebRequest.this.getFile(fieldName);
+			}
+
+			public Map<String, FileItem> getFiles()
+			{
+				return MultipartServletWebRequest.this.getFiles();
+			}
+
+			@Override
+			public IRequestParameters getPostRequestParameters()
+			{
+				return MultipartServletWebRequest.this.getPostRequestParameters();
+			}
+		};
+	}
+}

Propchange: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/MultiPartServletWebRequest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/MultipartServletWebRequest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/MultipartServletWebRequest.java?rev=897350&view=auto
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/MultipartServletWebRequest.java (added)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/MultipartServletWebRequest.java Fri Jan  8 23:47:33 2010
@@ -0,0 +1,84 @@
+/*
+ * 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.servlet;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.wicket.ng.request.IRequestParameters;
+import org.apache.wicket.ng.request.Url;
+import org.apache.wicket.protocol.http.IMultipartWebRequest;
+import org.apache.wicket.util.upload.FileItem;
+
+/**
+ * Servlet specific WebRequest subclass for multipart content uploads.
+ * 
+ * @author Matej Knopp
+ */
+public abstract class MultipartServletWebRequest extends ServletWebRequest
+	implements
+		IMultipartWebRequest
+{
+
+	/**
+	 * Construct.
+	 * 
+	 * @param httpServletRequest
+	 * @param filterPrefix
+	 */
+	public MultipartServletWebRequest(HttpServletRequest httpServletRequest, String filterPrefix)
+	{
+		super(httpServletRequest, filterPrefix);
+	}
+
+	/**
+	 * Construct.
+	 * 
+	 * @param httpServletRequest
+	 * @param filterPrefix
+	 * @param url
+	 */
+	public MultipartServletWebRequest(HttpServletRequest httpServletRequest, String filterPrefix,
+		Url url)
+	{
+		super(httpServletRequest, filterPrefix, url);
+	}
+
+	@Override
+	public ServletWebRequest requestWithUrl(Url url)
+	{
+		return new MultipartServletWebRequest(getHttpServletRequest(), getFilterPrefix(), url)
+		{
+			public FileItem getFile(String fieldName)
+			{
+				return MultipartServletWebRequest.this.getFile(fieldName);
+			}
+
+			public Map<String, FileItem> getFiles()
+			{
+				return MultipartServletWebRequest.this.getFiles();
+			}
+
+			@Override
+			public IRequestParameters getPostRequestParameters()
+			{
+				return MultipartServletWebRequest.this.getPostRequestParameters();
+			}
+		};
+	}
+}

Propchange: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/MultipartServletWebRequest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Copied: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/MultipartServletWebRequestImpl.java (from r897015, wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/MultipartServletWebRequest.java)
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/MultipartServletWebRequestImpl.java?p2=wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/MultipartServletWebRequestImpl.java&p1=wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/MultipartServletWebRequest.java&r1=897015&r2=897350&rev=897350&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/MultipartServletWebRequest.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/MultipartServletWebRequestImpl.java Fri Jan  8 23:47:33 2010
@@ -28,7 +28,6 @@
 import javax.servlet.http.HttpServletRequest;
 
 import org.apache.wicket.WicketRuntimeException;
-import org.apache.wicket.protocol.http.IMultipartWebRequest;
 import org.apache.wicket.util.lang.Bytes;
 import org.apache.wicket.util.string.StringValue;
 import org.apache.wicket.util.upload.DiskFileItemFactory;
@@ -49,7 +48,7 @@
  * @author Ate Douma
  * @author Igor Vaynberg (ivaynberg)
  */
-public class MultipartServletWebRequest extends ServletWebRequest implements IMultipartWebRequest
+public class MultipartServletWebRequestImpl extends MultipartServletWebRequest
 {
 	/** Map of file items. */
 	private final Map<String, FileItem> files = new HashMap<String, FileItem>();
@@ -76,11 +75,13 @@
 	 *            the maximum size allowed for this request
 	 * @param request
 	 *            the servlet request
+	 * @param filterPrefix
+	 *            prefix to wicket filter mapping
 	 * @throws FileUploadException
 	 *             Thrown if something goes wrong with upload
 	 */
-	public MultipartServletWebRequest(HttpServletRequest request, String filterPrefix, Bytes maxSize)
-		throws FileUploadException
+	public MultipartServletWebRequestImpl(HttpServletRequest request, String filterPrefix,
+		Bytes maxSize) throws FileUploadException
 	{
 		this(request, filterPrefix, maxSize, new DiskFileItemFactory());
 	}
@@ -92,13 +93,15 @@
 	 *            the maximum size allowed for this request
 	 * @param request
 	 *            the servlet request
+	 * @param filterPrefix
+	 *            prefix to wicket filter mapping
 	 * @param factory
 	 *            {@link DiskFileItemFactory} to use when creating file items used to represent
 	 *            uploaded files
 	 * @throws FileUploadException
 	 *             Thrown if something goes wrong with upload
 	 */
-	public MultipartServletWebRequest(HttpServletRequest request, String filterPrefix,
+	public MultipartServletWebRequestImpl(HttpServletRequest request, String filterPrefix,
 		Bytes maxSize, FileItemFactory factory) throws FileUploadException
 	{
 		super(request, filterPrefix);

Propchange: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/MultipartServletWebRequestImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java?rev=897350&r1=897349&r2=897350&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java Fri Jan  8 23:47:33 2010
@@ -37,6 +37,7 @@
 import org.apache.wicket.util.io.Streams;
 import org.apache.wicket.util.lang.Bytes;
 import org.apache.wicket.util.lang.Checks;
+import org.apache.wicket.util.string.PrependingStringBuffer;
 import org.apache.wicket.util.string.StringValue;
 import org.apache.wicket.util.string.Strings;
 import org.apache.wicket.util.upload.FileItemFactory;
@@ -67,10 +68,28 @@
 	 */
 	public ServletWebRequest(HttpServletRequest httpServletRequest, String filterPrefix)
 	{
+		this(httpServletRequest, filterPrefix, null);
+	}
+
+	/**
+	 * Construct.
+	 * 
+	 * @param httpServletRequest
+	 * 
+	 * @param filterPrefix
+	 *            contentPath + filterPath, used to extract the actual {@link Url}
+	 * 
+	 * @param url
+	 */
+	public ServletWebRequest(HttpServletRequest httpServletRequest, String filterPrefix, Url url)
+	{
 		Checks.argumentNotNull(httpServletRequest, "httpServletRequest");
 		Checks.argumentNotNull(filterPrefix, "filterPrefix");
 
-		url = getUrl(httpServletRequest, filterPrefix);
+		if (url != null)
+			this.url = url;
+		else
+			this.url = getUrl(httpServletRequest, filterPrefix);
 		this.httpServletRequest = httpServletRequest;
 		this.filterPrefix = filterPrefix;
 	}
@@ -96,6 +115,11 @@
 		return Url.parse(Strings.stripJSessionId(url.toString()));
 	}
 
+	protected String getFilterPrefix()
+	{
+		return filterPrefix;
+	}
+
 	/**
 	 * Returns the wrapped {@link HttpServletRequest} instance.
 	 * 
@@ -244,18 +268,59 @@
 		return new Url(url);
 	}
 
+	@Override
+	public ServletWebRequest requestWithUrl(Url url)
+	{
+		return new ServletWebRequest(httpServletRequest, filterPrefix, url)
+		{
+			@Override
+			public IRequestParameters getPostRequestParameters()
+			{
+				// don't parse post parameters again
+				return ServletWebRequest.this.getPostRequestParameters();
+			}
+		};
+	}
+
+	/**
+	 * Creates multipart web request from this request.
+	 * 
+	 * @param maxSize
+	 * @return multipart request
+	 * @throws FileUploadException
+	 */
 	public MultipartServletWebRequest newMultipartWebRequest(Bytes maxSize)
 		throws FileUploadException
 	{
-		return new MultipartServletWebRequest(getHttpServletRequest(), filterPrefix, maxSize);
+		return new MultipartServletWebRequestImpl(getHttpServletRequest(), filterPrefix, maxSize);
 	}
 
+	/**
+	 * Creates multipart web request from this request.
+	 * 
+	 * @param maxSize
+	 * @param factory
+	 * @return multipart request
+	 * @throws FileUploadException
+	 */
 	public MultipartServletWebRequest newMultipartWebRequest(Bytes maxSize, FileItemFactory factory)
 		throws FileUploadException
 	{
-		return new MultipartServletWebRequest(getHttpServletRequest(), filterPrefix, maxSize,
+		return new MultipartServletWebRequestImpl(getHttpServletRequest(), filterPrefix, maxSize,
 			factory);
 	}
 
 	private static final Logger logger = LoggerFactory.getLogger(ServletWebRequest.class);
+
+	@Override
+	public String getPrefixToContextPath()
+	{
+		PrependingStringBuffer buffer = new PrependingStringBuffer();
+		Url filterPrefixUrl = Url.parse(filterPrefix);
+		for (int i = 0; i < filterPrefixUrl.getSegments().size() - 1; ++i)
+		{
+			buffer.prepend("../");
+		}
+		return buffer.toString();
+	}
 }

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/basic/RedirectRequestHandler.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/basic/RedirectRequestHandler.java?rev=897350&r1=897349&r2=897350&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/basic/RedirectRequestHandler.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/basic/RedirectRequestHandler.java Fri Jan  8 23:47:33 2010
@@ -85,7 +85,7 @@
 			else
 			{
 				String location = UrlUtils.rewriteToContextRelative(redirectUrl.substring(1),
-					requestCycle.getRequest());
+					requestCycle);
 
 				// IE does not understand "./" in a path, just "." is okay.
 				if (location.startsWith("./"))
@@ -106,5 +106,4 @@
 			response.sendRedirect(redirectUrl);
 		}
 	}
-
 }

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/util/string/UrlUtils.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/string/UrlUtils.java?rev=897350&r1=897349&r2=897350&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/util/string/UrlUtils.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/util/string/UrlUtils.java Fri Jan  8 23:47:33 2010
@@ -16,7 +16,7 @@
  */
 package org.apache.wicket.util.string;
 
-import org.apache.wicket.Request;
+import org.apache.wicket.ng.request.cycle.RequestCycle;
 
 /**
  * Various url utilities
@@ -56,18 +56,17 @@
 	 * Rewrites a relative url to be context relative, leaves absolute urls same.
 	 * 
 	 * @param url
-	 * @param request
+	 * @param requestCycle
 	 * @return rewritten url
 	 */
-	public static String rewriteToContextRelative(String url, Request request)
+	public static String rewriteToContextRelative(String url, RequestCycle requestCycle)
 	{
 		if (isRelative(url))
 		{
 			// TODO: NG: This is pretty much a marker method; We dont have any means to do this now
-			System.out.println("TODO: Implement UrlUtils # rewriteToContextRelative");
-			// final String prefix = request.getRelativePathPrefixToContextRoot();
-			// return prefix + url;
-			return url;
+			System.out.println("TODO NG: Make sure this work properly");
+			return requestCycle.getUrlRenderer().renderContextPathRelativeUrl(url,
+				requestCycle.getRequest());
 		}
 		else
 		{

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/MockComponent.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/MockComponent.java?rev=897350&r1=897349&r2=897350&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/MockComponent.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/MockComponent.java Fri Jan  8 23:47:33 2010
@@ -38,24 +38,24 @@
 	private String id;
 	private IRequestablePage page;
 	private String path;
-	
+
 	/**
 	 * Construct.
 	 */
 	public MockComponent()
 	{
 	}
-	
+
 	public IRequestableComponent get(String path)
 	{
 		MockComponent c = new MockComponent();
 		if (Strings.isEmpty(getPath()))
 		{
-			c.setPath(path);	
+			c.setPath(path);
 		}
 		else
 		{
-			c.setPath(this.getPath() + ":" + path);
+			c.setPath(getPath() + ":" + path);
 		}
 		c.setPage(getPage());
 		c.setId(Strings.lastPathComponent(path, ':'));
@@ -90,7 +90,7 @@
 		this.markupId = markupId;
 		return this;
 	}
-	
+
 	public String getMarkupId(boolean createIfDoesNotExist)
 	{
 		return markupId;
@@ -100,7 +100,7 @@
 	{
 		return page;
 	}
-	
+
 	/**
 	 * Sets the page instance
 	 * 
@@ -113,11 +113,11 @@
 		return this;
 	}
 
-	public String getPath()
+	public String getPageRelativePath()
 	{
 		return path;
 	}
-	
+
 	/**
 	 * Sets the component path
 	 * 
@@ -133,14 +133,24 @@
 	public void detach()
 	{
 	}
-	
+
 	public boolean canCallListenerInterface()
 	{
 		return true;
 	}
-	
+
 	public List<IBehavior> getBehaviors()
 	{
 		return Collections.emptyList();
 	}
+
+	public boolean isEnabledInHierarchy()
+	{
+		return false;
+	}
+
+	public boolean isVisibleInHierarchy()
+	{
+		return false;
+	}
 }