You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by pa...@apache.org on 2015/08/18 16:50:27 UTC

wicket git commit: WICKET-5970: render fragments in urls

Repository: wicket
Updated Branches:
  refs/heads/master 31c885690 -> bdaeef3de


WICKET-5970: render fragments in urls


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/bdaeef3d
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/bdaeef3d
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/bdaeef3d

Branch: refs/heads/master
Commit: bdaeef3de34320bf1111d0402cab04926d59e4cd
Parents: 31c8856
Author: Emond Papegaaij <em...@topicus.nl>
Authored: Tue Aug 18 16:35:55 2015 +0200
Committer: Emond Papegaaij <em...@topicus.nl>
Committed: Tue Aug 18 16:49:40 2015 +0200

----------------------------------------------------------------------
 .../wicket/request/cycle/UrlRendererTest.java   | 48 +++++++++++++++++++-
 .../org/apache/wicket/request/UrlRenderer.java  | 16 +++++--
 2 files changed, 58 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/bdaeef3d/wicket-core/src/test/java/org/apache/wicket/request/cycle/UrlRendererTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/cycle/UrlRendererTest.java b/wicket-core/src/test/java/org/apache/wicket/request/cycle/UrlRendererTest.java
index e142fdf..1e192f0 100644
--- a/wicket-core/src/test/java/org/apache/wicket/request/cycle/UrlRendererTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/request/cycle/UrlRendererTest.java
@@ -572,7 +572,8 @@ public class UrlRendererTest extends Assert
 	@Test
 	public void removeCommonPrefixesWithJSessionId()
 	{
-		Url baseUrl = new Url(Arrays.asList("", "SomePage;jsessionid=1234"), Arrays.<Url.QueryParameter>asList());
+		Url baseUrl = new Url(Arrays.asList("", "SomePage;jsessionid=1234"),
+			Arrays.<Url.QueryParameter> asList());
 
 		MockWebRequest request = new MockWebRequest(baseUrl);
 		request.setContextPath("/");
@@ -619,4 +620,49 @@ public class UrlRendererTest extends Assert
 		fullUrl = renderer.renderFullUrl(Url.parse("/one/.././two/three"));
 		assertEquals("/two/three", fullUrl);
 	}
+
+	/**
+	 * https://issues.apache.org/jira/browse/WICKET-5970
+	 */
+	@Test
+	public void renderFullUrlWithFragment()
+	{
+		UrlRenderer renderer = new UrlRenderer(new MockWebRequest(Url.parse("authorize")));
+
+		Url urlWithFragment = Url.parse("http://localhost:8080/redirect#access_token=123456");
+		assertEquals("access_token=123456", urlWithFragment.getFragment());
+
+		String renderedUrl = renderer.renderFullUrl(urlWithFragment);
+		assertEquals("http://localhost:8080/redirect#access_token=123456", renderedUrl);
+	}
+
+	/**
+	 * https://issues.apache.org/jira/browse/WICKET-5970
+	 */
+	@Test
+	public void renderRelativeUrlWithFragment()
+	{
+		UrlRenderer renderer = new UrlRenderer(new MockWebRequest(Url.parse("authorize")));
+
+		Url urlWithFragment = Url.parse("http://localhost:8080/redirect#access_token=123456");
+		assertEquals("access_token=123456", urlWithFragment.getFragment());
+
+		String renderedUrl = renderer.renderRelativeUrl(urlWithFragment);
+		assertEquals("./redirect#access_token=123456", renderedUrl);
+	}
+
+	/**
+	 * https://issues.apache.org/jira/browse/WICKET-5970
+	 */
+	@Test
+	public void renderUrlWithFragment()
+	{
+		UrlRenderer renderer = new UrlRenderer(new MockWebRequest(Url.parse("authorize")));
+
+		Url urlWithFragment = Url.parse("http://localhost:8080/redirect#access_token=123456");
+		assertEquals("access_token=123456", urlWithFragment.getFragment());
+
+		String renderedUrl = renderer.renderUrl(urlWithFragment);
+		assertEquals("http://localhost:8080/redirect#access_token=123456", renderedUrl);
+	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/bdaeef3d/wicket-request/src/main/java/org/apache/wicket/request/UrlRenderer.java
----------------------------------------------------------------------
diff --git a/wicket-request/src/main/java/org/apache/wicket/request/UrlRenderer.java b/wicket-request/src/main/java/org/apache/wicket/request/UrlRenderer.java
index e31991d..ebd15bf 100644
--- a/wicket-request/src/main/java/org/apache/wicket/request/UrlRenderer.java
+++ b/wicket-request/src/main/java/org/apache/wicket/request/UrlRenderer.java
@@ -138,16 +138,20 @@ public class UrlRenderer
 		final String host = resolveHost(url);
 		final Integer port = resolvePort(url);
 
-		final String path;
+		final StringBuilder path;
 		if (url.isFull() || url.isContextAbsolute())
 		{
-			path = url.canonical().toString();
+			path = new StringBuilder(url.canonical().toString());
 		}
 		else
 		{
 			Url base = new Url(baseUrl);
 			base.resolveRelative(url);
-			path = base.toString();
+			path = new StringBuilder(base.toString());
+		}
+		if (url.getFragment() != null)
+		{
+			path.append('#').append(url.getFragment());
 		}
 
 		StringBuilder render = new StringBuilder();
@@ -174,7 +178,7 @@ public class UrlRenderer
 			render.append(request.getContextPath());
 			render.append(request.getFilterPath());
 		}
-		return Strings.join("/", render.toString(), path);
+		return Strings.join("/", render.toString(), path.toString());
 	}
 
 	/**
@@ -281,7 +285,9 @@ public class UrlRenderer
 		}
 		newSegments.addAll(urlSegments);
 
-		String renderedUrl = new Url(newSegments, url.getQueryParameters()).toString();
+		Url relativeUrl = new Url(newSegments, url.getQueryParameters());
+		relativeUrl.setFragment(url.getFragment());
+		String renderedUrl = relativeUrl.toString();
 
 		// sanitize start
 		if (!renderedUrl.startsWith("..") && !renderedUrl.equals("."))