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")); }