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 (<context-param>), 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