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/04 02:03:49 UTC

svn commit: r895520 [5/7] - in /wicket/trunk: wicket-examples/src/main/java/org/apache/wicket/examples/staticpages/ wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/ wicket/src/main/disabled/ wicket/src/main/di...

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/resource/ResourceReferenceRequestHandler.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/resource/ResourceReferenceRequestHandler.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/resource/ResourceReferenceRequestHandler.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/resource/ResourceReferenceRequestHandler.java Mon Jan  4 01:03:29 2010
@@ -16,8 +16,8 @@
  */
 package org.apache.wicket.ng.request.handler.resource;
 
-import org.apache.wicket.ng.request.IRequestHandler;
-import org.apache.wicket.ng.request.component.PageParametersNg;
+import org.apache.wicket.IRequestHandler;
+import org.apache.wicket.ng.request.component.PageParameters;
 import org.apache.wicket.ng.request.cycle.RequestCycle;
 import org.apache.wicket.ng.resource.ResourceReference;
 import org.apache.wicket.util.lang.Checks;
@@ -31,7 +31,17 @@
 {
 	private final ResourceReference resourceReference;
 
-	private final PageParametersNg pageParameters;
+	private final PageParameters pageParameters;
+
+	/**
+	 * Construct.
+	 * 
+	 * @param resourceReference
+	 */
+	public ResourceReferenceRequestHandler(ResourceReference resourceReference)
+	{
+		this(resourceReference, null);
+	}
 
 	/**
 	 * Construct.
@@ -40,7 +50,7 @@
 	 * @param pageParameters
 	 */
 	public ResourceReferenceRequestHandler(ResourceReference resourceReference,
-		PageParametersNg pageParameters)
+		PageParameters pageParameters)
 	{
 		Checks.argumentNotNull(resourceReference, "resourceReference");
 
@@ -59,7 +69,7 @@
 	/**
 	 * @return page parameters
 	 */
-	public PageParametersNg getPageParameters()
+	public PageParameters getPageParameters()
 	{
 		return pageParameters;
 	}

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/resource/ResourceRequestHandler.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/resource/ResourceRequestHandler.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/resource/ResourceRequestHandler.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/resource/ResourceRequestHandler.java Mon Jan  4 01:03:29 2010
@@ -18,8 +18,8 @@
 
 import java.util.Locale;
 
-import org.apache.wicket.ng.request.IRequestHandler;
-import org.apache.wicket.ng.request.component.PageParametersNg;
+import org.apache.wicket.IRequestHandler;
+import org.apache.wicket.ng.request.component.PageParameters;
 import org.apache.wicket.ng.request.cycle.RequestCycle;
 import org.apache.wicket.ng.resource.IResource;
 import org.apache.wicket.util.lang.Checks;
@@ -35,7 +35,7 @@
 	private final Locale locale;
 	private final String style;
 	private final String variation;
-	private final PageParametersNg pageParameters;
+	private final PageParameters pageParameters;
 
 	/**
 	 * Construct.
@@ -47,7 +47,7 @@
 	 * @param pageParameters
 	 */
 	public ResourceRequestHandler(IResource resource, Locale locale, String style,
-		String variation, PageParametersNg pageParameters)
+		String variation, PageParameters pageParameters)
 	{
 		Checks.argumentNotNull(resource, "resource");
 
@@ -55,7 +55,7 @@
 		this.locale = locale;
 		this.style = style;
 		this.variation = variation;
-		this.pageParameters = pageParameters != null ? pageParameters : new PageParametersNg();
+		this.pageParameters = pageParameters != null ? pageParameters : new PageParameters();
 	}
 
 	/**
@@ -85,7 +85,7 @@
 	/**
 	 * @return page parameters
 	 */
-	public PageParametersNg getPageParameters()
+	public PageParameters getPageParameters()
 	{
 		return pageParameters;
 	}

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=895520&r1=895519&r2=895520&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 Mon Jan  4 01:03:29 2010
@@ -16,19 +16,19 @@
  */
 package org.apache.wicket.ng.request.mapper;
 
+import org.apache.wicket.IRequestHandler;
 import org.apache.wicket.Request;
-import org.apache.wicket.ng.request.IRequestHandler;
+import org.apache.wicket.RequestListenerInterface;
 import org.apache.wicket.ng.request.IRequestMapper;
 import org.apache.wicket.ng.request.Url;
 import org.apache.wicket.ng.request.component.IRequestablePage;
-import org.apache.wicket.ng.request.component.PageParametersNg;
+import org.apache.wicket.ng.request.component.PageParameters;
 import org.apache.wicket.ng.request.handler.DefaultPageProvider;
 import org.apache.wicket.ng.request.handler.PageAndComponentProvider;
 import org.apache.wicket.ng.request.handler.impl.BookmarkableListenerInterfaceRequestHandler;
 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.listener.RequestListenerInterface;
 import org.apache.wicket.ng.request.mapper.info.ComponentInfo;
 import org.apache.wicket.ng.request.mapper.info.PageComponentInfo;
 import org.apache.wicket.ng.request.mapper.info.PageInfo;
@@ -53,7 +53,7 @@
 	protected static final class UrlInfo
 	{
 		private final PageComponentInfo pageComponentInfo;
-		private final PageParametersNg pageParameters;
+		private final PageParameters pageParameters;
 		private final Class<? extends IRequestablePage> pageClass;
 
 		/**
@@ -67,7 +67,7 @@
 		 *            optional parameter providing pageParameters
 		 */
 		public UrlInfo(PageComponentInfo pageComponentInfo,
-			Class<? extends IRequestablePage> pageClass, PageParametersNg pageParameters)
+			Class<? extends IRequestablePage> pageClass, PageParameters pageParameters)
 		{
 			Checks.argumentNotNull(pageClass, "pageClass");
 
@@ -95,7 +95,7 @@
 		/**
 		 * @return PageParameters instance (never <code>null</code>)
 		 */
-		public PageParametersNg getPageParameters()
+		public PageParameters getPageParameters()
 		{
 			return pageParameters;
 		}
@@ -149,7 +149,7 @@
 	 * @return
 	 */
 	private IRequestHandler processBookmarkable(Class<? extends IRequestablePage> pageClass,
-		PageParametersNg pageParameters)
+		PageParameters pageParameters)
 	{
 		DefaultPageProvider provider = new DefaultPageProvider(pageClass, pageParameters);
 		provider.setPageSource(getContext());
@@ -165,7 +165,7 @@
 	 * @return
 	 */
 	private IRequestHandler processHybrid(PageInfo pageInfo,
-		Class<? extends IRequestablePage> pageClass, PageParametersNg pageParameters,
+		Class<? extends IRequestablePage> pageClass, PageParameters pageParameters,
 		Integer renderCount)
 	{
 		DefaultPageProvider provider = new DefaultPageProvider(pageInfo.getPageId(), pageClass,
@@ -182,7 +182,7 @@
 	 * @return
 	 */
 	private IRequestHandler processListener(PageComponentInfo pageComponentInfo,
-		Class<? extends IRequestablePage> pageClass, PageParametersNg pageParameters)
+		Class<? extends IRequestablePage> pageClass, PageParameters pageParameters)
 	{
 		PageInfo pageInfo = pageComponentInfo.getPageInfo();
 		ComponentInfo componentInfo = pageComponentInfo.getComponentInfo();
@@ -223,7 +223,7 @@
 		{
 			PageComponentInfo info = urlInfo.getPageComponentInfo();
 			Class<? extends IRequestablePage> pageClass = urlInfo.getPageClass();
-			PageParametersNg pageParameters = urlInfo.getPageParameters();
+			PageParameters pageParameters = urlInfo.getPageParameters();
 
 			if (info == null || info.getPageInfo().getPageId() == null)
 			{

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/AbstractMapper.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/AbstractMapper.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/AbstractMapper.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/AbstractMapper.java Mon Jan  4 01:03:29 2010
@@ -16,14 +16,14 @@
  */
 package org.apache.wicket.ng.request.mapper;
 
+import org.apache.wicket.Application;
 import org.apache.wicket.Request;
-import org.apache.wicket.ng.Application;
+import org.apache.wicket.RequestListenerInterface;
 import org.apache.wicket.ng.request.IRequestMapper;
 import org.apache.wicket.ng.request.Url;
 import org.apache.wicket.ng.request.Url.QueryParameter;
 import org.apache.wicket.ng.request.component.IRequestablePage;
-import org.apache.wicket.ng.request.component.PageParametersNg;
-import org.apache.wicket.ng.request.listener.RequestListenerInterface;
+import org.apache.wicket.ng.request.component.PageParameters;
 import org.apache.wicket.ng.request.mapper.info.PageComponentInfo;
 import org.apache.wicket.ng.request.mapper.parameters.IPageParametersEncoder;
 import org.apache.wicket.util.lang.Checks;
@@ -204,8 +204,7 @@
 	}
 
 	/**
-	 * Extracts {@link PageParametersNg} from the URL using the given {@link IPageParametersEncoder}
-	 * .
+	 * Extracts {@link PageParameters} from the URL using the given {@link IPageParametersEncoder} .
 	 * 
 	 * @param request
 	 * @param segmentsToSkip
@@ -214,7 +213,7 @@
 	 * @param encoder
 	 * @return PageParameters instance
 	 */
-	protected PageParametersNg extractPageParameters(Request request, int segmentsToSkip,
+	protected PageParameters extractPageParameters(Request request, int segmentsToSkip,
 		IPageParametersEncoder encoder)
 	{
 		Checks.argumentNotNull(request, "request");
@@ -234,12 +233,12 @@
 			urlCopy.getQueryParameters().remove(0);
 		}
 
-		PageParametersNg decoded = encoder.decodePageParameters(request.requestWithUrl(urlCopy));
-		return decoded != null ? decoded : new PageParametersNg();
+		PageParameters decoded = encoder.decodePageParameters(request.requestWithUrl(urlCopy));
+		return decoded != null ? decoded : new PageParameters();
 	}
 
 	/**
-	 * Encodes the given {@link PageParametersNg} to the URL using the given
+	 * Encodes the given {@link PageParameters} to the URL using the given
 	 * {@link IPageParametersEncoder}. The original URL object is unchanged.
 	 * 
 	 * @param url
@@ -247,7 +246,7 @@
 	 * @param encoder
 	 * @return URL with encoded parameters
 	 */
-	protected Url encodePageParameters(Url url, PageParametersNg pageParameters,
+	protected Url encodePageParameters(Url url, PageParameters pageParameters,
 		IPageParametersEncoder encoder)
 	{
 		Checks.argumentNotNull(url, "url");
@@ -255,7 +254,7 @@
 
 		if (pageParameters == null)
 		{
-			pageParameters = new PageParametersNg();
+			pageParameters = new PageParameters();
 		}
 
 		Url parametersUrl = encoder.encodePageParameters(pageParameters);

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/BookmarkableMapper.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/BookmarkableMapper.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/BookmarkableMapper.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/BookmarkableMapper.java Mon Jan  4 01:03:29 2010
@@ -19,7 +19,7 @@
 import org.apache.wicket.Request;
 import org.apache.wicket.ng.request.Url;
 import org.apache.wicket.ng.request.component.IRequestablePage;
-import org.apache.wicket.ng.request.component.PageParametersNg;
+import org.apache.wicket.ng.request.component.PageParameters;
 import org.apache.wicket.ng.request.mapper.info.PageComponentInfo;
 import org.apache.wicket.ng.request.mapper.parameters.IPageParametersEncoder;
 import org.apache.wicket.ng.request.mapper.parameters.SimplePageParametersEncoder;
@@ -108,7 +108,7 @@
 			Class<? extends IRequestablePage> pageClass = getPageClass(className);
 
 			// extract the PageParameters from URL if there are any
-			PageParametersNg pageParameters = extractPageParameters(request, 3,
+			PageParameters pageParameters = extractPageParameters(request, 3,
 				pageParametersEncoder);
 
 			return new UrlInfo(info, pageClass, pageParameters);

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/BufferedResponseMapper.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/BufferedResponseMapper.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/BufferedResponseMapper.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/BufferedResponseMapper.java Mon Jan  4 01:03:29 2010
@@ -16,15 +16,15 @@
  */
 package org.apache.wicket.ng.request.mapper;
 
+import org.apache.wicket.IRequestHandler;
 import org.apache.wicket.Request;
 import org.apache.wicket.Session;
-import org.apache.wicket.ng.protocol.http.BufferedWebResponse;
-import org.apache.wicket.ng.protocol.http.WebApplication;
-import org.apache.wicket.ng.request.IRequestHandler;
 import org.apache.wicket.ng.request.IRequestMapper;
 import org.apache.wicket.ng.request.Url;
 import org.apache.wicket.ng.request.cycle.RequestCycle;
 import org.apache.wicket.ng.request.handler.impl.BufferedResponseRequestHandler;
+import org.apache.wicket.protocol.http.BufferedWebResponse;
+import org.apache.wicket.protocol.http.WebApplication;
 
 /**
  * Encoder that intercepts requests for which there is already stored buffer with rendered data.

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/IMapperContext.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/IMapperContext.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/IMapperContext.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/IMapperContext.java Mon Jan  4 01:03:29 2010
@@ -16,8 +16,8 @@
  */
 package org.apache.wicket.ng.request.mapper;
 
+import org.apache.wicket.RequestListenerInterface;
 import org.apache.wicket.ng.request.component.IRequestablePage;
-import org.apache.wicket.ng.request.listener.RequestListenerInterface;
 import org.apache.wicket.ng.resource.ResourceReferenceRegistry;
 
 /**

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/IPageSource.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/IPageSource.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/IPageSource.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/IPageSource.java Mon Jan  4 01:03:29 2010
@@ -17,7 +17,7 @@
 package org.apache.wicket.ng.request.mapper;
 
 import org.apache.wicket.ng.request.component.IRequestablePage;
-import org.apache.wicket.ng.request.component.PageParametersNg;
+import org.apache.wicket.ng.request.component.PageParameters;
 
 /**
  * Interface for objects that are capable of getting and creating page instance.
@@ -45,6 +45,6 @@
 	 * @return new page instance
 	 */
 	IRequestablePage newPageInstance(Class<? extends IRequestablePage> pageClass,
-		PageParametersNg pageParameters);
+		PageParameters pageParameters);
 
 }

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/MountedMapper.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/MountedMapper.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/MountedMapper.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/MountedMapper.java Mon Jan  4 01:03:29 2010
@@ -21,7 +21,7 @@
 import org.apache.wicket.Request;
 import org.apache.wicket.ng.request.Url;
 import org.apache.wicket.ng.request.component.IRequestablePage;
-import org.apache.wicket.ng.request.component.PageParametersNg;
+import org.apache.wicket.ng.request.component.PageParameters;
 import org.apache.wicket.ng.request.mapper.info.PageComponentInfo;
 import org.apache.wicket.ng.request.mapper.parameters.IPageParametersEncoder;
 import org.apache.wicket.ng.request.mapper.parameters.SimplePageParametersEncoder;
@@ -30,7 +30,7 @@
 /**
  * Encoder for mounted URL. The mount path can contain parameter placeholders, i.e.
  * <code>/mount/${foo}/path</code>. In that case the appropriate segment from the URL will be
- * accessible as named parameter "foo" in the {@link PageParametersNg}. Similarly when the URL is
+ * accessible as named parameter "foo" in the {@link PageParameters}. Similarly when the URL is
  * constructed, the second segment will contain the value of the "foo" named page parameter.
  * <p>
  * Decodes and encodes the following URLs:
@@ -116,7 +116,7 @@
 			Class<? extends IRequestablePage> pageClass = this.pageClass.get();
 
 			// extract the PageParameters from URL if there are any
-			PageParametersNg pageParameters = extractPageParameters(request, mountSegments.length,
+			PageParameters pageParameters = extractPageParameters(request, mountSegments.length,
 				pageParametersEncoder);
 
 			// check if there are placeholders in mount segments
@@ -142,9 +142,9 @@
 	 * 
 	 * @return
 	 */
-	protected PageParametersNg newPageParameters()
+	protected PageParameters newPageParameters()
 	{
-		return new PageParametersNg();
+		return new PageParameters();
 	}
 
 	/**
@@ -160,7 +160,7 @@
 		}
 		encodePageComponentInfo(url, info.getPageComponentInfo());
 
-		PageParametersNg copy = new PageParametersNg(info.getPageParameters());
+		PageParameters copy = new PageParameters(info.getPageParameters());
 
 		for (int i = 0; i < mountSegments.length; ++i)
 		{

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=895520&r1=895519&r2=895520&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 Mon Jan  4 01:03:29 2010
@@ -16,15 +16,15 @@
  */
 package org.apache.wicket.ng.request.mapper;
 
+import org.apache.wicket.IRequestHandler;
 import org.apache.wicket.Request;
-import org.apache.wicket.ng.request.IRequestHandler;
+import org.apache.wicket.RequestListenerInterface;
 import org.apache.wicket.ng.request.Url;
 import org.apache.wicket.ng.request.component.IRequestablePage;
 import org.apache.wicket.ng.request.handler.DefaultPageProvider;
 import org.apache.wicket.ng.request.handler.PageAndComponentProvider;
 import org.apache.wicket.ng.request.handler.impl.ListenerInterfaceRequestHandler;
 import org.apache.wicket.ng.request.handler.impl.RenderPageRequestHandler;
-import org.apache.wicket.ng.request.listener.RequestListenerInterface;
 import org.apache.wicket.ng.request.mapper.info.ComponentInfo;
 import org.apache.wicket.ng.request.mapper.info.PageComponentInfo;
 import org.apache.wicket.ng.request.mapper.info.PageInfo;

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/ResourceReferenceMapper.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/ResourceReferenceMapper.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/ResourceReferenceMapper.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/ResourceReferenceMapper.java Mon Jan  4 01:03:29 2010
@@ -16,10 +16,10 @@
  */
 package org.apache.wicket.ng.request.mapper;
 
+import org.apache.wicket.IRequestHandler;
 import org.apache.wicket.Request;
-import org.apache.wicket.ng.request.IRequestHandler;
 import org.apache.wicket.ng.request.Url;
-import org.apache.wicket.ng.request.component.PageParametersNg;
+import org.apache.wicket.ng.request.component.PageParameters;
 import org.apache.wicket.ng.request.handler.resource.ResourceReferenceRequestHandler;
 import org.apache.wicket.ng.request.handler.resource.ResourceRequestHandler;
 import org.apache.wicket.ng.request.mapper.parameters.IPageParametersEncoder;
@@ -88,8 +88,8 @@
 			ResourceReferenceAttributes attributes = getResourceReferenceAttributes(url);
 
 			// extract the PageParameters from URL if there are any
-			PageParametersNg pageParameters = extractPageParameters(request, url.getSegments()
-				.size(), pageParametersEncoder);
+			PageParameters pageParameters = extractPageParameters(request,
+				url.getSegments().size(), pageParametersEncoder);
 
 			Class<?> scope = resolveClass(className);
 			if (scope != null)
@@ -152,10 +152,10 @@
 				url.getSegments().add(name);
 			}
 			encodeResourceReferenceAttributes(url, reference);
-			PageParametersNg parameters = referenceRequestHandler.getPageParameters();
+			PageParameters parameters = referenceRequestHandler.getPageParameters();
 			if (parameters != null)
 			{
-				parameters = new PageParametersNg(parameters);
+				parameters = new PageParameters(parameters);
 				// need to remove indexed parameters otherwise the URL won't be able to decode
 				parameters.clearIndexedParameters();
 				url = encodePageParameters(url, parameters, pageParametersEncoder);

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/SystemMapper.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/SystemMapper.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/SystemMapper.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/SystemMapper.java Mon Jan  4 01:03:29 2010
@@ -16,10 +16,6 @@
  */
 package org.apache.wicket.ng.request.mapper;
 
-import org.apache.wicket.Request;
-import org.apache.wicket.ng.request.IRequestHandler;
-import org.apache.wicket.ng.request.IRequestMapper;
-import org.apache.wicket.ng.request.Url;
 
 /**
  * Mapper that encapsulates mappers that are necessary for Wicket to function.
@@ -27,36 +23,16 @@
  * @author igor.vaynberg
  * 
  */
-public class SystemMapper implements IRequestMapper
+public class SystemMapper extends ThreadsafeCompoundRequestMapper
 {
-	private final ThreadsafeCompoundRequestMapper mapper = new ThreadsafeCompoundRequestMapper();
-
 	/**
 	 * Constructor
 	 */
 	public SystemMapper()
 	{
-		mapper.register(new PageInstanceMapper());
-		mapper.register(new BookmarkableMapper());
-		mapper.register(new ResourceReferenceMapper());
-		mapper.register(new BufferedResponseMapper());
-	}
-
-	/** {@inheritDoc} */
-	public int getCompatibilityScore(Request request)
-	{
-		return mapper.getCompatibilityScore(request);
-	}
-
-	/** {@inheritDoc} */
-	public Url mapHandler(IRequestHandler handler)
-	{
-		return mapper.mapHandler(handler);
-	}
-
-	/** {@inheritDoc} */
-	public IRequestHandler mapRequest(Request request)
-	{
-		return mapper.mapRequest(request);
+		register(new PageInstanceMapper());
+		register(new BookmarkableMapper());
+		register(new ResourceReferenceMapper());
+		register(new BufferedResponseMapper());
 	}
 }

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/ThreadsafeCompoundRequestMapper.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/ThreadsafeCompoundRequestMapper.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/ThreadsafeCompoundRequestMapper.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/ThreadsafeCompoundRequestMapper.java Mon Jan  4 01:03:29 2010
@@ -21,9 +21,9 @@
 import java.util.List;
 import java.util.concurrent.CopyOnWriteArrayList;
 
+import org.apache.wicket.IRequestHandler;
 import org.apache.wicket.Request;
 import org.apache.wicket.ng.request.ICompoundRequestMapper;
-import org.apache.wicket.ng.request.IRequestHandler;
 import org.apache.wicket.ng.request.IRequestMapper;
 import org.apache.wicket.ng.request.Url;
 

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/mount/IMountedRequestMapper.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/mount/IMountedRequestMapper.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/mount/IMountedRequestMapper.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/mount/IMountedRequestMapper.java Mon Jan  4 01:03:29 2010
@@ -16,8 +16,8 @@
  */
 package org.apache.wicket.ng.request.mapper.mount;
 
+import org.apache.wicket.IRequestHandler;
 import org.apache.wicket.Request;
-import org.apache.wicket.ng.request.IRequestHandler;
 
 /**
  * TODO javadoc, explain "parameters resolved from the mount"

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/mount/MountMapper.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/mount/MountMapper.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/mount/MountMapper.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/mount/MountMapper.java Mon Jan  4 01:03:29 2010
@@ -16,8 +16,8 @@
  */
 package org.apache.wicket.ng.request.mapper.mount;
 
+import org.apache.wicket.IRequestHandler;
 import org.apache.wicket.Request;
-import org.apache.wicket.ng.request.IRequestHandler;
 import org.apache.wicket.ng.request.IRequestMapper;
 import org.apache.wicket.ng.request.Url;
 import org.apache.wicket.ng.request.mapper.AbstractMapper;

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/mount/UnmountedMapperAdapter.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/mount/UnmountedMapperAdapter.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/mount/UnmountedMapperAdapter.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/mount/UnmountedMapperAdapter.java Mon Jan  4 01:03:29 2010
@@ -16,8 +16,8 @@
  */
 package org.apache.wicket.ng.request.mapper.mount;
 
+import org.apache.wicket.IRequestHandler;
 import org.apache.wicket.Request;
-import org.apache.wicket.ng.request.IRequestHandler;
 import org.apache.wicket.ng.request.IRequestMapper;
 import org.apache.wicket.ng.request.Url;
 

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/mount/UnmountedRequestHandlerAdapter.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/mount/UnmountedRequestHandlerAdapter.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/mount/UnmountedRequestHandlerAdapter.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/mount/UnmountedRequestHandlerAdapter.java Mon Jan  4 01:03:29 2010
@@ -16,8 +16,8 @@
  */
 package org.apache.wicket.ng.request.mapper.mount;
 
+import org.apache.wicket.IRequestHandler;
 import org.apache.wicket.Request;
-import org.apache.wicket.ng.request.IRequestHandler;
 import org.apache.wicket.ng.request.Url;
 
 /**

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/parameters/IPageParametersEncoder.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/parameters/IPageParametersEncoder.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/parameters/IPageParametersEncoder.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/parameters/IPageParametersEncoder.java Mon Jan  4 01:03:29 2010
@@ -16,33 +16,33 @@
  */
 package org.apache.wicket.ng.request.mapper.parameters;
 
+import org.apache.wicket.IRequestHandler;
 import org.apache.wicket.Request;
-import org.apache.wicket.ng.request.IRequestHandler;
 import org.apache.wicket.ng.request.Url;
-import org.apache.wicket.ng.request.component.PageParametersNg;
+import org.apache.wicket.ng.request.component.PageParameters;
 
 /**
- * Encoder that can encode and decode {@link PageParametersNg} to/from URL.
+ * Encoder that can encode and decode {@link PageParameters} to/from URL.
  * 
  * @author Matej Knopp
  */
 public interface IPageParametersEncoder
 {
 	/**
-	 * Encode the given {@link PageParametersNg} instance into URL. The URL will be then merged with
+	 * Encode the given {@link PageParameters} instance into URL. The URL will be then merged with
 	 * the URL generated for {@link IRequestHandler}.
 	 * 
 	 * @param pageParameters
 	 * @return Url generated from the page parameters
 	 */
-	Url encodePageParameters(PageParametersNg pageParameters);
+	Url encodePageParameters(PageParameters pageParameters);
 
 	/**
-	 * Decodes the given URL to {@link PageParametersNg}. The URL will have all
+	 * Decodes the given URL to {@link PageParameters}. The URL will have all
 	 * {@link IRequestHandler} specified segments/parameters stripped.
 	 * 
 	 * @param request
-	 * @return {@link PageParametersNg} instance
+	 * @return {@link PageParameters} instance
 	 */
-	PageParametersNg decodePageParameters(Request request);
+	PageParameters decodePageParameters(Request request);
 }

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/parameters/SimplePageParametersEncoder.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/parameters/SimplePageParametersEncoder.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/parameters/SimplePageParametersEncoder.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/parameters/SimplePageParametersEncoder.java Mon Jan  4 01:03:29 2010
@@ -21,7 +21,7 @@
 import org.apache.wicket.Request;
 import org.apache.wicket.ng.request.Url;
 import org.apache.wicket.ng.request.Url.QueryParameter;
-import org.apache.wicket.ng.request.component.PageParametersNg;
+import org.apache.wicket.ng.request.component.PageParameters;
 import org.apache.wicket.util.string.StringValue;
 
 /**
@@ -41,9 +41,9 @@
 	/**
 	 * @see org.apache.wicket.ng.request.mapper.parameters.IPageParametersEncoder#decodePageParameters(org.apache.wicket.Request)
 	 */
-	public PageParametersNg decodePageParameters(Request request)
+	public PageParameters decodePageParameters(Request request)
 	{
-		PageParametersNg parameters = new PageParametersNg();
+		PageParameters parameters = new PageParameters();
 
 		int i = 0;
 		for (String s : request.getUrl().getSegments())
@@ -61,9 +61,9 @@
 	}
 
 	/**
-	 * @see org.apache.wicket.ng.request.mapper.parameters.IPageParametersEncoder#encodePageParameters(org.apache.wicket.ng.request.component.PageParametersNg)
+	 * @see org.apache.wicket.ng.request.mapper.parameters.IPageParametersEncoder#encodePageParameters(org.apache.wicket.ng.request.component.PageParameters)
 	 */
-	public Url encodePageParameters(PageParametersNg pageParameters)
+	public Url encodePageParameters(PageParameters pageParameters)
 	{
 		Url url = new Url();
 

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/IResource.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/IResource.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/IResource.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/IResource.java Mon Jan  4 01:03:29 2010
@@ -21,7 +21,7 @@
 
 import org.apache.wicket.Request;
 import org.apache.wicket.Response;
-import org.apache.wicket.ng.request.component.PageParametersNg;
+import org.apache.wicket.ng.request.component.PageParameters;
 import org.apache.wicket.ng.request.handler.resource.ResourceRequestHandler;
 import org.apache.wicket.util.lang.Checks;
 
@@ -45,7 +45,7 @@
 		private final Locale locale;
 		private final String style;
 		private final String variation;
-		private final PageParametersNg parameters;
+		private final PageParameters parameters;
 
 		/**
 		 * Construct.
@@ -59,7 +59,7 @@
 		 * @param parameters
 		 */
 		public Attributes(Request request, Response response, Locale locale, String style,
-			String variation, PageParametersNg parameters)
+			String variation, PageParameters parameters)
 		{
 			Checks.argumentNotNull(request, "request");
 			Checks.argumentNotNull(response, "response");
@@ -132,7 +132,7 @@
 		 * 
 		 * @return page parameters or <code>null</code>
 		 */
-		public PageParametersNg getParameters()
+		public PageParameters getParameters()
 		{
 			return parameters;
 		}

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/pageStore/DefaultPageManagerContext.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/pageStore/DefaultPageManagerContext.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/pageStore/DefaultPageManagerContext.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/pageStore/DefaultPageManagerContext.java Mon Jan  4 01:03:29 2010
@@ -19,8 +19,8 @@
 import java.io.Serializable;
 
 import org.apache.wicket.MetaDataKey;
-import org.apache.wicket.RequestCycle;
 import org.apache.wicket.Session;
+import org.apache.wicket.ng.request.cycle.RequestCycle;
 
 /**
  * Wicket's default page manager context

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/pageStore/DiskDataStore.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/pageStore/DiskDataStore.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/pageStore/DiskDataStore.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/pageStore/DiskDataStore.java Mon Jan  4 01:03:29 2010
@@ -33,10 +33,10 @@
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 
+import org.apache.wicket.Application;
 import org.apache.wicket.WicketRuntimeException;
-import org.apache.wicket.ng.Application;
-import org.apache.wicket.ng.protocol.http.WebApplication;
 import org.apache.wicket.pageStore.PageWindowManager.PageWindow;
+import org.apache.wicket.protocol.http.WebApplication;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/BufferedHttpServletResponse.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/BufferedHttpServletResponse.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/BufferedHttpServletResponse.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/BufferedHttpServletResponse.java Mon Jan  4 01:03:29 2010
@@ -32,7 +32,6 @@
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletResponse;
 
-import org.apache.wicket.Response;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.util.io.StringBufferWriter;
 import org.apache.wicket.util.string.AppendingStringBuffer;
@@ -441,22 +440,6 @@
 	}
 
 	/**
-	 * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API.
-	 * 
-	 * @param response
-	 */
-	public final void filter(Response response)
-	{
-		isOpen();
-		AppendingStringBuffer buffer = sbw.getStringBuffer();
-		if (redirect == null && buffer.length() != 0)
-		{
-			buffer = response.filter(buffer);
-			sbw.setStringBuffer(buffer);
-		}
-	}
-
-	/**
 	 * 
 	 */
 	public void close()

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/BufferedWebResponse.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/BufferedWebResponse.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/BufferedWebResponse.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/BufferedWebResponse.java Mon Jan  4 01:03:29 2010
@@ -16,125 +16,260 @@
  */
 package org.apache.wicket.protocol.http;
 
-import javax.servlet.http.HttpServletResponse;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
-import org.apache.wicket.WicketRuntimeException;
-import org.apache.wicket.util.string.AppendingStringBuffer;
+import javax.servlet.http.Cookie;
 
+import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.util.lang.Checks;
 
 /**
- * Subclass of WebResponse which buffers output and any redirection.
+ * Subclass of {@link WebResponse} that buffers the actions and performs those on another response.
  * 
- * @author Jonathan Locke
+ * @see #writeTo(WebResponse)
+ * 
+ * @author Matej Knopp
  */
-public class BufferedWebResponse extends WebResponse
+public abstract class BufferedWebResponse extends WebResponse
 {
-	/** URL to redirect to when response is flushed, if any */
-	private String redirectURL;
-
-	/** Buffer to hold page */
-	private AppendingStringBuffer buffer = new AppendingStringBuffer(4096);
 
 	/**
-	 * Constructor for testing harness.
+	 * Construct.
 	 */
-	protected BufferedWebResponse()
+	public BufferedWebResponse()
 	{
 	}
 
-	/**
-	 * Package private constructor.
-	 * 
-	 * @param httpServletResponse
-	 *            The servlet response object
-	 */
-	public BufferedWebResponse(final HttpServletResponse httpServletResponse)
+	private static class CookieEntry
 	{
-		super(httpServletResponse);
+		Cookie cookie;
+		boolean add;
 	}
 
-	/**
-	 * Flushes the response buffer by doing a redirect or writing out the buffer. NOTE: The servlet
-	 * container will close the response output stream.
-	 */
+	private final List<CookieEntry> cookieEntries = new ArrayList<CookieEntry>();
+
+	@Override
+	public void addCookie(Cookie cookie)
+	{
+		CookieEntry entry = new CookieEntry();
+		entry.cookie = cookie;
+		entry.add = true;
+		cookieEntries.add(entry);
+	}
+
+	@Override
+	public void clearCookie(Cookie cookie)
+	{
+		CookieEntry entry = new CookieEntry();
+		entry.cookie = cookie;
+		entry.add = false;
+		cookieEntries.add(entry);
+	}
+
+	private Long contentLength = null;
+
+	@Override
+	public void setContentLength(long length)
+	{
+		contentLength = length;
+	}
+
+	private String contentType = null;
+
+	@Override
+	public void setContentType(String mimeType)
+	{
+		contentType = mimeType;
+	}
+
+	private final Map<String, Long> dateHeaders = new HashMap<String, Long>();
+
+	@Override
+	public void setDateHeader(String name, long date)
+	{
+		dateHeaders.put(name, date);
+	}
+
+	private final Map<String, String> headers = new HashMap<String, String>();
+
+	@Override
+	public void setHeader(String name, String value)
+	{
+		headers.put(name, value);
+	}
+
+	private StringBuilder builder;
+	private ByteArrayOutputStream stream;
+
 	@Override
-	public void close()
+	public void write(CharSequence sequence)
 	{
-		// If a redirection was specified
-		if (redirectURL != null)
+		if (stream != null)
 		{
-			// actually redirect
-			super.redirect(redirectURL);
+			throw new IllegalStateException(
+				"Can't call write(CharSequence) after write(byte[]) has been called.");
 		}
-		else
+
+		if (builder == null)
 		{
-			// Write the buffer to the response stream
-			if (buffer.length() != 0)
-			{
-				super.write(buffer);
-			}
+			builder = new StringBuilder(4096);
 		}
+
+		builder.append(sequence);
 	}
 
-	/**
-	 * @see org.apache.wicket.Response#reset()
-	 */
 	@Override
-	public void reset()
+	public void write(byte[] array)
+	{
+		if (builder != null)
+		{
+			throw new IllegalStateException(
+				"Can't call write(byte[]) after write(CharSequence) has been called.");
+		}
+		if (stream == null)
+		{
+			stream = new ByteArrayOutputStream(array.length);
+		}
+		try
+		{
+			stream.write(array);
+		}
+		catch (IOException e)
+		{
+			throw new WicketRuntimeException(e);
+		}
+	}
+
+	private String redirectUrl = null;
+
+	@Override
+	public void sendRedirect(String url)
 	{
-		redirectURL = null;
-		buffer.clear();
+		redirectUrl = url;
 	}
 
-	/**
-	 * Saves url to redirect to when buffered response is flushed. Implementations should encode the
-	 * URL to make sure cookie-less operation is supported in case clients forgot.
-	 * 
-	 * @param url
-	 *            The URL to redirect to
-	 */
+	private Integer statusCode = null;
+
 	@Override
-	public final void redirect(final String url)
+	public void setStatus(int sc)
 	{
-		if (redirectURL != null)
-		{
-			throw new WicketRuntimeException("Already redirecting to '" + redirectURL +
-				"'. Cannot redirect more than once");
-		}
-		// encode to make sure no caller forgot this
-		redirectURL = encodeURL(url).toString();
+		statusCode = sc;
 	}
 
-	/**
-	 * Writes string to response output.
-	 * 
-	 * @param string
-	 *            The string to write
-	 */
+	static class Error
+	{
+		int sc;
+		String message;
+	}
+
+	private Error error = null;
+
 	@Override
-	public void write(final CharSequence string)
+	public void sendError(int sc, String msg)
 	{
-		buffer.append(string);
+		error = new Error();
+		error.sc = sc;
+		error.message = msg;
 	}
 
 	/**
-	 * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API.
+	 * Writes the content of the buffer to the specified response. Also sets the properties and and
+	 * headers.
+	 * 
+	 * @param response
 	 */
-	public final void filter()
+	public void writeTo(final WebResponse response)
 	{
-		if (redirectURL == null && buffer.length() != 0)
+		Checks.argumentNotNull(response, "response");
+
+		for (CookieEntry e : cookieEntries)
+		{
+			if (e.add)
+			{
+				response.addCookie(e.cookie);
+			}
+			else
+			{
+				response.clearCookie(e.cookie);
+			}
+		}
+		if (contentLength != null)
+		{
+			response.setContentLength(contentLength);
+		}
+		if (contentType != null)
+		{
+			response.setContentType(contentType);
+		}
+		for (String s : dateHeaders.keySet())
+		{
+			response.setDateHeader(s, dateHeaders.get(s));
+		}
+		for (String s : headers.keySet())
+		{
+			response.setHeader(s, headers.get(s));
+		}
+		if (statusCode != null)
+		{
+			response.setStatus(statusCode);
+		}
+		if (error != null)
+		{
+			response.sendError(error.sc, error.message);
+		}
+		if (redirectUrl != null)
 		{
-			buffer = filter(buffer);
+			response.sendRedirect(redirectUrl);
+		}
+		if (builder != null)
+		{
+			response.write(builder);
+		}
+		else if (stream != null)
+		{
+			final boolean copied[] = { false };
+			try
+			{
+				// try to avoid copying the array
+				stream.writeTo(new OutputStream()
+				{
+					@Override
+					public void write(int b) throws IOException
+					{
+
+					}
+
+					@Override
+					public void write(byte[] b, int off, int len) throws IOException
+					{
+						if (off == 0 && len == b.length)
+						{
+							response.write(b);
+							copied[0] = true;
+						}
+					}
+				});
+			}
+			catch (IOException e1)
+			{
+				throw new WicketRuntimeException(e1);
+			}
+			if (copied[0] == false)
+			{
+				response.write(stream.toByteArray());
+			}
 		}
 	}
 
-	/**
-	 * 
-	 * @see java.lang.Object#toString()
-	 */
 	@Override
-	public String toString()
+	public boolean isRedirect()
 	{
-		return buffer.toString();
+		return redirectUrl != null;
 	}
 }

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/ClientProperties.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/ClientProperties.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/ClientProperties.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/ClientProperties.java Mon Jan  4 01:03:29 2010
@@ -22,8 +22,8 @@
 import javax.servlet.http.Cookie;
 
 import org.apache.wicket.IClusterable;
-import org.apache.wicket.RequestCycle;
 import org.apache.wicket.markup.html.pages.BrowserInfoPage;
+import org.apache.wicket.ng.request.cycle.RequestCycle;
 import org.apache.wicket.util.string.AppendingStringBuffer;
 
 

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/IRequestLogger.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/IRequestLogger.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/IRequestLogger.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/IRequestLogger.java Mon Jan  4 01:03:29 2010
@@ -18,7 +18,7 @@
 
 import java.util.List;
 
-import org.apache.wicket.IRequestTarget;
+import org.apache.wicket.IRequestHandler;
 import org.apache.wicket.protocol.http.RequestLogger.RequestData;
 import org.apache.wicket.protocol.http.RequestLogger.SessionData;
 import org.apache.wicket.session.ISessionStore;
@@ -118,7 +118,7 @@
 	 * @param target
 	 *            the response target
 	 */
-	public abstract void logResponseTarget(IRequestTarget target);
+	public abstract void logResponseTarget(IRequestHandler target);
 
 	/**
 	 * Sets the target that was the event target for the current request
@@ -126,6 +126,6 @@
 	 * @param target
 	 *            the event target
 	 */
-	public abstract void logEventTarget(IRequestTarget target);
+	public abstract void logEventTarget(IRequestHandler target);
 
 }
\ No newline at end of file

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/RequestUtils.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/RequestUtils.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/RequestUtils.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/RequestUtils.java Mon Jan  4 01:03:29 2010
@@ -22,9 +22,7 @@
 import java.util.List;
 import java.util.Map;
 
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.wicket.RequestCycle;
+import org.apache.wicket.ng.request.component.PageParameters;
 import org.apache.wicket.util.string.Strings;
 import org.apache.wicket.util.value.ValueMap;
 
@@ -62,6 +60,35 @@
 	}
 
 	/**
+	 * Decode the provided queryString as a series of key/ value pairs and set them in the provided
+	 * value map.
+	 * 
+	 * @param queryString
+	 *            string to decode, uses '&' to separate parameters and '=' to separate key from
+	 *            value
+	 * @param params
+	 *            parameters map to write the found key/ value pairs to
+	 */
+	public static void decodeParameters(String queryString, PageParameters params)
+	{
+		final String[] paramTuples = queryString.split("&");
+		for (int t = 0; t < paramTuples.length; t++)
+		{
+			final String[] bits = paramTuples[t].split("=");
+			if (bits.length == 2)
+			{
+				params.addNamedParameter(WicketURLDecoder.QUERY_INSTANCE.decode(bits[0]),
+					WicketURLDecoder.QUERY_INSTANCE.decode(bits[1]));
+			}
+			else
+			{
+				params.addNamedParameter(WicketURLDecoder.QUERY_INSTANCE.decode(bits[0]), "");
+			}
+		}
+	}
+
+
+	/**
 	 * decores url parameters form <code>queryString</code> into <code>parameters</code> map
 	 * 
 	 * @param queryString
@@ -144,18 +171,6 @@
 	{
 	}
 
-	/**
-	 * Calculates absolute path to url relative to another absolute url.
-	 * 
-	 * @param relativePagePath
-	 *            path, relative to requestPath
-	 * @return absolute path for given url
-	 */
-	public final static String toAbsolutePath(final String relativePagePath)
-	{
-		HttpServletRequest req = ((WebRequest)RequestCycle.get().getRequest()).getHttpServletRequest();
-		return toAbsolutePath(req.getRequestURL().toString(), relativePagePath);
-	}
 
 	/**
 	 * Calculates absolute path to url relative to another absolute url.

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebApplication.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebApplication.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebApplication.java Mon Jan  4 01:03:29 2010
@@ -21,15 +21,12 @@
 import java.util.concurrent.ConcurrentHashMap;
 
 import javax.servlet.ServletContext;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 
 import org.apache.wicket.Application;
-import org.apache.wicket.IRequestTarget;
+import org.apache.wicket.IRequestHandler;
 import org.apache.wicket.Page;
 import org.apache.wicket.Request;
-import org.apache.wicket.RequestCycle;
 import org.apache.wicket.Response;
 import org.apache.wicket.Session;
 import org.apache.wicket.WicketRuntimeException;
@@ -38,20 +35,22 @@
 import org.apache.wicket.markup.html.pages.InternalErrorPage;
 import org.apache.wicket.markup.html.pages.PageExpiredErrorPage;
 import org.apache.wicket.markup.resolver.AutoLinkResolver;
-import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
-import org.apache.wicket.request.IRequestCycleProcessor;
-import org.apache.wicket.request.target.coding.BookmarkablePageRequestTargetUrlCodingStrategy;
-import org.apache.wicket.request.target.coding.IRequestTargetUrlCodingStrategy;
-import org.apache.wicket.request.target.coding.PackageRequestTargetUrlCodingStrategy;
-import org.apache.wicket.request.target.coding.SharedResourceRequestTargetUrlCodingStrategy;
+import org.apache.wicket.ng.ThreadContext;
+import org.apache.wicket.ng.request.IRequestMapper;
+import org.apache.wicket.ng.request.Url;
+import org.apache.wicket.ng.request.handler.impl.RenderPageRequestHandler;
+import org.apache.wicket.ng.request.handler.impl.render.RenderPageRequestHandlerDelegate;
+import org.apache.wicket.ng.request.handler.impl.render.WebRenderPageRequestHandlerDelegate;
+import org.apache.wicket.ng.request.mapper.MountedMapper;
+import org.apache.wicket.ng.resource.ResourceReference;
 import org.apache.wicket.session.HttpSessionStore;
 import org.apache.wicket.session.ISessionStore;
 import org.apache.wicket.util.collections.MostRecentlyUsedMap;
 import org.apache.wicket.util.file.FileCleaner;
 import org.apache.wicket.util.file.IResourceFinder;
 import org.apache.wicket.util.file.WebApplicationPath;
+import org.apache.wicket.util.lang.Checks;
 import org.apache.wicket.util.lang.Generics;
-import org.apache.wicket.util.lang.PackageName;
 import org.apache.wicket.util.watch.IModificationWatcher;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -133,9 +132,6 @@
 	 */
 	private final ConcurrentHashMap<String, Map<String, BufferedHttpServletResponse>> bufferedResponses = Generics.newConcurrentHashMap();
 
-	/** the default request cycle processor implementation. */
-	private IRequestCycleProcessor requestCycleProcessor;
-
 	/**
 	 * the prefix for storing variables in the actual session (typically {@link HttpSession} for
 	 * this application instance.
@@ -188,22 +184,6 @@
 	}
 
 	/**
-	 * Gets the default request cycle processor (with lazy initialization). This is the
-	 * {@link IRequestCycleProcessor} that will be used by {@link RequestCycle}s when custom
-	 * implementations of the request cycle do not provide their own customized versions.
-	 * 
-	 * @return the default request cycle processor
-	 */
-	public final IRequestCycleProcessor getRequestCycleProcessor()
-	{
-		if (requestCycleProcessor == null)
-		{
-			requestCycleProcessor = newRequestCycleProcessor();
-		}
-		return requestCycleProcessor;
-	}
-
-	/**
 	 * Gets the servlet context for this application. Use this to get references to absolute paths,
 	 * global web.xml parameters (&lt;context-param&gt;), etc.
 	 * 
@@ -261,10 +241,10 @@
 	}
 
 	/**
-	 * @see org.apache.wicket.Application#logEventTarget(org.apache.wicket.IRequestTarget)
+	 * @see org.apache.wicket.Application#logEventTarget(org.apache.wicket.IRequestHandler)
 	 */
 	@Override
-	public void logEventTarget(IRequestTarget target)
+	public void logEventTarget(IRequestHandler target)
 	{
 		super.logEventTarget(target);
 		IRequestLogger rl = getRequestLogger();
@@ -275,10 +255,10 @@
 	}
 
 	/**
-	 * @see org.apache.wicket.Application#logResponseTarget(org.apache.wicket.IRequestTarget)
+	 * @see org.apache.wicket.Application#logResponseTarget(org.apache.wicket.IRequestHandler)
 	 */
 	@Override
-	public void logResponseTarget(IRequestTarget target)
+	public void logResponseTarget(IRequestHandler target)
 	{
 		super.logResponseTarget(target);
 		IRequestLogger rl = getRequestLogger();
@@ -291,36 +271,16 @@
 	/**
 	 * Mounts an encoder at the given path.
 	 * 
-	 * @param encoder
+	 * @param mapper
 	 *            the encoder that will be used for this mount
 	 */
-	public final void mount(IRequestTargetUrlCodingStrategy encoder)
+	public final void mount(IRequestMapper mapper)
 	{
-		if (encoder == null)
-		{
-			throw new IllegalArgumentException("Encoder must be not null");
-		}
+		Checks.argumentNotNull(mapper, "mapper");
 
-		getRequestCycleProcessor().getRequestCodingStrategy().mount(encoder);
+		getRootRequestMapper().register(mapper);
 	}
 
-	/**
-	 * Mounts all bookmarkable pages at the given path.
-	 * 
-	 * @param path
-	 *            the path to mount the bookmarkable page class on
-	 * @param packageName
-	 *            the name of the package for which all bookmarkable pages or sharedresources should
-	 *            be mounted
-	 */
-	public final void mount(final String path, final PackageName packageName)
-	{
-		if (packageName == null)
-		{
-			throw new IllegalArgumentException("PackageName cannot be null");
-		}
-		mount(new PackageRequestTargetUrlCodingStrategy(path, packageName));
-	}
 
 	/**
 	 * Mounts a bookmarkable page class to the given path.
@@ -336,40 +296,23 @@
 	public final <T extends Page> void mountBookmarkablePage(final String path,
 		final Class<T> bookmarkablePageClass)
 	{
-		mount(new BookmarkablePageRequestTargetUrlCodingStrategy(path, bookmarkablePageClass, null));
+		mount(new MountedMapper(path, bookmarkablePageClass));
 	}
 
-	/**
-	 * Mounts a bookmarkable page class to the given pagemap and path.
-	 * 
-	 * @param <T>
-	 *            type of page
-	 * 
-	 * @param path
-	 *            the path to mount the bookmarkable page class on
-	 * @param pageMapName
-	 *            name of the pagemap this mount is for
-	 * @param bookmarkablePageClass
-	 *            the bookmarkable page class to mount
-	 */
-	public final <T extends Page> void mountBookmarkablePage(final String path,
-		final String pageMapName, final Class<T> bookmarkablePageClass)
-	{
-		mount(new BookmarkablePageRequestTargetUrlCodingStrategy(path, bookmarkablePageClass,
-			pageMapName));
-	}
 
 	/**
 	 * Mounts a shared resource class to the given path.
 	 * 
 	 * @param path
 	 *            the path to mount the resource class on
-	 * @param resourceKey
-	 *            the shared key of the resource being mounted
+	 * @param reference
+	 *            resource reference to be mounted
 	 */
-	public final void mountSharedResource(final String path, final String resourceKey)
+	public final void mountSharedResource(final String path, final ResourceReference reference)
 	{
-		mount(new SharedResourceRequestTargetUrlCodingStrategy(path, resourceKey));
+		getResourceReferenceRegistry().registerResourceReference(reference);
+		// TODO NG Implement mounted resources mapper
+		throw new UnsupportedOperationException("Implement Mapper");
 	}
 
 
@@ -384,17 +327,7 @@
 	 */
 	public final void addIgnoreMountPath(String path)
 	{
-		getRequestCycleProcessor().getRequestCodingStrategy().addIgnoreMountPath(path);
-	}
-
-	/*
-	 * @see org.apache.wicket.Application#newRequestCycle(org.apache.wicket.Request,
-	 * org.apache.wicket.Response)
-	 */
-	@Override
-	public RequestCycle newRequestCycle(final Request request, final Response response)
-	{
-		return new WebRequestCycle(this, (WebRequest)request, (WebResponse)response);
+		throw new UnsupportedOperationException();
 	}
 
 	/**
@@ -435,17 +368,6 @@
 	}
 
 	/**
-	 * Unmounts whatever encoder is mounted at a given path.
-	 * 
-	 * @param path
-	 *            the path of the encoder to unmount
-	 */
-	public final void unmount(String path)
-	{
-		getRequestCycleProcessor().getRequestCodingStrategy().unmount(path);
-	}
-
-	/**
 	 * Initialize; if you need the wicket servlet for initialization, e.g. because you want to read
 	 * an initParameter from web.xml or you want to read a resource from the servlet's context path,
 	 * you can override this method and provide custom initialization. This method is called right
@@ -461,7 +383,7 @@
 	 * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT CALL IT.
 	 */
 	@Override
-	protected void internalDestroy()
+	public void internalDestroy()
 	{
 		// destroy the resource watcher
 		IModificationWatcher resourceWatcher = getResourceSettings().getResourceWatcher(false);
@@ -580,20 +502,6 @@
 	}
 
 	/**
-	 * Gets a new request cycle processor for web requests. May be replaced by subclasses which wish
-	 * to use their own implementation of IRequestCycleProcessor.
-	 * 
-	 * NOTE this can't be moved to application as portlets use two different request cycle
-	 * processors, and hence have two different methods for them, depending on the kind of request.
-	 * 
-	 * @return IRequestCycleProcessor
-	 */
-	protected IRequestCycleProcessor newRequestCycleProcessor()
-	{
-		return new WebRequestCycleProcessor();
-	}
-
-	/**
 	 * @see org.apache.wicket.Application#newSessionStore()
 	 */
 	@Override
@@ -602,31 +510,6 @@
 		return new HttpSessionStore();
 	}
 
-	/**
-	 * Create a new WebRequest. Subclasses of WebRequest could e.g. decode and obfuscated URL which
-	 * has been encoded by an appropriate WebResponse.
-	 * 
-	 * @param servletRequest
-	 * @return a WebRequest object
-	 */
-	protected WebRequest newWebRequest(final HttpServletRequest servletRequest)
-	{
-		return new ServletWebRequest(servletRequest);
-	}
-
-	/**
-	 * Create a WebResponse. Subclasses of WebRequest could e.g. encode wicket's default URL and
-	 * hide the details from the user. A appropriate WebRequest must be implemented and configured
-	 * to decode the encoded URL.
-	 * 
-	 * @param servletResponse
-	 * @return a WebResponse object
-	 */
-	protected WebResponse newWebResponse(final HttpServletResponse servletResponse)
-	{
-		return (getRequestCycleSettings().getBufferResponse() ? new BufferedWebResponse(
-			servletResponse) : new WebResponse(servletResponse));
-	}
 
 	/**
 	 * Creates a new ajax request target used to control ajax responses
@@ -716,6 +599,33 @@
 			+ "********************************************************************\n");
 	}
 
+	// TODO: Do this properly
+	private final Map<String, BufferedWebResponse> storedResponses = new ConcurrentHashMap<String, BufferedWebResponse>();
+
+	public boolean hasBufferedResponse(String sessionId, Url url)
+	{
+		String key = sessionId + url.toString();
+		return storedResponses.containsKey(key);
+	}
+
+	public BufferedWebResponse getAndRemoveBufferedResponse(String sessionId, Url url)
+	{
+		String key = sessionId + url.toString();
+		return storedResponses.remove(key);
+	}
+
+	/**
+	 * 
+	 * @param sessionId
+	 * @param url
+	 * @param response
+	 */
+	public void storeBufferedResponse(String sessionId, Url url, BufferedWebResponse response)
+	{
+		String key = sessionId + url.toString();
+		storedResponses.put(key, response);
+	}
+
 	// TODO remove after deprecation release
 
 	/**
@@ -744,4 +654,17 @@
 		}
 		return null;
 	}
+
+	@Override
+	public RenderPageRequestHandlerDelegate getRenderPageRequestHandlerDelegate(
+		RenderPageRequestHandler renderPageRequestHandler)
+	{
+		return new WebRenderPageRequestHandlerDelegate(renderPageRequestHandler);
+	}
+
+	@Override
+	public void set()
+	{
+		ThreadContext.setApplication(this);
+	}
 }

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequest.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequest.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequest.java Mon Jan  4 01:03:29 2010
@@ -19,54 +19,38 @@
 import java.util.Date;
 import java.util.List;
 import java.util.Locale;
-import java.util.Map;
 
 import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
 
 import org.apache.wicket.Request;
 import org.apache.wicket.ng.request.IRequestParameters;
 import org.apache.wicket.ng.request.Url;
-import org.apache.wicket.util.lang.Bytes;
 
 
 /**
- * Subclass of Request for HTTP protocol requests which holds an underlying HttpServletRequest
- * object. A variety of convenience methods are available that operate on the HttpServletRequest
- * object. These methods do things such as providing access to parameters, cookies, URLs and path
- * information.
+ * Base class for request that provides additional web-related information.
  * 
- * @author Jonathan Locke
+ * @author Matej Knopp
  */
 public abstract class WebRequest extends Request
 {
 	/**
-	 * Get the requests' cookies
-	 * 
-	 * @return Cookies
+	 * @return request cookies
 	 */
-	public Cookie[] getCookies()
-	{
-		return getHttpServletRequest().getCookies();
-	}
+	public abstract Cookie[] getCookies();
 
 	/**
-	 * Get the requests' cookie by name
-	 * 
-	 * @param name
-	 *            The name of the cookie to be looked up
-	 * 
-	 * @return A cookie, null if not found.
-	 * @since 1.3.0-beta4
+	 * @param cookieName
+	 * @return cookie with specified name or <code>null</code> if the cookie does not exist
 	 */
-	public Cookie getCookie(String name)
+	public Cookie getCookie(String cookieName)
 	{
 		Cookie[] cookies = getCookies();
 		if (cookies != null && cookies.length > 0)
 		{
 			for (int i = 0; i < cookies.length; i++)
 			{
-				if (cookies[i].getName().equals(name))
+				if (cookies[i].getName().equals(cookieName))
 				{
 					return cookies[i];
 				}
@@ -76,79 +60,30 @@
 	}
 
 	/**
-	 * Gets the wrapped http servlet request object.
-	 * <p>
-	 * WARNING: it is usually a bad idea to depend on the http servlet request directly. Please use
-	 * the classes and methods that are exposed by Wicket (such as {@link org.apache.wicket.Session}
-	 * instead. Send an email to the mailing list in case it is not clear how to do things or you
-	 * think you miss functionality which causes you to depend on this directly.
-	 * </p>
-	 * 
-	 * @return the wrapped http serlvet request object.
-	 */
-	public abstract HttpServletRequest getHttpServletRequest();
-
-	/**
-	 * Returns the preferred <code>Locale</code> that the client will accept content in, based on
-	 * the Accept-Language header. If the client request doesn't provide an Accept-Language header,
-	 * this method returns the default locale for the server.
-	 * 
-	 * @return the preferred <code>Locale</code> for the client
-	 */
-	@Override
-	public abstract Locale getLocale();
-
-	/**
-	 * Gets the request parameter with the given key.
-	 * 
-	 * @param key
-	 *            Parameter name
-	 * @return Parameter value
-	 */
-	@Override
-	public abstract String getParameter(final String key);
-
-	/**
-	 * Gets the request parameters.
-	 * 
-	 * @return Map of parameters
-	 */
-	@Override
-	public abstract Map<String, String[]> getParameterMap();
-
-	/**
-	 * Gets the request parameters with the given key.
-	 * 
-	 * @param key
-	 *            Parameter name
-	 * @return Parameter values
-	 */
-	@Override
-	public abstract String[] getParameters(final String key);
-
-	/**
-	 * Gets the servlet path.
+	 * Returns all the values of the specified request header.
 	 * 
-	 * @return Servlet path
+	 * @param name
+	 * @return unmodifiable list of header values
 	 */
-	public abstract String getServletPath();
+	public abstract List<String> getHeaders(String name);
 
 	/**
-	 * Create a runtime context type specific (e.g. Servlet or Portlet) MultipartWebRequest wrapper
-	 * for handling multipart content uploads.
+	 * Returns the value of the specified request header as a <code>String</code>
 	 * 
-	 * @param maxSize
-	 *            the maximum size this request may be
-	 * @return new WebRequest wrapper implementing MultipartWebRequest
+	 * @param name
+	 * @return string value of request header
 	 */
-	public abstract WebRequest newMultipartWebRequest(Bytes maxSize);
+	public abstract String getHeader(String name);
 
 	/**
-	 * Is the request an ajax request?
+	 * Returns the value of the specified request header as a <code>long</code> value that
+	 * represents a <code>Date</code> object. Use this method with headers that contain dates, such
+	 * as <code>If-Modified-Since</code>.
 	 * 
-	 * @return True if the ajax is an ajax request. False if it's not.
+	 * @param name
+	 * @return date value of request header
 	 */
-	public abstract boolean isAjax();
+	public abstract long getDateHeader(String name);
 
 	/**
 	 * Convenience method for retrieving If-Modified-Since header.
@@ -169,30 +104,20 @@
 	}
 
 	/**
-	 * Returns the value of the specified request header as a <code>long</code> value that
-	 * represents a <code>Date</code> object. Use this method with headers that contain dates, such
-	 * as <code>If-Modified-Since</code>.
-	 * 
-	 * @param name
-	 * @return date value of request header
-	 */
-	public abstract long getDateHeader(String name);
-
-	/**
-	 * Returns all the values of the specified request header.
-	 * 
-	 * @param name
-	 * @return unmodifiable list of header values
+	 * Marker parameter for AjaxRequest.
 	 */
-	public abstract List<String> getHeaders(String name);
+	public static final String PARAM_AJAX = "wicket:ajax";
 
 	/**
-	 * Returns the value of the specified request header as a <code>String</code>
+	 * Returns whether this request is an Ajax request. This implementation only checks for value of
+	 * wicket:ajax url parameter. Subclasses can use other approach.
 	 * 
-	 * @param name
-	 * @return string value of request header
+	 * @return <code>true</code> if this request is an ajax request, <code>false</code> otherwise.
 	 */
-	public abstract String getHeader(String name);
+	public boolean isAjax()
+	{
+		return getRequestParameters().getParameterValue(PARAM_AJAX).toBoolean(false);
+	}
 
 	/**
 	 * Returns request with specified URL and same POST parameters as this request.
@@ -204,7 +129,6 @@
 	@Override
 	public WebRequest requestWithUrl(final Url url)
 	{
-		final WebRequest delegate = this;
 		return new WebRequest()
 		{
 			@Override
@@ -248,72 +172,7 @@
 			{
 				return WebRequest.this.getHeaders(name);
 			}
-
-			@Override
-			public HttpServletRequest getHttpServletRequest()
-			{
-				return delegate.getHttpServletRequest();
-			}
-
-			@Override
-			public String getParameter(String key)
-			{
-				return delegate.getParameter(key);
-			}
-
-			@Override
-			public Map<String, String[]> getParameterMap()
-			{
-				return delegate.getParameterMap();
-			}
-
-			@Override
-			public String[] getParameters(String key)
-			{
-				return delegate.getParameters(key);
-			}
-
-			@Override
-			public String getServletPath()
-			{
-				return delegate.getServletPath();
-			}
-
-			@Override
-			public boolean isAjax()
-			{
-				return delegate.isAjax();
-			}
-
-			@Override
-			public WebRequest newMultipartWebRequest(Bytes maxSize)
-			{
-				return delegate.newMultipartWebRequest(maxSize);
-			}
-
-			@Override
-			public String getPath()
-			{
-				return delegate.getPath();
-			}
-
-			@Override
-			public String getQueryString()
-			{
-				return delegate.getQueryString();
-			}
-
-			@Override
-			public String getRelativePathPrefixToContextRoot()
-			{
-				return delegate.getRelativePathPrefixToContextRoot();
-			}
-
-			@Override
-			public String getRelativePathPrefixToWicketHandler()
-			{
-				return delegate.getRelativePathPrefixToWicketHandler();
-			}
 		};
 	}
+
 }

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebResponse.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebResponse.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebResponse.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebResponse.java Mon Jan  4 01:03:29 2010
@@ -17,76 +17,26 @@
 package org.apache.wicket.protocol.http;
 
 import java.io.IOException;
-import java.io.OutputStream;
-import java.util.Locale;
 
 import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletResponse;
 
-import org.apache.wicket.Application;
 import org.apache.wicket.Response;
-import org.apache.wicket.WicketRuntimeException;
-import org.apache.wicket.util.string.AppendingStringBuffer;
 import org.apache.wicket.util.string.Strings;
-import org.apache.wicket.util.time.Time;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 
 /**
- * Implements responses over the HTTP protocol by holding an underlying HttpServletResponse object
- * and providing convenience methods for using that object. Convenience methods include methods
- * which: add a cookie, close the stream, encode a URL, redirect a request to another resource,
- * determine if a redirect has been issued, set the content type, set the locale and, most
- * importantly, write a String to the response output.
+ * Base class for web-related responses.
  * 
- * @author Jonathan Locke
+ * @author Matej Knopp
  */
-public class WebResponse extends Response
+public abstract class WebResponse extends Response
 {
-	/** Log. */
-	private static final Logger log = LoggerFactory.getLogger(WebResponse.class);
-
-	/** True if response is a redirect. */
-	protected boolean redirect;
-
-	/** The underlying response object. */
-	private final HttpServletResponse httpServletResponse;
-
-	/** Is the request an ajax request? */
-	private boolean ajax;
-
-	/**
-	 * Constructor for testing harness.
-	 */
-	public WebResponse()
-	{
-		httpServletResponse = null;
-	}
-
-	/**
-	 * Package private constructor.
-	 * 
-	 * @param httpServletResponse
-	 *            The servlet response object
-	 */
-	public WebResponse(final HttpServletResponse httpServletResponse)
-	{
-		this.httpServletResponse = httpServletResponse;
-	}
-
 	/**
 	 * Add a cookie to the web response
 	 * 
 	 * @param cookie
 	 */
-	public void addCookie(final Cookie cookie)
-	{
-		if (httpServletResponse != null)
-		{
-			httpServletResponse.addCookie(cookie);
-		}
-	}
+	public abstract void addCookie(final Cookie cookie);
 
 	/**
 	 * Convenience method for clearing a cookie.
@@ -95,342 +45,51 @@
 	 *            The cookie to set
 	 * @see WebResponse#addCookie(Cookie)
 	 */
-	public void clearCookie(final Cookie cookie)
-	{
-		if (httpServletResponse != null)
-		{
-			cookie.setMaxAge(0);
-			cookie.setValue(null);
-			addCookie(cookie);
-		}
-	}
-
-	/**
-	 * Closes response output.
-	 */
-	@Override
-	public void close()
-	{
-		// NOTE: Servlet container will close the response output stream
-		// automatically, so we do nothing here.
-	}
-
-	/**
-	 * Returns the given url encoded.
-	 * 
-	 * @param url
-	 *            The URL to encode
-	 * @return The encoded url
-	 */
-	@Override
-	public CharSequence encodeURL(CharSequence url)
-	{
-		if (httpServletResponse != null && url != null)
-		{
-			if (url.length() > 0 && url.charAt(0) == '?')
-			{
-				// there is a bug in apache tomcat 5.5 where tomcat doesn't put sessionid to url
-				// when the URL starts with '?'. So we prepend the URL with ./ and remove it
-				// afterwards (unless some container prepends session id before './' or mangles
-				// the URL otherwise
-
-				String encoded = httpServletResponse.encodeURL("./" + url.toString());
-				if (encoded.startsWith("./"))
-				{
-					return encoded.substring(2);
-				}
-				else
-				{
-					return encoded;
-				}
-			}
-			else
-			{
-				return httpServletResponse.encodeURL(url.toString());
-			}
-		}
-		return url;
-	}
+	public abstract void clearCookie(final Cookie cookie);
 
 	/**
-	 * Gets the wrapped http servlet response object.
+	 * Set a header to the string value in the servlet response stream.
 	 * 
-	 * @return The wrapped http servlet response object
-	 */
-	public final HttpServletResponse getHttpServletResponse()
-	{
-		return httpServletResponse;
-	}
-
-	/**
-	 * @see org.apache.wicket.Response#getOutputStream()
+	 * @param name
+	 * @param value
 	 */
-	@Override
-	public OutputStream getOutputStream()
-	{
-		try
-		{
-			return httpServletResponse.getOutputStream();
-		}
-		catch (IOException e)
-		{
-			throw new WicketRuntimeException("Error while getting output stream.", e);
-		}
-	}
+	public abstract void setHeader(String name, String value);
 
 	/**
-	 * Whether this response is going to redirect the user agent.
+	 * Set a header to the date value in the servlet response stream.
 	 * 
-	 * @return True if this response is going to redirect the user agent
+	 * @param name
+	 * @param date
 	 */
-	@Override
-	public boolean isRedirect()
-	{
-		return redirect;
-	}
+	public abstract void setDateHeader(String name, long date);
 
 	/**
-	 * CLIENTS SHOULD NEVER CALL THIS METHOD FOR DAY TO DAY USE!
-	 * <p>
-	 * Redirects to the given url. Implementations should encode the URL to make sure cookie-less
-	 * operation is supported in case clients forgot.
-	 * </p>
+	 * Set the content length on the response, if appropriate in the subclass. This default
+	 * implementation does nothing.
 	 * 
-	 * @param url
-	 *            The URL to redirect to
+	 * @param length
+	 *            The length of the content
 	 */
-	@Override
-	public void redirect(String url)
-	{
-		if (!redirect)
-		{
-			if (httpServletResponse != null)
-			{
-				// encode to make sure no caller forgot this
-				url = httpServletResponse.encodeRedirectURL(url);
-				try
-				{
-					if (httpServletResponse.isCommitted())
-					{
-						log.error("Unable to redirect to: " + url +
-							", HTTP Response has already been committed.");
-					}
-
-					if (log.isDebugEnabled())
-					{
-						log.debug("Redirecting to " + url);
-					}
-
-					if (isAjax())
-					{
-						/*
-						 * By reaching this point, make sure the HTTP response status code is set to
-						 * 200, otherwise wicket-ajax.js will not process the Ajax-Location header
-						 */
-						httpServletResponse.addHeader("Ajax-Location", url);
-
-						// safari chokes on empty response. but perhaps this is
-						// not the best place?
-						httpServletResponse.getWriter().write("-");
-
-						configureAjaxRedirect();
-					}
-					else
-					{
-						httpServletResponse.sendRedirect(url);
-					}
-					redirect = true;
-				}
-				catch (IOException e)
-				{
-					log.warn("redirect to " + url + " failed: " + e.getMessage());
-				}
-			}
-		}
-		else
-		{
-			log.info("Already redirecting to an url current one ignored: " + url);
-		}
-	}
-
-	/**
-	 * Configure the header for ajax redirects
-	 */
-	protected void configureAjaxRedirect()
-	{
-		// Set the encoding (see Wicket-2348)
-		final String encoding = Application.get()
-			.getRequestCycleSettings()
-			.getResponseRequestEncoding();
-
-		// Set content type based on markup type for page
-		setCharacterEncoding(encoding);
-		setContentType("text/xml; charset=" + encoding);
-	}
+	public abstract void setContentLength(final long length);
 
 	/**
-	 * Set the content type on the response.
+	 * Set the content type on the response, if appropriate in the subclass. This default
+	 * implementation does nothing.
 	 * 
 	 * @param mimeType
 	 *            The mime type
 	 */
-	@Override
-	public void setContentType(final String mimeType)
-	{
-		if (httpServletResponse != null)
-		{
-			httpServletResponse.setContentType(mimeType);
-		}
-	}
-
-	/**
-	 * @see org.apache.wicket.Response#setContentLength(long)
-	 */
-	@Override
-	public void setContentLength(long length)
-	{
-		if (httpServletResponse != null)
-		{
-			httpServletResponse.setContentLength((int)length);
-		}
-	}
-
-	/**
-	 * @see org.apache.wicket.Response#setLastModifiedTime(org.apache.wicket.util.time.Time)
-	 */
-	@Override
-	public void setLastModifiedTime(Time time)
-	{
-		if (httpServletResponse != null)
-		{
-			if (time != null && time.getMilliseconds() != -1)
-			{
-				httpServletResponse.setDateHeader("Last-Modified", time.getMilliseconds());
-			}
-		}
-	}
-
-	/**
-	 * Output stream encoding. If the deployment descriptor contains a locale-encoding-mapping-list
-	 * element, and that element provides a mapping for the given locale, that mapping is used.
-	 * Otherwise, the mapping from locale to character encoding is container dependent. Default is
-	 * ISO-8859-1.
-	 * 
-	 * @see javax.servlet.ServletResponse#setLocale(java.util.Locale)
-	 * 
-	 * @param locale
-	 *            The locale use for mapping the character encoding
-	 */
-	@Override
-	public final void setLocale(final Locale locale)
-	{
-		if (httpServletResponse != null)
-		{
-			httpServletResponse.setLocale(locale);
-		}
-	}
-
-	/**
-	 * @see org.apache.wicket.Response#write(byte[])
-	 */
-	@Override
-	public void write(byte[] array)
-	{
-		try
-		{
-			httpServletResponse.getOutputStream().write(array);
-		}
-		catch (IOException e)
-		{
-			throw new WicketRuntimeException(e);
-		}
-	}
-
-	/**
-	 * Writes string to response output.
-	 * 
-	 * @param string
-	 *            The string to write
-	 */
-	@Override
-	public void write(final CharSequence string)
-	{
-		if (string instanceof AppendingStringBuffer)
-		{
-			write((AppendingStringBuffer)string);
-		}
-		else if (string instanceof StringBuffer)
-		{
-			try
-			{
-				StringBuffer sb = (StringBuffer)string;
-				char[] array = new char[sb.length()];
-				sb.getChars(0, sb.length(), array, 0);
-				httpServletResponse.getWriter().write(array, 0, array.length);
-			}
-			catch (IOException e)
-			{
-				throw new WicketRuntimeException("Error while writing to servlet output writer.", e);
-			}
-		}
-		else
-		{
-			try
-			{
-				httpServletResponse.getWriter().write(string.toString());
-			}
-			catch (IOException e)
-			{
-				throw new WicketRuntimeException("Error while writing to servlet output writer.", e);
-			}
-		}
-	}
-
-	/**
-	 * Writes AppendingStringBuffer to response output.
-	 * 
-	 * @param asb
-	 *            The AppendingStringBuffer to write to the stream
-	 */
-	public void write(AppendingStringBuffer asb)
-	{
-		try
-		{
-			httpServletResponse.getWriter().write(asb.getValue(), 0, asb.length());
-		}
-		catch (IOException e)
-		{
-			throw new WicketRuntimeException("Error while writing to servlet output writer.", e);
-		}
-	}
-
-	/**
-	 * Set a header to the date value in the servlet response stream.
-	 * 
-	 * @param header
-	 * @param date
-	 */
-	public void setDateHeader(String header, long date)
-	{
-		if (httpServletResponse != null)
-		{
-			httpServletResponse.setDateHeader(header, date);
-		}
-	}
-
+	public abstract void setContentType(final String mimeType);
 
 	/**
-	 * Set a header to the string value in the servlet response stream.
+	 * Set the contents last modified time, if appropriate in the subclass.
 	 * 
-	 * @param header
-	 * @param value
+	 * @param time
+	 *            The last modified time in milliseconds
 	 */
-	public void setHeader(String header, String value)
+	public void setLastModifiedTime(long time)
 	{
-		if (httpServletResponse != null)
-		{
-			httpServletResponse.setHeader(header, value);
-		}
+		setDateHeader("Last-Modified", time);
 	}
 
 	/**
@@ -462,34 +121,33 @@
 	}
 
 	/**
-	 * Is the request, which matches this response an ajax request.
+	 * Sets the status code for this response.
 	 * 
-	 * @return True if the request is an ajax request.
+	 * @param sc
+	 *            status code
 	 */
-	public boolean isAjax()
-	{
-		return ajax;
-	}
+	public abstract void setStatus(int sc);
 
 	/**
-	 * Set that the request which matches this response is an ajax request.
+	 * Send error status code with optional message.
 	 * 
-	 * @param ajax
-	 *            True if the request is an ajax request.
+	 * @param sc
+	 * @param msg
+	 * @throws IOException
 	 */
-	public void setAjax(boolean ajax)
-	{
-		this.ajax = ajax;
-	}
+	public abstract void sendError(int sc, String msg);
 
 	/**
-	 * Sets the status code for this response.
+	 * Redirects the response to specified URL. The implementation is responsible for properly
+	 * encoding the URL.
 	 * 
-	 * @param sc
-	 *            status code
+	 * @param url
 	 */
-	public void setStatus(int sc)
-	{
-		httpServletResponse.setStatus(sc);
-	}
+	public abstract void sendRedirect(String url);
+
+	/**
+	 * @return <code>true</code> is {@link #sendRedirect(String)} was called, <code>false</code>
+	 *         otherwise.
+	 */
+	public abstract boolean isRedirect();
 }

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebSession.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebSession.java?rev=895520&r1=895519&r2=895520&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebSession.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebSession.java Mon Jan  4 01:03:29 2010
@@ -19,16 +19,13 @@
 import java.util.List;
 
 import org.apache.wicket.Application;
-import org.apache.wicket.Component;
-import org.apache.wicket.IResourceListener;
 import org.apache.wicket.Request;
-import org.apache.wicket.RequestCycle;
 import org.apache.wicket.Session;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.feedback.FeedbackMessage;
 import org.apache.wicket.feedback.IFeedbackMessageFilter;
+import org.apache.wicket.ng.request.cycle.RequestCycle;
 import org.apache.wicket.settings.IRequestCycleSettings;
-import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -85,53 +82,6 @@
 		super(request);
 	}
 
-	/**
-	 * @see org.apache.wicket.Session#isCurrentRequestValid(org.apache.wicket.RequestCycle)
-	 */
-	@Override
-	protected boolean isCurrentRequestValid(RequestCycle lockedRequestCycle)
-	{
-		WebRequest lockedRequest = (WebRequest)lockedRequestCycle.getRequest();
-
-		// if the request that's holding the lock is ajax, we allow this request
-		if (lockedRequest.isAjax() == true)
-		{
-			return true;
-		}
-
-		if (IResourceListener.INTERFACE.equals(lockedRequest.getObsoleteRequestParameters()
-			.getInterface()))
-		{
-			return true;
-		}
-
-		RequestCycle currentRequestCycle = RequestCycle.get();
-		WebRequest currentRequest = (WebRequest)currentRequestCycle.getRequest();
-
-		if (currentRequest.isAjax() == false)
-		{
-			// if this request is not ajax, we allow it
-			return true;
-		}
-
-		String lockedPageId = Strings.firstPathComponent(
-			lockedRequest.getObsoleteRequestParameters().getComponentPath(),
-			Component.PATH_SEPARATOR);
-		String currentPageId = Strings.firstPathComponent(currentRequestCycle.getRequest()
-			.getObsoleteRequestParameters()
-			.getComponentPath(), Component.PATH_SEPARATOR);
-
-		int lockedVersion = lockedRequest.getObsoleteRequestParameters().getVersionNumber();
-		int currentVersion = currentRequest.getObsoleteRequestParameters().getVersionNumber();
-
-		if (currentPageId.equals(lockedPageId) && currentVersion == lockedVersion)
-		{
-			// we don't allow this request
-			return false;
-		}
-
-		return true;
-	}
 
 	/**
 	 * @see org.apache.wicket.Session#cleanupFeedbackMessages()
@@ -146,7 +96,7 @@
 		// false in that case)
 		if (Application.get().getRequestCycleSettings().getRenderStrategy() != IRequestCycleSettings.RenderStrategy.REDIRECT_TO_RENDER ||
 			((WebRequest)RequestCycle.get().getRequest()).isAjax() ||
-			(!RequestCycle.get().isRedirect()))
+			(!((WebResponse)RequestCycle.get().getResponse()).isRedirect()))
 		{
 			// If session scoped, rendered messages got indeed cleaned up, mark
 			// the session as dirty