You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2017/01/03 13:18:21 UTC

svn commit: r1777118 - in /sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl: ResourceResolverImpl.java params/ParsedParameters.java params/PathParser.java

Author: cziegeler
Date: Tue Jan  3 13:18:21 2017
New Revision: 1777118

URL: http://svn.apache.org/viewvc?rev=1777118&view=rev
Log:
SLING-6432 : Avoid path parameter parsing with paths containing a dot

Modified:
    sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java
    sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/params/ParsedParameters.java
    sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/params/PathParser.java

Modified: sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java?rev=1777118&r1=1777117&r2=1777118&view=diff
==============================================================================
--- sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java (original)
+++ sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java Tue Jan  3 13:18:21 2017
@@ -683,7 +683,7 @@ public class ResourceResolverImpl extend
         if ( path != null ) {
             // if the path is absolute, normalize . and .. segments and get res
             if (path.startsWith("/")) {
-                ParsedParameters parsedPath = new ParsedParameters(path);
+                final ParsedParameters parsedPath = new ParsedParameters(path);
                 path = ResourceUtil.normalize(parsedPath.getRawPath());
                 result = (path != null) ? getAbsoluteResourceInternal(parent, path, parsedPath.getParameters(), false) : null;
                 if (result != null) {

Modified: sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/params/ParsedParameters.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/params/ParsedParameters.java?rev=1777118&r1=1777117&r2=1777118&view=diff
==============================================================================
--- sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/params/ParsedParameters.java (original)
+++ sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/params/ParsedParameters.java Tue Jan  3 13:18:21 2017
@@ -18,14 +18,13 @@
 
 package org.apache.sling.resourceresolver.impl.params;
 
-import java.util.Collections;
 import java.util.Map;
 
 /**
  * Parses path looking for semicolon-separated parameters. Parameters are extracted and exposed as an
  * immutable map. The path without parameters is available as raw path.
  * 
- * Parameters should be added immedietaly before or after selectors and extension:
+ * Parameters should be added immediately before or after selectors and extension:
  * {@code /content/test;v='1.0'.html} or {@code /content/test.html;v=1.0}. Quotes can be used to escape the
  * parameter value (it is necessary if the value contains dot and parameter is added before extension).
  */
@@ -47,7 +46,7 @@ public class ParsedParameters {
         parser.parse(fullPath);
 
         parametersString = parser.getParametersString();
-        parameters = Collections.unmodifiableMap(parser.getParameters());
+        parameters = parser.getParameters();
         path = parser.getPath();
     }
 

Modified: sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/params/PathParser.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/params/PathParser.java?rev=1777118&r1=1777117&r2=1777118&view=diff
==============================================================================
--- sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/params/PathParser.java (original)
+++ sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/params/PathParser.java Tue Jan  3 13:18:21 2017
@@ -74,12 +74,12 @@ class PathParser {
         }
 
         // indexOf shortcut for the most common case
-        final int di = path.indexOf('.');
         final int si = path.indexOf(';');
-        if (di == -1 && si == -1) {
+        if (si == -1) {
             return;
         }
 
+        final int di = path.indexOf('.');
         final char[] chars = path.toCharArray();
         final ParametersParser parametersParser = new ParametersParser();
 
@@ -150,7 +150,7 @@ class PathParser {
             paramsStart = paramsEnd = -1;
         } else {
             cutPath(path, paramsStart, paramsEnd);
-            parameters = parametersParser.getParameters();
+            parameters = Collections.unmodifiableMap(parametersParser.getParameters());
         }
     }