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://"))
 		{