You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2013/04/12 09:43:52 UTC
git commit: WICKET-5141 Exception while rendering absolute URL with
UrlResourceReference
Updated Branches:
refs/heads/master ef3adb122 -> 4315a1c19
WICKET-5141 Exception while rendering absolute URL with UrlResourceReference
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/4315a1c1
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/4315a1c1
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/4315a1c1
Branch: refs/heads/master
Commit: 4315a1c192bf31330ea040723d3e6314c02ef55a
Parents: ef3adb1
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Fri Apr 12 10:42:32 2013 +0300
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Fri Apr 12 10:43:38 2013 +0300
----------------------------------------------------------------------
.../request/resource/UrlResourceReference.java | 19 +++++++-
.../request/resource/UrlResourceReferenceTest.java | 13 +++++
.../main/java/org/apache/wicket/request/Url.java | 24 +++++++++
.../org/apache/wicket/request/UrlRenderer.java | 2 +-
.../java/org/apache/wicket/request/UrlTest.java | 38 +++++++++++++++
5 files changed, 93 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/4315a1c1/wicket-core/src/main/java/org/apache/wicket/request/resource/UrlResourceReference.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/UrlResourceReference.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/UrlResourceReference.java
index 98e76c9..8cf7586 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/resource/UrlResourceReference.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/UrlResourceReference.java
@@ -45,7 +45,8 @@ public class UrlResourceReference extends ResourceReference
@Override
public String renderFullUrl(Url url, Url baseUrl)
{
- return url.toString(StringMode.FULL);
+ StringMode mode = getStringMode(url);
+ return url.toString(mode);
}
@Override
@@ -132,8 +133,22 @@ public class UrlResourceReference extends ResourceReference
public String toString()
{
return "UrlResourceReference{" +
- "url=" + url.toString(Url.StringMode.FULL) +
+ "url=" + url.toString(getStringMode(url)) +
", contextRelative=" + contextRelative +
'}';
}
+
+ private static Url.StringMode getStringMode(Url url)
+ {
+ final Url.StringMode mode;
+ if (url.isFull())
+ {
+ mode = Url.StringMode.FULL;
+ }
+ else
+ {
+ mode = Url.StringMode.LOCAL;
+ }
+ return mode;
+ }
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/4315a1c1/wicket-core/src/test/java/org/apache/wicket/request/resource/UrlResourceReferenceTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/UrlResourceReferenceTest.java b/wicket-core/src/test/java/org/apache/wicket/request/resource/UrlResourceReferenceTest.java
index 62fb31a..3405b22 100644
--- a/wicket-core/src/test/java/org/apache/wicket/request/resource/UrlResourceReferenceTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/UrlResourceReferenceTest.java
@@ -57,6 +57,19 @@ public class UrlResourceReferenceTest extends WicketTestCase
assertNull(reference.getResource());
}
+ @Test
+ public void contextAbsoluteUrl()
+ {
+ Url url = Url.parse("/some/path.ext");
+ UrlResourceReference reference = new UrlResourceReference(url);
+ assertEquals(url, reference.getUrl());
+ assertNull(reference.getResource());
+
+ CharSequence _url = tester.getRequestCycle().urlFor(reference, null);
+ assertEquals(url.toString(), _url);
+ assertNull(reference.getResource());
+ }
+
@Test(expected = IllegalStateException.class)
public void cannotMakeAnAbsoluteUrlContextRelative()
{
http://git-wip-us.apache.org/repos/asf/wicket/blob/4315a1c1/wicket-request/src/main/java/org/apache/wicket/request/Url.java
----------------------------------------------------------------------
diff --git a/wicket-request/src/main/java/org/apache/wicket/request/Url.java b/wicket-request/src/main/java/org/apache/wicket/request/Url.java
index 9ca2c0d..6aa6e25 100755
--- a/wicket-request/src/main/java/org/apache/wicket/request/Url.java
+++ b/wicket-request/src/main/java/org/apache/wicket/request/Url.java
@@ -434,13 +434,37 @@ public class Url implements Serializable
* Returns whether the Url is absolute. Absolute Urls start with a '{@literal /}'.
*
* @return <code>true</code> if Url is absolute, <code>false</code> otherwise.
+ * @deprecated Use #isContextAbsolute() or #isFull()
*/
+ @Deprecated
public boolean isAbsolute()
{
return !getSegments().isEmpty() && Strings.isEmpty(getSegments().get(0));
}
/**
+ * Returns whether the Url is context absolute. Absolute Urls start with a '{@literal /}'.
+ *
+ * @return <code>true</code> if Url starts with the context path, <code>false</code> otherwise.
+ */
+ public boolean isContextAbsolute()
+ {
+ return !isFull() && !getSegments().isEmpty() && Strings.isEmpty(getSegments().get(0));
+ }
+
+ /**
+ * Returns whether the Url has a <em>host</em> attribute.
+ * The scheme is optional because the url may be <code>//host/path</code>.
+ * The port is also optional because there are defaults for the different protocols.
+ *
+ * @return <code>true</code> if Url has a <em>host</em> attribute, <code>false</code> otherwise.
+ */
+ public boolean isFull()
+ {
+ return getHost() != null;
+ }
+
+ /**
* Convenience method that removes all query parameters with given name.
*
* @param name
http://git-wip-us.apache.org/repos/asf/wicket/blob/4315a1c1/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 db60c13..78cd074 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
@@ -363,7 +363,7 @@ public class UrlRenderer
{
return true;
}
- if (url.isAbsolute())
+ if (url.isContextAbsolute())
{
// do not relativize urls like "/a/b"
return true;
http://git-wip-us.apache.org/repos/asf/wicket/blob/4315a1c1/wicket-request/src/test/java/org/apache/wicket/request/UrlTest.java
----------------------------------------------------------------------
diff --git a/wicket-request/src/test/java/org/apache/wicket/request/UrlTest.java b/wicket-request/src/test/java/org/apache/wicket/request/UrlTest.java
index eaebe14..9daedf5 100644
--- a/wicket-request/src/test/java/org/apache/wicket/request/UrlTest.java
+++ b/wicket-request/src/test/java/org/apache/wicket/request/UrlTest.java
@@ -927,4 +927,42 @@ public class UrlTest extends Assert
url.setHost("wicketHost");
url.toString(StringMode.FULL);
}
+
+ @Test
+ public void isContextAbsolute()
+ {
+ Url url = Url.parse("");
+ assertFalse(url.isContextAbsolute());
+
+ url = Url.parse("http://www.example.com/path");
+ assertFalse(url.isContextAbsolute());
+
+ url = Url.parse("//www.example.com/path");
+ assertFalse(url.isContextAbsolute());
+
+ url = Url.parse("path");
+ assertFalse(url.isContextAbsolute());
+
+ url = Url.parse("/path");
+ assertTrue(url.isContextAbsolute());
+ }
+
+ @Test
+ public void isFull()
+ {
+ Url url = Url.parse("");
+ assertFalse(url.isFull());
+
+ url = Url.parse("http://www.example.com/path");
+ assertTrue(url.isFull());
+
+ url = Url.parse("//www.example.com/path");
+ assertTrue(url.isFull());
+
+ url = Url.parse("path");
+ assertFalse(url.isFull());
+
+ url = Url.parse("/path");
+ assertFalse(url.isFull());
+ }
}