You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2021/09/09 10:17:23 UTC
[sling-org-apache-sling-resourceresolver] branch master updated:
SLING-10447 Adjust query so that sling:vanityPath properties are not
searched in the JCR version storage
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-resourceresolver.git
The following commit(s) were added to refs/heads/master by this push:
new ea9a345 SLING-10447 Adjust query so that sling:vanityPath properties are not searched in the JCR version storage
ea9a345 is described below
commit ea9a34577edf7eff53b5a8f8bd4f1417a72af5aa
Author: Henry Kuijpers <He...@amplexor.com>
AuthorDate: Thu Aug 26 13:10:17 2021 +0200
SLING-10447 Adjust query so that sling:vanityPath properties are not searched in the JCR version storage
---
.../resourceresolver/impl/mapping/MapEntries.java | 18 ++++++++++++++----
.../impl/mapping/InMemoryResourceProvider.java | 2 +-
2 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java
index 3047d30..9568dab 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java
@@ -86,7 +86,10 @@ public class MapEntries implements
public static final int DEFAULT_DEFAULT_VANITY_PATH_REDIRECT_STATUS = HttpServletResponse.SC_FOUND;
- private static final String JCR_SYSTEM_PREFIX = "/jcr:system/";
+ @SuppressWarnings("java:S1075") // Repository path
+ private static final String JCR_SYSTEM_PATH = "/jcr:system";
+
+ private static final String JCR_SYSTEM_PREFIX = JCR_SYSTEM_PATH + '/';
static final String ALIAS_BASE_QUERY_DEFAULT = "SELECT sling:alias FROM nt:base AS page";
@@ -816,8 +819,12 @@ public class MapEntries implements
Map<String, List<MapEntry>> entryMap = new HashMap<>();
// sling:vanityPath (lowercase) is the property name
- final String queryString = "SELECT sling:vanityPath, sling:redirect, sling:redirectStatus FROM nt:base WHERE sling:vanityPath ="
- + "'"+escapeIllegalXpathSearchChars(vanityPath).replaceAll("'", "''")+"' OR sling:vanityPath ="+ "'"+escapeIllegalXpathSearchChars(vanityPath.substring(1)).replaceAll("'", "''")+"' ORDER BY sling:vanityOrder DESC";
+ final String queryString = "SELECT sling:vanityPath, sling:redirect, sling:redirectStatus" +
+ " FROM nt:base" +
+ " WHERE NOT isdescendantnode('" + JCR_SYSTEM_PATH + "') and (" +
+ "sling:vanityPath ='"+escapeIllegalXpathSearchChars(vanityPath).replaceAll("'", "''")+"'" +
+ " OR sling:vanityPath ="+ "'"+escapeIllegalXpathSearchChars(vanityPath.substring(1)).replaceAll("'", "''")+"'" +
+ ") ORDER BY sling:vanityOrder DESC";
ResourceResolver queryResolver = null;
@@ -1156,7 +1163,10 @@ public class MapEntries implements
private Map <String, List<String>> loadVanityPaths(boolean createVanityBloomFilter) {
// sling:vanityPath (lowercase) is the property name
final Map <String, List<String>> targetPaths = new ConcurrentHashMap <>();
- final String queryString = "SELECT sling:vanityPath, sling:redirect, sling:redirectStatus FROM nt:base WHERE sling:vanityPath IS NOT NULL";
+ final String queryString = "SELECT sling:vanityPath, sling:redirect, sling:redirectStatus" +
+ " FROM nt:base" +
+ " WHERE NOT isdescendantnode('" + JCR_SYSTEM_PATH + "')" +
+ " AND sling:vanityPath IS NOT NULL";
final Iterator<Resource> i = resolver.findResources(queryString, "sql");
Supplier<Boolean> isCacheComplete = () -> isAllVanityPathEntriesCached() || vanityCounter.longValue() < this.factory.getMaxCachedVanityPathEntries();
diff --git a/src/test/java/org/apache/sling/resourceresolver/impl/mapping/InMemoryResourceProvider.java b/src/test/java/org/apache/sling/resourceresolver/impl/mapping/InMemoryResourceProvider.java
index 57ebaeb..235b37a 100644
--- a/src/test/java/org/apache/sling/resourceresolver/impl/mapping/InMemoryResourceProvider.java
+++ b/src/test/java/org/apache/sling/resourceresolver/impl/mapping/InMemoryResourceProvider.java
@@ -104,7 +104,7 @@ public class InMemoryResourceProvider extends ResourceProvider<Void>{
.iterator();
}
- if ( "SELECT sling:vanityPath, sling:redirect, sling:redirectStatus FROM nt:base WHERE sling:vanityPath IS NOT NULL".equals(query) ) {
+ if ( "SELECT sling:vanityPath, sling:redirect, sling:redirectStatus FROM nt:base WHERE NOT isdescendantnode('/jcr:system') AND sling:vanityPath IS NOT NULL".equals(query) ) {
return resourcesWithProperty(ctx, "sling:vanityPath")
.iterator();
}