You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by fm...@apache.org on 2008/08/26 09:00:13 UTC

svn commit: r688976 - in /incubator/sling/trunk/engine: ./ src/main/java/org/apache/sling/engine/impl/request/ src/test/java/org/apache/sling/engine/impl/request/

Author: fmeschbe
Date: Tue Aug 26 00:00:12 2008
New Revision: 688976

URL: http://svn.apache.org/viewvc?rev=688976&view=rev
Log:
SLING-627 Create SlingRequestPathInfo with the new sling.resolutionPathInfo
property of the resource metadata instead of trying to cut off from the
abs path.

Modified:
    incubator/sling/trunk/engine/pom.xml
    incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java
    incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/request/SlingRequestDispatcher.java
    incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/request/SlingRequestPathInfo.java
    incubator/sling/trunk/engine/src/test/java/org/apache/sling/engine/impl/request/SlingRequestPathInfoTest.java

Modified: incubator/sling/trunk/engine/pom.xml
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/engine/pom.xml?rev=688976&r1=688975&r2=688976&view=diff
==============================================================================
--- incubator/sling/trunk/engine/pom.xml (original)
+++ incubator/sling/trunk/engine/pom.xml Tue Aug 26 00:00:12 2008
@@ -96,7 +96,7 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.api</artifactId>
-            <version>2.0.2-incubator</version>
+            <version>2.0.3-incubator-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.sling</groupId>

Modified: incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java?rev=688976&r1=688975&r2=688976&view=diff
==============================================================================
--- incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java (original)
+++ incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java Tue Aug 26 00:00:12 2008
@@ -151,8 +151,7 @@
 
     public void initServlet(final Resource resource) {
         // the resource and the request path info, will never be null
-        RequestPathInfo requestPathInfo = new SlingRequestPathInfo(resource,
-            getServletRequest().getPathInfo());
+        RequestPathInfo requestPathInfo = new SlingRequestPathInfo(resource);
         ContentData contentData = pushContent(resource, requestPathInfo);
 
 	    requestProgressTracker.log("Resource Path Info: {0}", requestPathInfo);

Modified: incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/request/SlingRequestDispatcher.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/request/SlingRequestDispatcher.java?rev=688976&r1=688975&r2=688976&view=diff
==============================================================================
--- incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/request/SlingRequestDispatcher.java (original)
+++ incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/request/SlingRequestDispatcher.java Tue Aug 26 00:00:12 2008
@@ -103,7 +103,7 @@
         }
 
         // ensure request path info and optional merges
-        SlingRequestPathInfo info = new SlingRequestPathInfo(resource, absPath);
+        SlingRequestPathInfo info = new SlingRequestPathInfo(resource);
         info = info.merge(cRequest.getRequestPathInfo());
 
         // merge request dispatcher options and resource type overwrite

Modified: incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/request/SlingRequestPathInfo.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/request/SlingRequestPathInfo.java?rev=688976&r1=688975&r2=688976&view=diff
==============================================================================
--- incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/request/SlingRequestPathInfo.java (original)
+++ incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/request/SlingRequestPathInfo.java Tue Aug 26 00:00:12 2008
@@ -46,24 +46,21 @@
     private final static String[] NO_SELECTORS = new String[0];
 
     /** break requestPath as required by SlingRequestPathInfo */
-    public SlingRequestPathInfo(Resource r, String requestPath) {
+    public SlingRequestPathInfo(Resource r) {
 
         // ensure the resource
         if (r == null) {
             throw new NullPointerException("resource");
         }
 
-        String pathToParse = requestPath;
+        resourcePath = r.getResourceMetadata().getResolutionPath();
+
+        // the extra path in the request URI
+        String pathToParse = r.getResourceMetadata().getResolutionPathInfo();
         if (pathToParse == null) {
             pathToParse = "";
         }
 
-        resourcePath = r.getResourceMetadata().getResolutionPath();
-        if (resourcePath != null
-            && pathToParse.length() >= resourcePath.length()) {
-            pathToParse = pathToParse.substring(resourcePath.length());
-        }
-
         // separate selectors/ext from the suffix
         int firstSlash = pathToParse.indexOf('/');
         String pathToSplit;

Modified: incubator/sling/trunk/engine/src/test/java/org/apache/sling/engine/impl/request/SlingRequestPathInfoTest.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/engine/src/test/java/org/apache/sling/engine/impl/request/SlingRequestPathInfoTest.java?rev=688976&r1=688975&r2=688976&view=diff
==============================================================================
--- incubator/sling/trunk/engine/src/test/java/org/apache/sling/engine/impl/request/SlingRequestPathInfoTest.java (original)
+++ incubator/sling/trunk/engine/src/test/java/org/apache/sling/engine/impl/request/SlingRequestPathInfoTest.java Tue Aug 26 00:00:12 2008
@@ -29,7 +29,7 @@
 
     public void testNullResource() {
         try {
-            new SlingRequestPathInfo(null, "dontcare");
+            new SlingRequestPathInfo(null);
             fail("Expected NullPointerException");
         } catch (NullPointerException npe) {
             // required for a null resource
@@ -37,8 +37,8 @@
     }
 
     public void testTrailingDot() {
-        RequestPathInfo p = new SlingRequestPathInfo(
-            new MockResource("/some/path"), "/some/path.");
+        RequestPathInfo p = new SlingRequestPathInfo(new MockResource(
+            "/some/path", "."));
         assertEquals("/some/path", p.getResourcePath());
         assertNull(p.getSelectorString());
         assertEquals(0, p.getSelectors().length);
@@ -47,8 +47,8 @@
     }
 
     public void testTrailingDotWithSuffix() {
-        RequestPathInfo p = new SlingRequestPathInfo(
-            new MockResource("/some/path"), "/some/path./suffix");
+        RequestPathInfo p = new SlingRequestPathInfo(new MockResource(
+            "/some/path", "./suffix"));
         assertEquals("/some/path", p.getResourcePath());
         assertNull(p.getSelectorString());
         assertEquals(0, p.getSelectors().length);
@@ -57,8 +57,8 @@
     }
 
     public void testTrailingDotDot() {
-        RequestPathInfo p = new SlingRequestPathInfo(
-            new MockResource("/some/path"), "/some/path..");
+        RequestPathInfo p = new SlingRequestPathInfo(new MockResource(
+            "/some/path", ".."));
         assertEquals("/some/path", p.getResourcePath());
         assertNull(p.getSelectorString());
         assertEquals(0, p.getSelectors().length);
@@ -67,8 +67,8 @@
     }
 
     public void testTrailingDotDotWithSuffix() {
-        RequestPathInfo p = new SlingRequestPathInfo(
-            new MockResource("/some/path"), "/some/path../suffix");
+        RequestPathInfo p = new SlingRequestPathInfo(new MockResource(
+            "/some/path", "../suffix"));
         assertEquals("/some/path", p.getResourcePath());
         assertNull(p.getSelectorString());
         assertEquals(0, p.getSelectors().length);
@@ -77,8 +77,8 @@
     }
 
     public void testTrailingDotDotDot() {
-        RequestPathInfo p = new SlingRequestPathInfo(
-            new MockResource("/some/path"), "/some/path...");
+        RequestPathInfo p = new SlingRequestPathInfo(new MockResource(
+            "/some/path", "..."));
         assertEquals("/some/path", p.getResourcePath());
         assertNull(p.getSelectorString());
         assertEquals(0, p.getSelectors().length);
@@ -87,8 +87,8 @@
     }
 
     public void testTrailingDotDotDotWithSuffix() {
-        RequestPathInfo p = new SlingRequestPathInfo(
-            new MockResource("/some/path"), "/some/path.../suffix");
+        RequestPathInfo p = new SlingRequestPathInfo(new MockResource(
+            "/some/path", ".../suffix"));
         assertEquals("/some/path", p.getResourcePath());
         assertNull(p.getSelectorString());
         assertEquals(0, p.getSelectors().length);
@@ -97,8 +97,8 @@
     }
 
     public void testAllOptions() {
-        RequestPathInfo p = new SlingRequestPathInfo(
-            new MockResource("/some/path"), "/some/path.print.a4.html/some/suffix");
+        RequestPathInfo p = new SlingRequestPathInfo(new MockResource(
+            "/some/path", ".print.a4.html/some/suffix"));
         assertEquals("/some/path", p.getResourcePath());
         assertEquals("print.a4", p.getSelectorString());
         assertEquals(2, p.getSelectors().length);
@@ -110,7 +110,7 @@
 
     public void testAllEmpty() {
         RequestPathInfo p = new SlingRequestPathInfo(
-            new MockResource("/"), null);
+            new MockResource("/", null));
         assertEquals("/", p.getResourcePath());
         assertNull(p.getSelectorString());
         assertEquals(0, p.getSelectors().length);
@@ -120,17 +120,17 @@
 
     public void testPathOnly() {
         RequestPathInfo p = new SlingRequestPathInfo(new MockResource(
-        "/some/path/here"), "/some/path/here");
+            "/some/path/here", ""));
         assertEquals("/some/path/here", p.getResourcePath());
         assertNull(p.getSelectorString());
         assertEquals(0, p.getSelectors().length);
         assertNull(p.getExtension());
         assertNull(p.getSuffix());
     }
-    
+
     public void testPathWithExtensionOnly() {
         RequestPathInfo p = new SlingRequestPathInfo(new MockResource(
-            "/some/path/here.html"), "/some/path/here.html");
+            "/some/path/here.html", ""));
         assertEquals("/some/path/here.html", p.getResourcePath());
         assertNull(p.getSelectorString());
         assertEquals(0, p.getSelectors().length);
@@ -140,7 +140,7 @@
 
     public void testPathAndExtensionOnly() {
         RequestPathInfo p = new SlingRequestPathInfo(new MockResource(
-            "/some/path/here"), "/some/path/here.html");
+            "/some/path/here", ".html"));
         assertEquals("/some/path/here", p.getResourcePath());
         assertNull(p.getSelectorString());
         assertEquals(0, p.getSelectors().length);
@@ -150,7 +150,7 @@
 
     public void testPathAndOneSelectorOnly() {
         RequestPathInfo p = new SlingRequestPathInfo(new MockResource(
-            "/some/path/here"), "/some/path/here.print.html");
+            "/some/path/here", ".print.html"));
         assertEquals("/some/path/here", p.getResourcePath());
         assertEquals("print", p.getSelectorString());
         assertEquals(1, p.getSelectors().length);
@@ -161,7 +161,7 @@
 
     public void testPathExtAndSuffix() {
         RequestPathInfo p = new SlingRequestPathInfo(new MockResource(
-            "/some/path/here"), "/some/path/here.html/something");
+            "/some/path/here", ".html/something"));
         assertEquals("/some/path/here", p.getResourcePath());
         assertNull(p.getSelectorString());
         assertEquals(0, p.getSelectors().length);
@@ -171,7 +171,7 @@
 
     public void testSelectorsSplit() {
         RequestPathInfo p = new SlingRequestPathInfo(new MockResource(
-            "/some/path"), "/some/path.print.a4.html/some/suffix");
+            "/some/path", ".print.a4.html/some/suffix"));
         assertEquals("/some/path", p.getResourcePath());
         assertEquals(2, p.getSelectors().length);
         assertEquals("print", p.getSelectors()[0]);
@@ -182,7 +182,7 @@
 
     public void testPartialResolutionB() {
         RequestPathInfo p = new SlingRequestPathInfo(new MockResource(
-            "/some/path"), "/some/path.print.a4.html/some/suffix");
+            "/some/path", ".print.a4.html/some/suffix"));
         assertEquals("/some/path", p.getResourcePath());
         assertEquals("print.a4", p.getSelectorString());
         assertEquals(2, p.getSelectors().length);
@@ -194,7 +194,7 @@
 
     public void testPartialResolutionC() {
         RequestPathInfo p = new SlingRequestPathInfo(new MockResource(
-            "/some/path.print"), "/some/path.print.a4.html/some/suffix");
+            "/some/path.print", ".a4.html/some/suffix"));
         assertEquals("/some/path.print", p.getResourcePath());
         assertEquals("a4", p.getSelectorString());
         assertEquals(1, p.getSelectors().length);
@@ -205,7 +205,7 @@
 
     public void testPartialResolutionD() {
         RequestPathInfo p = new SlingRequestPathInfo(new MockResource(
-            "/some/path.print.a4"), "/some/path.print.a4.html/some/suffix");
+            "/some/path.print.a4", ".html/some/suffix"));
         assertEquals("/some/path.print.a4", p.getResourcePath());
         assertNull(p.getSelectorString());
         assertEquals(0, p.getSelectors().length);
@@ -214,59 +214,50 @@
     }
 
     public void testJIRA_250_a() {
-    	RequestPathInfo p = 
-            new SlingRequestPathInfo(
-                    new MockResource("/bunkai"), 
-                    "/bunkai.1.json"
-            );
+        RequestPathInfo p = new SlingRequestPathInfo(new MockResource(
+            "/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"
-            );
+        RequestPathInfo p = new SlingRequestPathInfo(new MockResource("/",
+            ".1.json"));
         assertEquals("/", p.getResourcePath());
         assertEquals("json", p.getExtension());
         assertNull(p.getSuffix());
-        assertEquals("Selector string must not be null", "1", p.getSelectorString());
+        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"
-            );
+        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());
+        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"
-            );
+        RequestPathInfo p = new SlingRequestPathInfo(new MockResource("/",
+            ".json"));
         assertEquals("/", p.getResourcePath());
         assertEquals("json", p.getExtension());
         assertNull(p.getSuffix());
         assertNull(p.getSelectorString());
     }
-    
+
     static class MockResource implements Resource {
 
         private final ResourceMetadata metadata;
 
-        MockResource(String resolutionPath) {
+        MockResource(String resolutionPath, String resolutionPathInfo) {
             metadata = new ResourceMetadata();
             metadata.setResolutionPath(resolutionPath);
+            metadata.setResolutionPathInfo(resolutionPathInfo);
         }
 
         public String getResourceType() {
@@ -276,7 +267,7 @@
         public String getResourceSuperType() {
             throw new Error("MockResource does not implement this method");
         }
-        
+
         public String getPath() {
             throw new Error("MockResource does not implement this method");
         }
@@ -288,7 +279,7 @@
         public ResourceResolver getResourceResolver() {
             return null;
         }
-        
+
         public <Type> Type adaptTo(Class<Type> type) {
             return null;
         }