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/06/14 18:28:38 UTC

svn commit: r547294 - /incubator/wicket/branches/wicket-1.3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java

Author: ate
Date: Thu Jun 14 09:28:37 2007
New Revision: 547294

URL: http://svn.apache.org/viewvc?view=rev&rev=547294
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

- note: initial implementation, probably needs further improvement

Modified:
    incubator/wicket/branches/wicket-1.3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java

Modified: incubator/wicket/branches/wicket-1.3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
URL: http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java?view=diff&rev=547294&r1=547293&r2=547294
==============================================================================
--- incubator/wicket/branches/wicket-1.3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java (original)
+++ incubator/wicket/branches/wicket-1.3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java Thu Jun 14 09:28:37 2007
@@ -24,6 +24,7 @@
 
 import org.apache.wicket.Application;
 import org.apache.wicket.IRedirectListener;
+import org.apache.wicket.RenderContext;
 import org.apache.wicket.RequestListenerInterface;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.protocol.http.WebApplication;
@@ -149,10 +150,23 @@
 			return relativePathPrefixToContextRoot;
 		}
 
+		if (RenderContext.get().isEmbedded())
+		{
+			return relativePathPrefixToContextRoot = getHttpServletRequest().getContextPath()+"/";
+		}
+
 		// Prepend to get back to the wicket handler.
 		String tmp = getRelativePathPrefixToWicketHandler();
-		PrependingStringBuffer prepender = new PrependingStringBuffer(tmp);
-
+		
+		boolean embeddedRequest = RenderContext.get().isEmbedded();
+		
+		PrependingStringBuffer prepender = new PrependingStringBuffer();
+		
+		if (!embeddedRequest)
+		{
+			prepender.prepend(tmp);
+		}
+		
 		String path = Strings.replaceAll(getPath(), "%3A", ":").toString();
 		if (path == null || path.length() == 0)
 		{
@@ -218,10 +232,12 @@
 		}
 		
 		PrependingStringBuffer prepender = new PrependingStringBuffer();
+
+		boolean embeddedRequest = RenderContext.get().isEmbedded();
 		
 		// For AJAX requests, we need to make the URLs relative to the
 		// original page.
-		if (isAjax())
+		if (!embeddedRequest && isAjax())
 		{
 			for (int i = 0; i < getRequestParameters().getUrlDepth(); i++)
 			{
@@ -289,28 +305,42 @@
 			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) == '?')
-				{
+				{					
 					break;
 				}
 				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 (embeddedRequest)
 		{
-			prepender.prepend("../");
+			prepender.prepend(getHttpServletRequest().getServletPath());
+			prepender.prepend(getHttpServletRequest().getContextPath());
+		}
+		else
+		{
+			for (int i = 0; i < depthRelativeToWicketHandler; i++)
+			{
+				prepender.prepend("../");
+			}
 		}
-
 		return relativePathPrefixToWicketHandler = prepender.toString();
 	}