You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by at...@apache.org on 2007/09/04 12:27:34 UTC
svn commit: r572606 - in
/wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket:
markup/html/pages/ protocol/http/ protocol/http/servlet/
request/target/basic/
Author: ate
Date: Tue Sep 4 03:27:30 2007
New Revision: 572606
URL: http://svn.apache.org/viewvc?rev=572606&view=rev
Log:
WICKET-654: New Wicket Portlet support: translating Wicket relative paths back to fully qualified paths for usage in a portlet context
See: https://issues.apache.org/jira/browse/WICKET-654
- this is now an improved and more complete implemention then what I originally committed to the wicket-1.3-portlet-support branch
Modified:
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/pages/BrowserInfoPage.java
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycle.java
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/basic/RedirectRequestTarget.java
Modified: wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/pages/BrowserInfoPage.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/markup/html/pages/BrowserInfoPage.java?rev=572606&r1=572605&r2=572606&view=diff
==============================================================================
--- wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/pages/BrowserInfoPage.java (original)
+++ wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/pages/BrowserInfoPage.java Tue Sep 4 03:27:30 2007
@@ -20,6 +20,7 @@
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.PageParameters;
+import org.apache.wicket.RequestContext;
import org.apache.wicket.RequestCycle;
import org.apache.wicket.Response;
import org.apache.wicket.markup.html.WebComponent;
@@ -29,6 +30,7 @@
import org.apache.wicket.protocol.http.ClientProperties;
import org.apache.wicket.protocol.http.WebRequestCycle;
import org.apache.wicket.protocol.http.WebSession;
+import org.apache.wicket.protocol.http.portlet.PortletRequestContext;
import org.apache.wicket.protocol.http.request.WebClientInfo;
import org.apache.wicket.request.ClientInfo;
import org.apache.wicket.request.target.component.BookmarkablePageRequestTarget;
@@ -172,8 +174,16 @@
// Redirect there
Response response = requestCycle.getResponse();
response.reset();
- response.redirect(requestCycle.getRequest().getRelativePathPrefixToWicketHandler()
- + continueTo);
+ RequestContext rc = RequestContext.get();
+ if (rc.isPortletRequest() && ((PortletRequestContext)rc).isEmbedded())
+ {
+ response.redirect("/" + continueTo);
+ }
+ else
+ {
+ response.redirect(requestCycle.getRequest().getRelativePathPrefixToWicketHandler()
+ + continueTo);
+ }
}
/**
Modified: wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycle.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/WebRequestCycle.java?rev=572606&r1=572605&r2=572606&view=diff
==============================================================================
--- wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycle.java (original)
+++ wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycle.java Tue Sep 4 03:27:30 2007
@@ -20,11 +20,13 @@
import org.apache.wicket.IRedirectListener;
import org.apache.wicket.MetaDataKey;
import org.apache.wicket.Page;
+import org.apache.wicket.RequestContext;
import org.apache.wicket.RequestCycle;
import org.apache.wicket.Response;
import org.apache.wicket.RestartResponseAtInterceptPageException;
import org.apache.wicket.Session;
import org.apache.wicket.markup.html.pages.BrowserInfoPage;
+import org.apache.wicket.protocol.http.portlet.PortletRequestContext;
import org.apache.wicket.protocol.http.request.WebClientInfo;
import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
import org.apache.wicket.request.ClientInfo;
@@ -258,7 +260,17 @@
// we haven't done the redirect yet; record that we will be
// doing that now and redirect
session.setMetaData(BROWSER_WAS_POLLED_KEY, Boolean.TRUE);
- throw new RestartResponseAtInterceptPageException(new BrowserInfoPage(getRequest().getRelativePathPrefixToContextRoot() + getRequest().getURL()));
+ RequestContext rc = RequestContext.get();
+ String continueTo = null;
+ if (rc.isPortletRequest() && ((PortletRequestContext)rc).isEmbedded())
+ {
+ continueTo = getRequest().getURL();
+ }
+ else
+ {
+ continueTo = getRequest().getRelativePathPrefixToContextRoot() + getRequest().getURL();
+ }
+ throw new RestartResponseAtInterceptPageException(new BrowserInfoPage(continueTo));
}
// if we get here, the redirect already has been done; clear
// the meta data entry; we don't need it any longer is the client
Modified: wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.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/servlet/ServletWebRequest.java?rev=572606&r1=572605&r2=572606&view=diff
==============================================================================
--- wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java (original)
+++ wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java Tue Sep 4 03:27:30 2007
@@ -26,6 +26,7 @@
import org.apache.wicket.Application;
import org.apache.wicket.IRedirectListener;
+import org.apache.wicket.RequestContext;
import org.apache.wicket.RequestListenerInterface;
import org.apache.wicket.WicketRuntimeException;
import org.apache.wicket.protocol.http.WebApplication;
@@ -153,6 +154,11 @@
return relativePathPrefixToContextRoot;
}
+ if (RequestContext.get().isPortletRequest())
+ {
+ return relativePathPrefixToContextRoot = getHttpServletRequest().getContextPath()+"/";
+ }
+
// Prepend to get back to the wicket handler.
String tmp = getRelativePathPrefixToWicketHandler();
PrependingStringBuffer prepender = new PrependingStringBuffer(tmp);
@@ -229,11 +235,13 @@
return relativePathPrefixToWicketHandler;
}
+ boolean portletRequest = RequestContext.get().isPortletRequest();
+
PrependingStringBuffer prepender = new PrependingStringBuffer();
// For AJAX requests, we need to make the URLs relative to the
// original page.
- if (isAjax())
+ if (!portletRequest && isAjax())
{
for (int i = 0; i < getRequestParameters().getUrlDepth(); i++)
{
@@ -301,9 +309,11 @@
relativeUrl = wicketRedirectUrl;
}
+ int lastPathPos = -1;
if (depthRelativeToWicketHandler == -1)
{
int depth = 0;
+ int ajaxUrlDepth = isAjax() ? getRequestParameters().getUrlDepth() : -1;
for (int i = 0; i < relativeUrl.length(); i++)
{
if (relativeUrl.charAt(i) == '?')
@@ -313,14 +323,28 @@
if (relativeUrl.charAt(i) == '/')
{
depth++;
+ lastPathPos = i;
+ if (depth == ajaxUrlDepth)
+ {
+ return relativeUrl.substring(0,lastPathPos+1);
+ }
}
}
depthRelativeToWicketHandler = depth;
}
- for (int i = 0; i < depthRelativeToWicketHandler; i++)
+ if (portletRequest)
+ {
+ prepender.prepend("/");
+ prepender.prepend(getHttpServletRequest().getServletPath());
+ prepender.prepend(getHttpServletRequest().getContextPath());
+ }
+ else
{
- prepender.prepend("../");
+ for (int i = 0; i < depthRelativeToWicketHandler; i++)
+ {
+ prepender.prepend("../");
+ }
}
return relativePathPrefixToWicketHandler = prepender.toString();
Modified: wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/basic/RedirectRequestTarget.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/request/target/basic/RedirectRequestTarget.java?rev=572606&r1=572605&r2=572606&view=diff
==============================================================================
--- wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/basic/RedirectRequestTarget.java (original)
+++ wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/basic/RedirectRequestTarget.java Tue Sep 4 03:27:30 2007
@@ -17,9 +17,11 @@
package org.apache.wicket.request.target.basic;
import org.apache.wicket.IRequestTarget;
+import org.apache.wicket.RequestContext;
import org.apache.wicket.RequestCycle;
import org.apache.wicket.Response;
import org.apache.wicket.markup.html.pages.RedirectPage;
+import org.apache.wicket.protocol.http.portlet.PortletRequestContext;
/**
* A RequestTarget that will sent a redirect url to the browser. Use this if you
@@ -68,7 +70,16 @@
response.reset();
if (redirectUrl.startsWith("/"))
{
- response.redirect(RequestCycle.get().getRequest().getRelativePathPrefixToContextRoot() + redirectUrl.substring(1));
+ RequestContext rc = RequestContext.get();
+ String continueTo = null;
+ if (rc.isPortletRequest() && ((PortletRequestContext)rc).isEmbedded())
+ {
+ response.redirect(redirectUrl);
+ }
+ else
+ {
+ response.redirect(RequestCycle.get().getRequest().getRelativePathPrefixToContextRoot() + redirectUrl.substring(1));
+ }
}
else if (redirectUrl.startsWith("http://") || redirectUrl.startsWith("https://"))
{