Author: rombert
Date: Wed Sep 24 12:17:24 2014
New Revision: 1627289

URL: http://svn.apache.org/r1627289
Log:
SLING-3971 - SlingQuery doesn't escape paths in the JCR queries

Submitted by: Tomek Rękawek

Modified:
    
sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/jcr/query/JcrQueryBuilder.java
    
sling/trunk/contrib/extensions/sling-query/src/test/java/org/apache/sling/query/selector/parser/JcrMultiSelectorTest.java
    
sling/trunk/contrib/extensions/sling-query/src/test/java/org/apache/sling/query/selector/parser/JcrSelectorTest.java

Modified: 
sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/jcr/query/JcrQueryBuilder.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/jcr/query/JcrQueryBuilder.java?rev=1627289&r1=1627288&r2=1627289&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/jcr/query/JcrQueryBuilder.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-query/src/main/java/org/apache/sling/query/resource/jcr/query/JcrQueryBuilder.java
 Wed Sep 24 12:17:24 2014
@@ -55,7 +55,7 @@ public class JcrQueryBuilder {
                Formula formula = prepareAlternativeConditions(segments);
                if (StringUtils.isNotBlank(rootPath) && !"/".equals(rootPath)) {
                        List<Term> conditions = new ArrayList<Term>();
-                       conditions.add(new 
Atomic(String.format("ISDESCENDANTNODE([%s])", rootPath)));
+                       conditions.add(new 
Atomic(String.format("ISDESCENDANTNODE(['%s'])", rootPath)));
                        if (formula != null) {
                                conditions.add(formula);
                        }

Modified: 
sling/trunk/contrib/extensions/sling-query/src/test/java/org/apache/sling/query/selector/parser/JcrMultiSelectorTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/test/java/org/apache/sling/query/selector/parser/JcrMultiSelectorTest.java?rev=1627289&r1=1627288&r2=1627289&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/sling-query/src/test/java/org/apache/sling/query/selector/parser/JcrMultiSelectorTest.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-query/src/test/java/org/apache/sling/query/selector/parser/JcrMultiSelectorTest.java
 Wed Sep 24 12:17:24 2014
@@ -52,7 +52,7 @@ public class JcrMultiSelectorTest {
        @Test
        public void attributesWithPath() {
                final String selector = "[x=y][y=z], [a=b][c=d]";
-               final String jcrQuery = "SELECT * FROM [nt:base] AS s WHERE 
(ISDESCENDANTNODE([/content]) AND ((s.[x] = 'y' AND s.[y] = 'z') OR (s.[a] = 
'b' AND s.[c] = 'd')))";
+               final String jcrQuery = "SELECT * FROM [nt:base] AS s WHERE 
(ISDESCENDANTNODE(['/content']) AND ((s.[x] = 'y' AND s.[y] = 'z') OR (s.[a] = 
'b' AND s.[c] = 'd')))";
                Assert.assertEquals(jcrQuery, parse(selector, "/content"));
        }
 }

Modified: 
sling/trunk/contrib/extensions/sling-query/src/test/java/org/apache/sling/query/selector/parser/JcrSelectorTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/sling-query/src/test/java/org/apache/sling/query/selector/parser/JcrSelectorTest.java?rev=1627289&r1=1627288&r2=1627289&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/sling-query/src/test/java/org/apache/sling/query/selector/parser/JcrSelectorTest.java
 (original)
+++ 
sling/trunk/contrib/extensions/sling-query/src/test/java/org/apache/sling/query/selector/parser/JcrSelectorTest.java
 Wed Sep 24 12:17:24 2014
@@ -47,7 +47,7 @@ public class JcrSelectorTest {
        @Test
        public void parsePath() {
                final String selector = "cq:Page";
-               final String jcrQuery = "SELECT * FROM [cq:Page] AS s WHERE 
ISDESCENDANTNODE([/content])";
+               final String jcrQuery = "SELECT * FROM [cq:Page] AS s WHERE 
ISDESCENDANTNODE(['/content'])";
                Assert.assertEquals(jcrQuery, parse(selector, "/content"));
        }
 
@@ -117,14 +117,14 @@ public class JcrSelectorTest {
        @Test
        public void parseMultipleConditionsWithResourceTypeAndPath() {
                final String selector = 
"foundation/components/parsys[key1=value1][key2=value2]";
-               final String jcrQuery = "SELECT * FROM [nt:base] AS s WHERE 
(ISDESCENDANTNODE([/content]) AND (s.[sling:resourceType] = 
'foundation/components/parsys' AND s.[key1] = 'value1' AND s.[key2] = 
'value2'))";
+               final String jcrQuery = "SELECT * FROM [nt:base] AS s WHERE 
(ISDESCENDANTNODE(['/content']) AND (s.[sling:resourceType] = 
'foundation/components/parsys' AND s.[key1] = 'value1' AND s.[key2] = 
'value2'))";
                Assert.assertEquals(jcrQuery, parse(selector, "/content"));
        }
 
        @Test
        public void parseAttributeWithSubresource() {
                final String selector = "cq:Page[jcr:content/cq:template=xyz]";
-               final String jcrQuery = "SELECT * FROM [cq:Page] AS s WHERE 
ISDESCENDANTNODE([/content])";
+               final String jcrQuery = "SELECT * FROM [cq:Page] AS s WHERE 
ISDESCENDANTNODE(['/content'])";
                Assert.assertEquals(jcrQuery, parse(selector, "/content"));
        }
 


Reply via email to