You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2008/02/21 16:46:25 UTC
svn commit: r629835 - in /incubator/sling/trunk/sling/core/src:
main/java/org/apache/sling/core/impl/request/SlingRequestPathInfo.java
test/java/org/apache/sling/core/impl/request/SlingRequestPathInfoTest.java
Author: bdelacretaz
Date: Thu Feb 21 07:46:24 2008
New Revision: 629835
URL: http://svn.apache.org/viewvc?rev=629835&view=rev
Log:
SLING-250 - fix SlingRequestPathInfo to handle paths starting with /. - contributed by Lars Trieloff, thanks\!
Modified:
incubator/sling/trunk/sling/core/src/main/java/org/apache/sling/core/impl/request/SlingRequestPathInfo.java
incubator/sling/trunk/sling/core/src/test/java/org/apache/sling/core/impl/request/SlingRequestPathInfoTest.java
Modified: incubator/sling/trunk/sling/core/src/main/java/org/apache/sling/core/impl/request/SlingRequestPathInfo.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/sling/core/src/main/java/org/apache/sling/core/impl/request/SlingRequestPathInfo.java?rev=629835&r1=629834&r2=629835&view=diff
==============================================================================
--- incubator/sling/trunk/sling/core/src/main/java/org/apache/sling/core/impl/request/SlingRequestPathInfo.java (original)
+++ incubator/sling/trunk/sling/core/src/main/java/org/apache/sling/core/impl/request/SlingRequestPathInfo.java Thu Feb 21 07:46:24 2008
@@ -64,7 +64,33 @@
pathToParse = pathToParse.substring(resourcePath.length());
}
- if (pathToParse.startsWith("/")) {
+ if (pathToParse.startsWith("/.")) {
+ final int lastDot = pathToParse.lastIndexOf('.');
+
+ if (1==lastDot) {
+ selectorString = null;
+ selectors = NO_SELECTORS;
+ } else {
+ String tmpSel = pathToParse.substring(2, lastDot);
+ selectors = tmpSel.split("\\.");
+ selectorString = (selectors.length > 0) ? tmpSel : null;
+
+ //selectorString = pathToParse.substring(firstDot, lastDot - firstDot);
+
+ }
+
+ final int lastSlash = pathToParse.lastIndexOf('/');
+ if (lastSlash == 0) {
+ suffix = "";
+ extension = pathToParse.substring(lastDot + 1);
+ } else {
+ final int secondSlash = pathToParse.indexOf("/", 1);
+ suffix = pathToParse.substring(secondSlash);
+ String prefix = pathToParse.substring(0, secondSlash);
+ final int extensionDot = prefix.lastIndexOf(".");
+ extension = prefix.substring(extensionDot + 1);
+ }
+ } else if (pathToParse.startsWith("/")) {
// resolution path is up in the hierarchy
// from request path: split the remainder
// in suffix and extension only
Modified: incubator/sling/trunk/sling/core/src/test/java/org/apache/sling/core/impl/request/SlingRequestPathInfoTest.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/sling/core/src/test/java/org/apache/sling/core/impl/request/SlingRequestPathInfoTest.java?rev=629835&r1=629834&r2=629835&view=diff
==============================================================================
--- incubator/sling/trunk/sling/core/src/test/java/org/apache/sling/core/impl/request/SlingRequestPathInfoTest.java (original)
+++ incubator/sling/trunk/sling/core/src/test/java/org/apache/sling/core/impl/request/SlingRequestPathInfoTest.java Thu Feb 21 07:46:24 2008
@@ -266,6 +266,53 @@
assertEquals("12005879509741.json",p.getSuffix());
}
+ public void testJIRA_250_a() {
+ RequestPathInfo p =
+ new SlingRequestPathInfo(
+ new MockResource("/bunkai"),
+ "/bunkai.1.json"
+ );
+ assertEquals("/bunkai", p.getResourcePath());
+ assertEquals("json", p.getExtension());
+ assertEquals("1", p.getSelectorString());
+ }
+
+ public void testJIRA_250_b() {
+ RequestPathInfo p =
+ new SlingRequestPathInfo(
+ new MockResource("/"),
+ "/.1.json"
+ );
+ assertEquals("/", p.getResourcePath());
+ assertEquals("json", p.getExtension());
+ assertEquals("", p.getSuffix());
+ assertEquals("Selector string must not be null", "1", p.getSelectorString());
+ }
+
+ public void testJIRA_250_c() {
+ RequestPathInfo p =
+ new SlingRequestPathInfo(
+ new MockResource("/"),
+ "/.1.json/my/suffix"
+ );
+ assertEquals("/", p.getResourcePath());
+ assertEquals("json", p.getExtension());
+ assertEquals("/my/suffix",p.getSuffix());
+ assertEquals("Selector string must not be null", "1", p.getSelectorString());
+ }
+
+ public void testJIRA_250_d() {
+ RequestPathInfo p =
+ new SlingRequestPathInfo(
+ new MockResource("/"),
+ "/.json"
+ );
+ assertEquals("/", p.getResourcePath());
+ assertEquals("json", p.getExtension());
+ assertEquals("", p.getSuffix());
+ assertNull(p.getSelectorString());
+ }
+
static class MockResource implements Resource {
private final ResourceMetadata metadata;