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("."))