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 2018/03/08 13:20:30 UTC
[sling-org-apache-sling-resourceresolver] branch master updated:
SLING-7537 : Provide a way to get the search paths without login into a
resource resolver
This is an automated email from the ASF dual-hosted git repository.
cziegeler 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 97d21b7 SLING-7537 : Provide a way to get the search paths without login into a resource resolver
97d21b7 is described below
commit 97d21b7997c541f0407f6f89368f1fa106b5fdc6
Author: Carsten Ziegeler <cz...@adobe.com>
AuthorDate: Thu Mar 8 14:20:24 2018 +0100
SLING-7537 : Provide a way to get the search paths without login into a resource resolver
---
pom.xml | 2 +-
.../impl/CommonResourceResolverFactoryImpl.java | 3 +-
.../impl/ResourceResolverFactoryActivator.java | 25 +++++++++--------
.../impl/ResourceResolverFactoryImpl.java | 17 +++++++++---
.../impl/ResourceResolverImpl.java | 31 +++++++++++----------
.../resourceresolver/impl/ResourceTypeUtil.java | 14 ++++++----
.../impl/observation/BasicObservationReporter.java | 8 +++---
.../impl/observation/ResourceChangeListImpl.java | 6 ++--
.../observation/ResourceChangeListenerInfo.java | 11 ++++----
.../ResourceChangeListenerWhiteboard.java | 4 +--
.../impl/ResourceResolverImplTest.java | 32 +++++++++++-----------
.../impl/ResourceTypeUtilTest.java | 28 +++++++++++--------
.../observation/BasicObservationReporterTest.java | 23 ++++++++--------
.../ResourceChangeListenerInfoTest.java | 10 +++++--
14 files changed, 122 insertions(+), 92 deletions(-)
diff --git a/pom.xml b/pom.xml
index adc9a86..7275590 100644
--- a/pom.xml
+++ b/pom.xml
@@ -103,7 +103,7 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.api</artifactId>
- <version>2.16.2</version>
+ <version>2.16.5-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/CommonResourceResolverFactoryImpl.java b/src/main/java/org/apache/sling/resourceresolver/impl/CommonResourceResolverFactoryImpl.java
index 92f44b4..8cef27d 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/CommonResourceResolverFactoryImpl.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/CommonResourceResolverFactoryImpl.java
@@ -343,7 +343,8 @@ public class CommonResourceResolverFactoryImpl implements ResourceResolverFactor
return this.activator.getResourceDecoratorTracker();
}
- public String[] getSearchPath() {
+ @Override
+ public List<String> getSearchPath() {
return this.activator.getSearchPath();
}
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryActivator.java b/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryActivator.java
index 12aa1c5..5984363 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryActivator.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryActivator.java
@@ -97,7 +97,7 @@ public class ResourceResolverFactoryActivator {
private volatile BidiMap virtualURLMap;
/** the search path for ResourceResolver.getResource(String) */
- private volatile String[] searchPath;
+ private volatile List<String> searchPath = Collections.emptyList();
/** the root location of the /etc/map entries */
private volatile String mapRoot;
@@ -167,7 +167,7 @@ public class ResourceResolverFactoryActivator {
return mappings;
}
- public String[] getSearchPath() {
+ public List<String> getSearchPath() {
return searchPath;
}
@@ -267,22 +267,25 @@ public class ResourceResolverFactoryActivator {
}
// from configuration if available
- searchPath = config.resource_resolver_searchpath();
- if (searchPath != null && searchPath.length > 0) {
- for (int i = 0; i < searchPath.length; i++) {
+ final List<String> searchPathList = new ArrayList<>();
+ if (config.resource_resolver_searchpath() != null && config.resource_resolver_searchpath().length > 0) {
+ for(String path : config.resource_resolver_searchpath()) {
// ensure leading slash
- if (!searchPath[i].startsWith("/")) {
- searchPath[i] = "/" + searchPath[i];
+ if (!path.startsWith("/")) {
+ path = "/".concat(path);
}
// ensure trailing slash
- if (!searchPath[i].endsWith("/")) {
- searchPath[i] += "/";
+ if (!path.endsWith("/")) {
+ path = path.concat("/");
}
+ searchPathList.add(path);
}
}
- if (searchPath == null) {
- searchPath = new String[] { "/" };
+ if (searchPathList.isEmpty()) {
+ searchPathList.add("/");
}
+ this.searchPath = Collections.unmodifiableList(searchPathList);
+
// the root of the resolver mappings
mapRoot = config.resource_resolver_map_location();
mapRootPrefix = mapRoot + '/';
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryImpl.java b/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryImpl.java
index b325563..f0f466c 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryImpl.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryImpl.java
@@ -19,6 +19,7 @@
package org.apache.sling.resourceresolver.impl;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import org.apache.sling.api.resource.LoginException;
@@ -63,7 +64,7 @@ public class ResourceResolverFactoryImpl implements ResourceResolverFactory {
@Override
public ResourceResolver getServiceResourceResolver(final Map<String, Object> passedAuthenticationInfo) throws LoginException {
// create a copy of the passed authentication info as we modify the map
- final Map<String, Object> authenticationInfo = new HashMap<String, Object>();
+ final Map<String, Object> authenticationInfo = new HashMap<>();
final String subServiceName;
if ( passedAuthenticationInfo != null ) {
authenticationInfo.putAll(passedAuthenticationInfo);
@@ -112,11 +113,11 @@ public class ResourceResolverFactoryImpl implements ResourceResolverFactory {
public ResourceResolver getAdministrativeResourceResolver(
Map<String, Object> authenticationInfo) throws LoginException {
// usingBundle is required as bundles must now be whitelisted to use this method
- if(usingBundle == null) {
+ if (usingBundle == null) {
throw new LoginException("usingBundle is null");
}
- if(authenticationInfo == null) {
- authenticationInfo = new HashMap<String, Object>();
+ if (authenticationInfo == null) {
+ authenticationInfo = new HashMap<>();
}
authenticationInfo.put(ResourceProvider.AUTH_SERVICE_BUNDLE, this.usingBundle);
return commonFactory.getAdministrativeResourceResolver(authenticationInfo);
@@ -129,4 +130,12 @@ public class ResourceResolverFactoryImpl implements ResourceResolverFactory {
public ResourceResolver getThreadResourceResolver() {
return commonFactory.getThreadResourceResolver();
}
+
+ /**
+ * @see org.apache.sling.api.resource.ResourceResolverFactory#getSearchPath()
+ */
+ @Override
+ public List<String> getSearchPath() {
+ return commonFactory.getSearchPath();
+ }
}
\ No newline at end of file
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java b/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java
index f2d2f0a..66eba96 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java
@@ -26,6 +26,7 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
+import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;
@@ -355,10 +356,12 @@ public class ResourceResolverImpl extends SlingAdaptable implements ResourceReso
} else {
- final String[] searchPath = getSearchPath();
- for (int spi = 0; res == null && spi < searchPath.length; spi++) {
- logger.debug("resolve: Try relative mapped path with search path entry {}", searchPath[spi]);
- res = resolveInternal(searchPath[spi] + realPath, parsedPath.getParameters());
+ for(final String path : factory.getSearchPath()) {
+ logger.debug("resolve: Try relative mapped path with search path entry {}", path);
+ res = resolveInternal(path + realPath, parsedPath.getParameters());
+ if ( res != null ) {
+ break;
+ }
}
}
@@ -614,7 +617,8 @@ public class ResourceResolverImpl extends SlingAdaptable implements ResourceReso
@Override
public String[] getSearchPath() {
checkClosed();
- return factory.getSearchPath().clone();
+ final List<String> searchPath = factory.getSearchPath();
+ return searchPath.toArray(new String[searchPath.size()]);
}
// ---------- direct resource access without resolution
@@ -679,13 +683,10 @@ public class ResourceResolverImpl extends SlingAdaptable implements ResourceReso
// otherwise we have to apply the search path
// (don't use this.getSearchPath() to save a few cycle for not cloning)
- final String[] paths = factory.getSearchPath();
- if (paths != null) {
- for (final String prefix : factory.getSearchPath()) {
- result = getResource(prefix + path);
- if (result != null) {
- break;
- }
+ for (final String prefix : factory.getSearchPath()) {
+ result = getResource(prefix + path);
+ if (result != null) {
+ break;
}
}
}
@@ -1094,7 +1095,7 @@ public class ResourceResolverImpl extends SlingAdaptable implements ResourceReso
*/
private String ensureAbsPath(String path) {
if (!path.startsWith("/")) {
- path = getSearchPath()[0] + path;
+ path = factory.getSearchPath().get(0) + path;
}
return path;
}
@@ -1229,13 +1230,13 @@ public class ResourceResolverImpl extends SlingAdaptable implements ResourceReso
// Check if the resource is of the given type. This method first checks the
// resource type of the resource, then its super resource type and continues
// to go up the resource super type hierarchy.
- if (ResourceTypeUtil.areResourceTypesEqual(resourceType, resource.getResourceType(), getSearchPath())) {
+ if (ResourceTypeUtil.areResourceTypesEqual(resourceType, resource.getResourceType(), factory.getSearchPath())) {
result = true;
} else {
Set<String> superTypesChecked = new HashSet<>();
String superType = this.getParentResourceType(resource);
while (!result && superType != null) {
- if (ResourceTypeUtil.areResourceTypesEqual(resourceType, superType, getSearchPath())) {
+ if (ResourceTypeUtil.areResourceTypesEqual(resourceType, superType, factory.getSearchPath())) {
result = true;
} else {
superTypesChecked.add(superType);
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/ResourceTypeUtil.java b/src/main/java/org/apache/sling/resourceresolver/impl/ResourceTypeUtil.java
index d069275..28d9ea9 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/ResourceTypeUtil.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/ResourceTypeUtil.java
@@ -18,8 +18,12 @@
*/
package org.apache.sling.resourceresolver.impl;
+import java.util.List;
+
import javax.annotation.Nonnull;
+import org.apache.sling.api.resource.ResourceResolver;
+
/**
* Some helper methods for doing comparisons on resource types.
* This class is private the resource resolver bundle.
@@ -29,17 +33,17 @@ public class ResourceTypeUtil {
/**
* Returns <code>true</code> if the given resource type are equal.
- *
- * In case the value of any of the given resource types
+ *
+ * In case the value of any of the given resource types
* starts with one of the resource resolver's search paths
- * it is converted to a relative resource type by stripping off
+ * it is converted to a relative resource type by stripping off
* the resource resolver's search path before doing the comparison.
*
* @param resourceType A resource type
* @param anotherResourceType Another resource type to compare with {@link resourceType}.
* @return <code>true</code> if the resource type equals the given resource type.
*/
- public static boolean areResourceTypesEqual(@Nonnull String resourceType, @Nonnull String anotherResourceType, @Nonnull String[] searchPath) {
+ public static boolean areResourceTypesEqual(@Nonnull String resourceType, @Nonnull String anotherResourceType, @Nonnull List<String> searchPath) {
return relativizeResourceType(resourceType, searchPath).equals(relativizeResourceType(anotherResourceType, searchPath));
}
@@ -50,7 +54,7 @@ public class ResourceTypeUtil {
* @param searchPath the search paths to strip off from the given resource type.
* @return the relative resource type
*/
- public static String relativizeResourceType(@Nonnull String resourceType, @Nonnull String[] searchPath) {
+ public static String relativizeResourceType(@Nonnull String resourceType, @Nonnull List<String> searchPath) {
if (resourceType.startsWith("/")) {
for (String prefix : searchPath) {
if (resourceType.startsWith(prefix)) {
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/observation/BasicObservationReporter.java b/src/main/java/org/apache/sling/resourceresolver/impl/observation/BasicObservationReporter.java
index 2a7334a..54b2e8c 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/observation/BasicObservationReporter.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/observation/BasicObservationReporter.java
@@ -46,7 +46,7 @@ public class BasicObservationReporter implements ObservationReporter {
private final List<ObserverConfiguration> configs;
/** The search path. */
- private final String[] searchPath;
+ private final List<String> searchPath;
/**
* Create a reporter listening for resource provider changes
@@ -55,10 +55,10 @@ public class BasicObservationReporter implements ObservationReporter {
* @param infos The listeners map
*/
public BasicObservationReporter(
- final String[] searchPath,
+ final List<String> searchPath,
final Collection<ResourceChangeListenerInfo> infos) {
this.searchPath = searchPath;
- final Set<String> paths = new HashSet<String>();
+ final Set<String> paths = new HashSet<>();
final List<ResourceChangeListenerInfo> result = new ArrayList<>();
for(final ResourceChangeListenerInfo info : infos) {
if ( !info.getProviderChangeTypes().isEmpty() ) {
@@ -84,7 +84,7 @@ public class BasicObservationReporter implements ObservationReporter {
* @param excludePaths Excluded paths for that provider
*/
public BasicObservationReporter(
- final String[] searchPath,
+ final List<String> searchPath,
final Collection<ResourceChangeListenerInfo> infos,
final Path providerPath,
final PathSet excludePaths) {
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/observation/ResourceChangeListImpl.java b/src/main/java/org/apache/sling/resourceresolver/impl/observation/ResourceChangeListImpl.java
index a128091..92d2780 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/observation/ResourceChangeListImpl.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/observation/ResourceChangeListImpl.java
@@ -29,13 +29,13 @@ import org.apache.sling.api.resource.observation.ResourceChangeList;
public class ResourceChangeListImpl implements ResourceChangeList {
- private final String[] searchPath;
+ private final List<String> searchPath;
private boolean locked = false;
private final ArrayList<ResourceChange> list = new ArrayList<>();
- public ResourceChangeListImpl(final String[] searchPath) {
+ public ResourceChangeListImpl(final List<String> searchPath) {
this.searchPath = searchPath;
}
@@ -163,7 +163,7 @@ public class ResourceChangeListImpl implements ResourceChangeList {
@Override
public String[] getSearchPath() {
- return this.searchPath.clone();
+ return this.searchPath.toArray(new String[this.searchPath.size()]);
}
@Override
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/observation/ResourceChangeListenerInfo.java b/src/main/java/org/apache/sling/resourceresolver/impl/observation/ResourceChangeListenerInfo.java
index 0d9eadb..70c7238 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/observation/ResourceChangeListenerInfo.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/observation/ResourceChangeListenerInfo.java
@@ -26,6 +26,7 @@ import java.util.Collections;
import java.util.EnumSet;
import java.util.HashSet;
import java.util.Iterator;
+import java.util.List;
import java.util.Set;
import java.util.TreeSet;
@@ -61,9 +62,9 @@ public class ResourceChangeListenerInfo implements Comparable<ResourceChangeList
private volatile ResourceChangeListener listener;
- public ResourceChangeListenerInfo(final ServiceReference<ResourceChangeListener> ref, final String[] searchPaths) {
+ public ResourceChangeListenerInfo(final ServiceReference<ResourceChangeListener> ref, final List<String> searchPaths) {
boolean configValid = true;
- final Set<String> pathsSet = new HashSet<String>();
+ final Set<String> pathsSet = new HashSet<>();
final String paths[] = toStringArray(ref.getProperty(PATHS), null);
if ( paths != null ) {
for(final String p : paths) {
@@ -115,8 +116,8 @@ public class ResourceChangeListenerInfo implements Comparable<ResourceChangeList
}
this.paths = PathSet.fromStringCollection(pathsSet);
if (ref.getProperty(CHANGES) != null ) {
- final Set<ChangeType> rts = new HashSet<ChangeType>();
- final Set<ChangeType> pts = new HashSet<ChangeType>();
+ final Set<ChangeType> rts = new HashSet<>();
+ final Set<ChangeType> pts = new HashSet<>();
try {
for (final String changeName : toStringArray(ref.getProperty(CHANGES))) {
final ChangeType ct = ChangeType.valueOf(changeName);
@@ -151,7 +152,7 @@ public class ResourceChangeListenerInfo implements Comparable<ResourceChangeList
}
if ( ref.getProperty(ResourceChangeListener.PROPERTY_NAMES_HINT) != null ) {
- this.propertyNamesHint = new HashSet<String>();
+ this.propertyNamesHint = new HashSet<>();
for(final String val : PropertiesUtil.toStringArray(ref.getProperty(ResourceChangeListener.PROPERTY_NAMES_HINT)) ) {
this.propertyNamesHint.add(val);
}
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/observation/ResourceChangeListenerWhiteboard.java b/src/main/java/org/apache/sling/resourceresolver/impl/observation/ResourceChangeListenerWhiteboard.java
index 9c4b0c9..cb947aa 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/observation/ResourceChangeListenerWhiteboard.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/observation/ResourceChangeListenerWhiteboard.java
@@ -51,11 +51,11 @@ public class ResourceChangeListenerWhiteboard implements ResourceProviderTracker
private volatile ServiceTracker<ResourceChangeListener, ServiceReference<ResourceChangeListener>> tracker;
- private volatile String[] searchPath;
+ private volatile List<String> searchPath;
public void activate(final BundleContext bundleContext,
final ResourceProviderTracker resourceProviderTracker,
- final String[] searchPath) {
+ final List<String> searchPath) {
this.searchPath = searchPath;
this.resourceProviderTracker = resourceProviderTracker;
this.resourceProviderTracker.setObservationReporterGenerator(this);
diff --git a/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverImplTest.java b/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverImplTest.java
index 5d943ef..3eee2cf 100644
--- a/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverImplTest.java
+++ b/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverImplTest.java
@@ -31,6 +31,7 @@ import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -408,7 +409,7 @@ public class ResourceResolverImplTest {
anon1.close();
// same workspace but admin user
- final Map<String, Object> admin0Cred = new HashMap<String, Object>();
+ final Map<String, Object> admin0Cred = new HashMap<>();
admin0Cred.put(ResourceResolverFactory.USER, "admin");
admin0Cred.put(ResourceResolverFactory.PASSWORD, "admin".toCharArray());
final ResourceResolver admin0 = anon0.clone(admin0Cred);
@@ -429,7 +430,7 @@ public class ResourceResolverImplTest {
admin1.close();
// same workspace but anonymous user
- final Map<String, Object> anon0Cred = new HashMap<String, Object>();
+ final Map<String, Object> anon0Cred = new HashMap<>();
anon0Cred.put(ResourceResolverFactory.USER, "anonymous");
final ResourceResolver anon0 = admin0.clone(anon0Cred);
assertEquals("anonymous", anon0.getUserID());
@@ -439,7 +440,7 @@ public class ResourceResolverImplTest {
}
@Test public void test_attributes_from_authInfo() throws Exception {
- final Map<String, Object> authInfo = new HashMap<String, Object>();
+ final Map<String, Object> authInfo = new HashMap<>();
authInfo.put(ResourceResolverFactory.USER, "admin");
authInfo.put(ResourceResolverFactory.PASSWORD, "admin".toCharArray());
authInfo.put("testAttributeString", "AStringValue");
@@ -451,7 +452,7 @@ public class ResourceResolverImplTest {
assertEquals("admin", rr.getAttribute(ResourceResolverFactory.USER));
assertNull(rr.getAttribute(ResourceResolverFactory.PASSWORD));
- final HashSet<String> validNames = new HashSet<String>();
+ final HashSet<String> validNames = new HashSet<>();
validNames.add(ResourceResolverFactory.USER);
validNames.add("testAttributeString");
validNames.add("testAttributeNumber");
@@ -635,7 +636,7 @@ public class ResourceResolverImplTest {
private PathBasedResourceResolverImpl getPathBasedResourceResolver(String[] searchPaths) {
try {
- final List<ResourceResolver> resolvers = new ArrayList<ResourceResolver>();
+ final List<ResourceResolver> resolvers = new ArrayList<>();
final PathBasedResourceResolverImpl resolver = new PathBasedResourceResolverImpl(resolvers, resourceProviderTracker, searchPaths);
resolvers.add(resolver);
return resolver;
@@ -647,10 +648,9 @@ public class ResourceResolverImplTest {
private static class PathBasedResourceResolverImpl extends ResourceResolverImpl {
- private final Map<String, Resource> resources = new HashMap<String, Resource>();
- private final String[] searchPaths;
+ private final Map<String, Resource> resources = new HashMap<>();
- public PathBasedResourceResolverImpl(final List<ResourceResolver> resolvers, final ResourceProviderTracker resourceProviderTracker, String[] searchPaths) throws LoginException {
+ public PathBasedResourceResolverImpl(final List<ResourceResolver> resolvers, final ResourceProviderTracker resourceProviderTracker, final String[] searchPaths) throws LoginException {
this(new CommonResourceResolverFactoryImpl(new ResourceResolverFactoryActivator()) {
@Override
public ResourceResolver getAdministrativeResourceResolver(
@@ -662,12 +662,17 @@ public class ResourceResolverImplTest {
Map<String, Object> authenticationInfo) throws LoginException {
return resolvers.get(0);
}
- }, resourceProviderTracker, searchPaths);
+ @Override
+ public List<String> getSearchPath() {
+ return Arrays.asList(searchPaths);
+ }
+
+
+ }, resourceProviderTracker);
}
- public PathBasedResourceResolverImpl(CommonResourceResolverFactoryImpl factory, ResourceProviderTracker resourceProviderTracker, String[] searchPaths) throws LoginException {
+ public PathBasedResourceResolverImpl(CommonResourceResolverFactoryImpl factory, ResourceProviderTracker resourceProviderTracker) throws LoginException {
super(factory, false, null, resourceProviderTracker);
- this.searchPaths = searchPaths;
}
public Resource add(final Resource r) {
@@ -676,11 +681,6 @@ public class ResourceResolverImplTest {
}
@Override
- public String[] getSearchPath() {
- return searchPaths;
- }
-
- @Override
public Resource getResource(final String path) {
final String p = (path.startsWith("/") ? path : "/" + path);
return this.resources.get(p);
diff --git a/src/test/java/org/apache/sling/resourceresolver/impl/ResourceTypeUtilTest.java b/src/test/java/org/apache/sling/resourceresolver/impl/ResourceTypeUtilTest.java
index 7fb8ba1..af553a1 100644
--- a/src/test/java/org/apache/sling/resourceresolver/impl/ResourceTypeUtilTest.java
+++ b/src/test/java/org/apache/sling/resourceresolver/impl/ResourceTypeUtilTest.java
@@ -22,24 +22,30 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
import org.junit.Test;
public class ResourceTypeUtilTest {
+ private static final List<String> SEARCH_PATHS = Arrays.asList(new String[] { "/apps/", "/libs/" });
+
@Test public void testAreResourceTypesEqual() {
- assertTrue(ResourceTypeUtil.areResourceTypesEqual("some/type", "/apps/some/type", new String[]{"/apps/", "/libs/"}));
- assertTrue(ResourceTypeUtil.areResourceTypesEqual("/apps/some/type", "some/type", new String[]{"/apps/", "/libs/"}));
- assertTrue(ResourceTypeUtil.areResourceTypesEqual("/apps/some/type", "/apps/some/type", new String[]{"/apps/", "/libs/"}));
- assertTrue(ResourceTypeUtil.areResourceTypesEqual("some/type", "some/type", new String[]{"/apps/", "/libs/"}));
- assertTrue(ResourceTypeUtil.areResourceTypesEqual("/apps/some/type", "/libs/some/type", new String[]{"/apps/", "/libs/"}));
- assertFalse(ResourceTypeUtil.areResourceTypesEqual("/apps/some/type", "/libs/some/type", new String[]{}));
+ assertTrue(ResourceTypeUtil.areResourceTypesEqual("some/type", "/apps/some/type", SEARCH_PATHS));
+ assertTrue(ResourceTypeUtil.areResourceTypesEqual("/apps/some/type", "some/type", SEARCH_PATHS));
+ assertTrue(ResourceTypeUtil.areResourceTypesEqual("/apps/some/type", "/apps/some/type", SEARCH_PATHS));
+ assertTrue(ResourceTypeUtil.areResourceTypesEqual("some/type", "some/type", SEARCH_PATHS));
+ assertTrue(ResourceTypeUtil.areResourceTypesEqual("/apps/some/type", "/libs/some/type", SEARCH_PATHS));
+ assertFalse(ResourceTypeUtil.areResourceTypesEqual("/apps/some/type", "/libs/some/type", Collections.EMPTY_LIST));
}
@Test public void testRelativizeResourceType() {
- assertEquals("relative/type", ResourceTypeUtil.relativizeResourceType("relative/type", new String[]{"/apps/", "/libs/"}));
- assertEquals("relative/type", ResourceTypeUtil.relativizeResourceType("/apps/relative/type", new String[]{"/apps/", "/libs/"}));
- assertEquals("relative/type", ResourceTypeUtil.relativizeResourceType("/libs/relative/type", new String[]{"/apps/", "/libs/"}));
- assertEquals("", ResourceTypeUtil.relativizeResourceType("/apps/", new String[]{"/apps/", "/libs/"}));
- assertEquals("/some/prefix/type", ResourceTypeUtil.relativizeResourceType("/some/prefix/type", new String[]{"/apps/", "/libs/"}));
+ assertEquals("relative/type", ResourceTypeUtil.relativizeResourceType("relative/type", SEARCH_PATHS));
+ assertEquals("relative/type", ResourceTypeUtil.relativizeResourceType("/apps/relative/type", SEARCH_PATHS));
+ assertEquals("relative/type", ResourceTypeUtil.relativizeResourceType("/libs/relative/type", SEARCH_PATHS));
+ assertEquals("", ResourceTypeUtil.relativizeResourceType("/apps/", SEARCH_PATHS));
+ assertEquals("/some/prefix/type", ResourceTypeUtil.relativizeResourceType("/some/prefix/type", SEARCH_PATHS));
}
}
diff --git a/src/test/java/org/apache/sling/resourceresolver/impl/observation/BasicObservationReporterTest.java b/src/test/java/org/apache/sling/resourceresolver/impl/observation/BasicObservationReporterTest.java
index 1917166..e0f0c12 100644
--- a/src/test/java/org/apache/sling/resourceresolver/impl/observation/BasicObservationReporterTest.java
+++ b/src/test/java/org/apache/sling/resourceresolver/impl/observation/BasicObservationReporterTest.java
@@ -27,6 +27,7 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -44,23 +45,23 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
public class BasicObservationReporterTest {
-
- private static final String[] SEARCH_PATHS = new String[] { "/apps", "/libs" };
-
+
+ private static final List<String> SEARCH_PATHS = Arrays.asList(new String[] { "/apps/", "/libs/" });
+
@Test
public void testRootProvider() {
ResourceChangeListenerInfo allPathListener = resourceChangeListenerInfo("/");
ResourceChangeListenerInfo appsPathListener = resourceChangeListenerInfo("/apps");
ResourceChangeListenerInfo appsApp2PathListener = resourceChangeListenerInfo("/apps/app2");
ResourceChangeListenerInfo globListener = resourceChangeListenerInfo("glob:/apps/**/*.html");
-
+
BasicObservationReporter underTest = new BasicObservationReporter(SEARCH_PATHS,
ImmutableList.of(allPathListener, appsPathListener, appsApp2PathListener, globListener),
new Path("/"), PathSet.EMPTY_SET);
-
+
underTest.reportChanges(changes("/apps/app1/path1.html"), false);
underTest.reportChanges(changes("/content/path2/jcr:content"), false);
-
+
assertListener(allPathListener, "/apps/app1/path1.html", "/content/path2/jcr:content");
assertListener(appsPathListener, "/apps/app1/path1.html");
assertListener(appsApp2PathListener);
@@ -73,13 +74,13 @@ public class BasicObservationReporterTest {
ResourceChangeListenerInfo appsPathListener = resourceChangeListenerInfo("/apps");
ResourceChangeListenerInfo appsApp2PathListener = resourceChangeListenerInfo("/apps/app2");
ResourceChangeListenerInfo globListener = resourceChangeListenerInfo("glob:/apps/**/*.html");
-
+
BasicObservationReporter underTest = new BasicObservationReporter(SEARCH_PATHS,
ImmutableList.of(allPathListener, appsPathListener, appsApp2PathListener, globListener),
new Path("/apps/app1"), PathSet.EMPTY_SET);
-
+
underTest.reportChanges(changes("/apps/app1/path1.html"), false);
-
+
assertListener(allPathListener, "/apps/app1/path1.html");
assertListener(appsPathListener, "/apps/app1/path1.html");
assertListener(appsApp2PathListener);
@@ -94,7 +95,7 @@ public class BasicObservationReporterTest {
info.setListener(mock(ResourceChangeListener.class));
return info;
}
-
+
private static Iterable<ResourceChange> changes(String... paths) {
List<ResourceChange> changes = new ArrayList<>();
for (String path : paths) {
@@ -102,7 +103,7 @@ public class BasicObservationReporterTest {
}
return changes;
}
-
+
@SuppressWarnings("unchecked")
private static void assertListener(ResourceChangeListenerInfo info, String... paths) {
Set<String> expectedPaths = ImmutableSet.copyOf(paths);
diff --git a/src/test/java/org/apache/sling/resourceresolver/impl/observation/ResourceChangeListenerInfoTest.java b/src/test/java/org/apache/sling/resourceresolver/impl/observation/ResourceChangeListenerInfoTest.java
index 52aab70..d5c80aa 100644
--- a/src/test/java/org/apache/sling/resourceresolver/impl/observation/ResourceChangeListenerInfoTest.java
+++ b/src/test/java/org/apache/sling/resourceresolver/impl/observation/ResourceChangeListenerInfoTest.java
@@ -20,6 +20,8 @@ import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
+import java.util.Arrays;
+import java.util.List;
import java.util.Set;
import org.apache.sling.api.resource.observation.ResourceChangeListener;
@@ -28,11 +30,13 @@ import org.osgi.framework.ServiceReference;
public class ResourceChangeListenerInfoTest {
+ private static final List<String> SEARCH_PATHS = Arrays.asList(new String[] { "/apps/", "/libs/" });
+
@Test
public void testGetExpandedRelativePaths() {
ServiceReference reference = mock(ServiceReference.class);
when(reference.getProperty(ResourceChangeListener.PATHS)).thenReturn(new String[] {"project/components/page/page.html"});
- final ResourceChangeListenerInfo rcli = new ResourceChangeListenerInfo(reference, new String[] {"/apps/", "/libs/"});
+ final ResourceChangeListenerInfo rcli = new ResourceChangeListenerInfo(reference, SEARCH_PATHS);
Set<String> paths = rcli.getPaths().toStringSet();
assertTrue("PathSet " + paths.toString() + " does not contain /apps/project/components/page/page.html.",
paths.contains("/apps/project/components/page/page.html"));
@@ -44,7 +48,7 @@ public class ResourceChangeListenerInfoTest {
public void testDotPathConfig() {
ServiceReference reference = mock(ServiceReference.class);
when(reference.getProperty(ResourceChangeListener.PATHS)).thenReturn(new String[] {"."});
- final ResourceChangeListenerInfo rcli = new ResourceChangeListenerInfo(reference, new String[] {"/apps/", "/libs/"});
+ final ResourceChangeListenerInfo rcli = new ResourceChangeListenerInfo(reference, SEARCH_PATHS);
Set<String> paths = rcli.getPaths().toStringSet();
assertTrue("PathSet " + paths.toString() + " does not contain /apps/", paths.contains("/apps"));
assertTrue("PathSet " + paths.toString() + " does not contain /libs/.", paths.contains("/libs"));
@@ -54,7 +58,7 @@ public class ResourceChangeListenerInfoTest {
public void testGlobPatternExpansion() {
ServiceReference reference = mock(ServiceReference.class);
when(reference.getProperty(ResourceChangeListener.PATHS)).thenReturn(new String[] {"glob:./**/*.html"});
- final ResourceChangeListenerInfo rcli = new ResourceChangeListenerInfo(reference, new String[] {"/apps/", "/libs/"});
+ final ResourceChangeListenerInfo rcli = new ResourceChangeListenerInfo(reference, SEARCH_PATHS);
Set<String> paths = rcli.getPaths().toStringSet();
assertTrue("PathSet " + paths.toString() + " does not contain glob:/apps/**/*.html.", paths.contains("glob:/apps/**/*.html"));
assertTrue("PathSet " + paths.toString() + " does not contain glob:/libs/**/*.html.", paths.contains("glob:/libs/**/*.html"));
--
To stop receiving notification emails like this one, please contact
cziegeler@apache.org.