You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ss...@apache.org on 2015/09/16 21:25:12 UTC
svn commit: r1703453 - in /sling/trunk/contrib/nosql:
couchbase-resourceprovider/src/main/java/org/apache/sling/nosql/couchbase/resourceprovider/impl/
generic/src/main/java/org/apache/sling/nosql/generic/resource/impl/
generic/src/test/java/org/apache/...
Author: sseifert
Date: Wed Sep 16 19:25:11 2015
New Revision: 1703453
URL: http://svn.apache.org/r1703453
Log:
SLING-4381/SLING-5024 fix root node child listing
Modified:
sling/trunk/contrib/nosql/couchbase-resourceprovider/src/main/java/org/apache/sling/nosql/couchbase/resourceprovider/impl/CouchbaseNoSqlAdapter.java
sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/resource/impl/PathUtil.java
sling/trunk/contrib/nosql/generic/src/test/java/org/apache/sling/nosql/generic/resource/impl/AbstractNoSqlResourceProviderRootTest.java
sling/trunk/contrib/nosql/mongodb-resourceprovider/src/main/java/org/apache/sling/nosql/mongodb/resourceprovider/impl/MongoDBNoSqlAdapter.java
Modified: sling/trunk/contrib/nosql/couchbase-resourceprovider/src/main/java/org/apache/sling/nosql/couchbase/resourceprovider/impl/CouchbaseNoSqlAdapter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/nosql/couchbase-resourceprovider/src/main/java/org/apache/sling/nosql/couchbase/resourceprovider/impl/CouchbaseNoSqlAdapter.java?rev=1703453&r1=1703452&r2=1703453&view=diff
==============================================================================
--- sling/trunk/contrib/nosql/couchbase-resourceprovider/src/main/java/org/apache/sling/nosql/couchbase/resourceprovider/impl/CouchbaseNoSqlAdapter.java (original)
+++ sling/trunk/contrib/nosql/couchbase-resourceprovider/src/main/java/org/apache/sling/nosql/couchbase/resourceprovider/impl/CouchbaseNoSqlAdapter.java Wed Sep 16 19:25:11 2015
@@ -97,7 +97,7 @@ public final class CouchbaseNoSqlAdapter
public Iterator<NoSqlData> getChildren(String parentPath) {
Bucket bucket = couchbaseClient.getBucket();
// fetch all direct children of this path
- Pattern directChildren = Pattern.compile("^" + parentPath + "/[^/]+$");
+ Pattern directChildren = Pattern.compile("^" + StringUtils.removeEnd(parentPath, "/") + "/[^/]+$");
N1qlQuery query = N1qlQuery.simple(select("*")
.from(couchbaseClient.getBucketName())
.where("REGEXP_LIKE(`" + PN_PATH + "`, '" + directChildren.pattern() + "')"),
Modified: sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/resource/impl/PathUtil.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/resource/impl/PathUtil.java?rev=1703453&r1=1703452&r2=1703453&view=diff
==============================================================================
--- sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/resource/impl/PathUtil.java (original)
+++ sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/resource/impl/PathUtil.java Wed Sep 16 19:25:11 2015
@@ -20,6 +20,8 @@ package org.apache.sling.nosql.generic.r
import java.util.regex.Pattern;
+import org.apache.commons.lang3.StringUtils;
+
/**
* Helper functions for handling paths.
*/
@@ -35,7 +37,7 @@ public final class PathUtil {
* @return Regex pattern
*/
public static Pattern getChildPathPattern(String parentPath) {
- return Pattern.compile("^" + Pattern.quote(parentPath) + "/[^/]+$");
+ return Pattern.compile("^" + Pattern.quote(StringUtils.removeEnd(parentPath, "/")) + "/[^/]+$");
}
/**
Modified: sling/trunk/contrib/nosql/generic/src/test/java/org/apache/sling/nosql/generic/resource/impl/AbstractNoSqlResourceProviderRootTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/nosql/generic/src/test/java/org/apache/sling/nosql/generic/resource/impl/AbstractNoSqlResourceProviderRootTest.java?rev=1703453&r1=1703452&r2=1703453&view=diff
==============================================================================
--- sling/trunk/contrib/nosql/generic/src/test/java/org/apache/sling/nosql/generic/resource/impl/AbstractNoSqlResourceProviderRootTest.java (original)
+++ sling/trunk/contrib/nosql/generic/src/test/java/org/apache/sling/nosql/generic/resource/impl/AbstractNoSqlResourceProviderRootTest.java Wed Sep 16 19:25:11 2015
@@ -18,9 +18,14 @@
*/
package org.apache.sling.nosql.generic.resource.impl;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
+import java.io.IOException;
+import java.util.List;
+
+import org.apache.commons.lang3.StringUtils;
import org.apache.jackrabbit.JcrConstants;
import org.apache.sling.api.resource.ModifiableValueMap;
import org.apache.sling.api.resource.PersistenceException;
@@ -34,6 +39,7 @@ import org.junit.Rule;
import org.junit.Test;
import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Lists;
/**
* Test monting NoSqlResourceProvider as root resource provider.
@@ -77,6 +83,34 @@ public abstract class AbstractNoSqlResou
context.resourceResolver().delete(test);
}
+ @Test
+ public void testListChildren_RootNode() throws IOException {
+ Resource testResource = ResourceUtil.getOrCreateResource(context.resourceResolver(), "/test",
+ ImmutableMap.<String, Object>of(JcrConstants.JCR_PRIMARYTYPE, JcrConstants.NT_UNSTRUCTURED),
+ JcrConstants.NT_UNSTRUCTURED, true);
+
+ Resource root = context.resourceResolver().getResource("/");
+
+ List<Resource> children = Lists.newArrayList(root.listChildren());
+ assertFalse(children.isEmpty());
+ assertTrue(containsResource(children, testResource));
+
+ children = Lists.newArrayList(root.getChildren());
+ assertFalse(children.isEmpty());
+ assertTrue(containsResource(children, testResource));
+
+ context.resourceResolver().delete(testResource);
+ }
+
+ private boolean containsResource(List<Resource> children, Resource resource) {
+ for (Resource child : children) {
+ if (StringUtils.equals(child.getPath(), resource.getPath())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
@Test(expected = PersistenceException.class)
public void testDeleteRootPath() throws PersistenceException {
Resource root = context.resourceResolver().getResource("/");
Modified: sling/trunk/contrib/nosql/mongodb-resourceprovider/src/main/java/org/apache/sling/nosql/mongodb/resourceprovider/impl/MongoDBNoSqlAdapter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/nosql/mongodb-resourceprovider/src/main/java/org/apache/sling/nosql/mongodb/resourceprovider/impl/MongoDBNoSqlAdapter.java?rev=1703453&r1=1703452&r2=1703453&view=diff
==============================================================================
--- sling/trunk/contrib/nosql/mongodb-resourceprovider/src/main/java/org/apache/sling/nosql/mongodb/resourceprovider/impl/MongoDBNoSqlAdapter.java (original)
+++ sling/trunk/contrib/nosql/mongodb-resourceprovider/src/main/java/org/apache/sling/nosql/mongodb/resourceprovider/impl/MongoDBNoSqlAdapter.java Wed Sep 16 19:25:11 2015
@@ -23,6 +23,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.regex.Pattern;
+import org.apache.commons.lang3.StringUtils;
import org.apache.sling.nosql.generic.adapter.AbstractNoSqlAdapter;
import org.apache.sling.nosql.generic.adapter.MultiValueMode;
import org.apache.sling.nosql.generic.adapter.NoSqlData;
@@ -72,7 +73,7 @@ public final class MongoDBNoSqlAdapter e
@Override
public Iterator<NoSqlData> getChildren(String parentPath) {
List<NoSqlData> children = new ArrayList<>();
- Pattern directChildren = Pattern.compile("^" + Pattern.quote(parentPath) + "/[^/]+$");
+ Pattern directChildren = Pattern.compile("^" + Pattern.quote(StringUtils.removeEnd(parentPath, "/")) + "/[^/]+$");
FindIterable<Document> result = collection.find(Filters.regex(ID_PROPERTY, directChildren));
try (MongoCursor<Document> wrappers = result.iterator()) {
while (wrappers.hasNext()) {