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/01/18 15:53:37 UTC

svn commit: r613182 - in /incubator/sling/trunk: sling/core/src/main/java/org/apache/sling/core/impl/request/ sling/core/src/test/java/org/apache/sling/core/impl/request/ usling/usling-webapp/src/test/java/org/apache/sling/usling/webapp/integrationtest...

Author: bdelacretaz
Date: Fri Jan 18 06:53:36 2008
New Revision: 613182

URL: http://svn.apache.org/viewvc?rev=613182&view=rev
Log:
SLING-173 - SlingRequestPathInfo fails to parse extension when pathToParse starts with /

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
    incubator/sling/trunk/usling/usling-webapp/src/test/java/org/apache/sling/usling/webapp/integrationtest/ujax/PostServletOrderTest.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=613182&r1=613181&r2=613182&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 Fri Jan 18 06:53:36 2008
@@ -67,12 +67,20 @@
         }
 
         if (pathToParse.startsWith("/")) {
-
-            // only a suffix exists
+            // resolution path is up in the hierarchy
+            // from request path: split the remainder
+            // in suffix and extension only
             selectorString = null;
             selectors = NO_SELECTORS;
-            extension = null;
-            suffix = pathToParse;
+            final int lastDot = pathToParse.lastIndexOf('.');
+            final int lastSlash = pathToParse.lastIndexOf('/');
+            if(lastDot >= 0 && lastDot > lastSlash) {
+                suffix = pathToParse.substring(0, lastDot).substring(1);
+                extension = pathToParse.substring(lastDot + 1);
+            } else {
+                extension = null; 
+                suffix = pathToParse;
+            }
 
         } else {
 

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=613182&r1=613181&r2=613182&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 Fri Jan 18 06:53:36 2008
@@ -22,7 +22,7 @@
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceMetadata;
 
-/** Test the MicroslingRequestPathInfo */
+/** Test the SlingRequestPathInfo class */
 public class SlingRequestPathInfoTest extends TestCase {
 
     public void testSimplePath() {
@@ -239,6 +239,30 @@
         assertEquals(0, p.getSelectors().length);
         assertNull(p.getExtension());
         assertEquals("/some/suffix", p.getSuffix());
+    }
+    
+    public void testJIRA_SLING_173_a() {
+        RequestPathInfo p = 
+            new SlingRequestPathInfo(
+                    new MockResource("/ujax-tests"), 
+                    "/ujax-tests/12005879509741.json"
+            );
+        assertEquals("/ujax-tests", p.getResourcePath());
+        assertNull(p.getSelectorString());
+        assertEquals("json",p.getExtension());
+        assertEquals("12005879509741",p.getSuffix());
+    }
+
+    public void testJIRA_SLING_173_b() {
+        RequestPathInfo p = 
+            new SlingRequestPathInfo(
+                    new MockResource("/ujax-tests"), 
+                    "/ujax-tests/12005879509741.json."
+            );
+        assertEquals("/ujax-tests", p.getResourcePath());
+        assertNull(p.getSelectorString());
+        assertEquals("",p.getExtension());
+        assertEquals("12005879509741.json",p.getSuffix());
     }
 
     static class MockResource implements Resource {

Modified: incubator/sling/trunk/usling/usling-webapp/src/test/java/org/apache/sling/usling/webapp/integrationtest/ujax/PostServletOrderTest.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/usling/usling-webapp/src/test/java/org/apache/sling/usling/webapp/integrationtest/ujax/PostServletOrderTest.java?rev=613182&r1=613181&r2=613182&view=diff
==============================================================================
--- incubator/sling/trunk/usling/usling-webapp/src/test/java/org/apache/sling/usling/webapp/integrationtest/ujax/PostServletOrderTest.java (original)
+++ incubator/sling/trunk/usling/usling-webapp/src/test/java/org/apache/sling/usling/webapp/integrationtest/ujax/PostServletOrderTest.java Fri Jan 18 06:53:36 2008
@@ -65,9 +65,7 @@
     }
     
     /** Create several nodes with the order option, and check ordering */
-    public void TODO_FAILS_testZeroOrder() throws IOException {
-        // TODO: fails due to SlingRequestPathInfo failing to get extension from URL like 
-        // http://localhost:8080/ujax-tests/12005879509741.json
+    public void testZeroOrder() throws IOException {
         final Map <String, String> props = new HashMap <String, String> ();
         props.put("ujax:order","0");
         
@@ -83,7 +81,7 @@
         }
 
         // check that nodes appear in reverse creation order in their parent's list of children
-        final String json = getContent(postUrl + "1.json", CONTENT_TYPE_JSON);
+        final String json = getContent(postUrl + ".1.json", CONTENT_TYPE_JSON);
         for(int i = 0;  i < nodeUrl.length - 1; i++) {
             final int posA = json.indexOf(nodeName[i]);
             final int posB = json.indexOf(nodeName[i + 1]);