Author: ate
Date: Fri Sep 14 18:46:49 2007
New Revision: 575847
URL: http://svn.apache.org/viewvc?rev=575847&view=rev
Log:
WICKET-655: New Wicket Portlet support: Encode Wicket urls through
RenderContext to allow a PortletRenderContext to replace them by PortletURLs
Much improved the portlet url encoding in WebRequestCodingStrategy such that
now all wicket-examples run straightforward as portlets, except for the
PrototypeApplication and the FramesApplication.
As Prototype Ajax support isn't on my list (now), and frames simply never can
be used in a portlet, initial Wicket portlet url mapping is now quite complete.
Modified:
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/PortletRequestContext.java
Modified:
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/PortletRequestContext.java
URL:
http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/PortletRequestContext.java?rev=575847&r1=575846&r2=575847&view=diff
==============================================================================
---
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/PortletRequestContext.java
(original)
+++
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/PortletRequestContext.java
Fri Sep 14 18:46:49 2007
@@ -51,6 +51,7 @@
private final PortletResourceURLFactory resourceURLFactory;
private final IHeaderResponse headerResponse;
private String portletWindowId;
+ private String wicketUrlPortletParameter;
private final boolean ajax;
private final boolean embedded;
private final boolean resourceRequest;
@@ -64,7 +65,8 @@
this.portletRequest =
(PortletRequest)servletRequest.getAttribute("javax.portlet.request");
this.portletResponse =
(PortletResponse)servletRequest.getAttribute("javax.portlet.response");
this.renderResponse = (portletResponse instanceof
RenderResponse) ? (RenderResponse)portletResponse : null;
- this.resourceURLFactory =
(PortletResourceURLFactory)servletRequest.getAttribute(WicketPortlet.RESOURCE_URL_FACTORY_ATTR);
+ this.resourceURLFactory =
(PortletResourceURLFactory)portletRequest.getAttribute(WicketPortlet.RESOURCE_URL_FACTORY_ATTR);
+ this.wicketUrlPortletParameter =
(String)portletRequest.getAttribute(WicketPortlet.WICKET_URL_PORTLET_PARAMETER_ATTR);
this.ajax = request.isAjax();
this.resourceRequest =
"true".equals(servletRequest.getAttribute(WicketPortlet.PORTLET_RESOURCE_URL_ATTR));
this.embedded = !(ajax || resourceRequest);
@@ -106,7 +108,12 @@
*/
public CharSequence encodeActionURL(CharSequence path)
{
- if (resourceRequest ||
RequestCycle.get().isNextUrlForNewWindow())
+ return encodeActionURL(path, false);
+ }
+
+ public CharSequence encodeActionURL(CharSequence path, boolean
forceActionURL)
+ {
+ if ((!forceActionURL && resourceRequest) ||
RequestCycle.get().isNextUrlForNewWindow())
{
return encodeResourceURL(path);
}
@@ -116,7 +123,7 @@
if (renderResponse != null)
{
PortletURL url =
renderResponse.createActionURL();
-
url.setParameter(WicketPortlet.WICKET_URL_PORTLET_PARAMETER, path.toString());
+ url.setParameter(wicketUrlPortletParameter,
path.toString());
path = saveLastEncodedUrl(url.toString(),
path.toString());
}
}
@@ -140,7 +147,12 @@
*/
public CharSequence encodeRenderURL(CharSequence path)
{
- if (resourceRequest ||
RequestCycle.get().isNextUrlForNewWindow())
+ return encodeRenderURL(path, false);
+ }
+
+ public CharSequence encodeRenderURL(CharSequence path, boolean
forceRenderURL)
+ {
+ if ((!forceRenderURL && resourceRequest) ||
RequestCycle.get().isNextUrlForNewWindow())
{
return encodeResourceURL(path);
}
@@ -150,7 +162,7 @@
if (renderResponse != null)
{
PortletURL url =
renderResponse.createRenderURL();
-
url.setParameter(WicketPortlet.WICKET_URL_PORTLET_PARAMETER, path.toString());
+
url.setParameter(wicketUrlPortletParameter+portletRequest.getPortletMode().toString(),
path.toString());
path = saveLastEncodedUrl(url.toString(),
path.toString());
path = url.toString();
}
@@ -171,7 +183,7 @@
try
{
HashMap parameters = new HashMap(2);
-
parameters.put(WicketPortlet.WICKET_URL_PORTLET_PARAMETER, new
String[]{path.toString()});
+
parameters.put(wicketUrlPortletParameter+portletRequest.getPortletMode().toString(),
new String[]{path.toString()});
parameters.put(WicketPortlet.PORTLET_RESOURCE_URL_PARAMETER, new
String[]{"true"});
path =
saveLastEncodedUrl(resourceURLFactory.createResourceURL(portletConfig,
(RenderRequest)portletRequest, renderResponse, parameters), path.toString());
}