You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ju...@apache.org on 2011/08/08 23:20:28 UTC

svn commit: r1155107 - /sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/SlingIOProvider.java

Author: justin
Date: Mon Aug  8 21:20:28 2011
New Revision: 1155107

URL: http://svn.apache.org/viewvc?rev=1155107&view=rev
Log:
SLING-2138 - initial implementation

Modified:
    sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/SlingIOProvider.java

Modified: sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/SlingIOProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/SlingIOProvider.java?rev=1155107&r1=1155106&r2=1155107&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/SlingIOProvider.java (original)
+++ sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/SlingIOProvider.java Mon Aug  8 21:20:28 2011
@@ -40,6 +40,8 @@ import org.slf4j.LoggerFactory;
  */
 class SlingIOProvider implements IOProvider {
 
+    private static final String WEB_INF_TAGS = "/WEB-INF/tags";
+
     /** default log */
     private final Logger log = LoggerFactory.getLogger(SlingIOProvider.class);
 
@@ -165,11 +167,19 @@ class SlingIOProvider implements IOProvi
         ResourceResolver resolver = requestResourceResolver.get();
         if (resolver != null) {
             try {
-                Resource resource = resolver.getResource(cleanPath(path));
+                final String cleanedPath = cleanPath(path, false);
+                final boolean startsWithWebInfTags = cleanedPath.startsWith(WEB_INF_TAGS);
+
+                Resource resource = resolver.getResource(startsWithWebInfTags ? cleanedPath.substring(WEB_INF_TAGS.length()) : cleanedPath);
                 if (resource != null) {
                     Iterator<Resource> entries = resolver.listChildren(resource);
                     while (entries.hasNext()) {
-                        paths.add(entries.next().getPath());
+                        final String entryPath = entries.next().getPath();
+                        if (startsWithWebInfTags) {
+                            paths.add(WEB_INF_TAGS + entryPath);
+                        } else {
+                            paths.add(entryPath);
+                        }
                     }
                 }
             } catch (SlingException se) {
@@ -184,7 +194,7 @@ class SlingIOProvider implements IOProvi
     private Resource getResourceInternal(String path) throws SlingException {
         ResourceResolver resolver = requestResourceResolver.get();
         if (resolver != null) {
-            return resolver.getResource(cleanPath(path));
+            return resolver.getResource(cleanPath(path, true));
         }
 
         return null;
@@ -192,7 +202,7 @@ class SlingIOProvider implements IOProvi
 
     // ---------- internal -----------------------------------------------------
 
-    private String cleanPath(String path) {
+    private String cleanPath(String path, boolean removeWebInfTags) {
         // replace backslash by slash
         path = path.replace('\\', '/');
 
@@ -201,6 +211,10 @@ class SlingIOProvider implements IOProvi
             path = path.substring(0, path.length() - 1);
         }
 
+        if (removeWebInfTags && path.startsWith(WEB_INF_TAGS)) {
+            path = path.substring(WEB_INF_TAGS.length());
+        }
+
         return path;
     }
 }