Author: cziegeler
Date: Thu Feb 11 08:45:03 2016
New Revision: 1729773
URL: http://svn.apache.org/viewvc?rev=1729773&view=rev
Log:
SLING-5510 : Resource resolver should always use most current set of providers.
Apply patch from Justin Edelson
Added:
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderStorageProvider.java
(with props)
Modified:
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControl.java
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderHandler.java
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderTracker.java
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ProviderHandlerTest.java
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ResourceDecoratorTestBase.java
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ResourceProviderEntryTest.java
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverImplTest.java
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverMangleNamespacesTest.java
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControlTest.java
Modified:
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java?rev=1729773&r1=1729772&r2=1729773&view=diff
==============================================================================
---
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java
(original)
+++
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java
Thu Feb 11 08:45:03 2016
@@ -60,7 +60,8 @@ import org.apache.sling.resourceresolver
import org.apache.sling.resourceresolver.impl.helper.URIException;
import org.apache.sling.resourceresolver.impl.mapping.MapEntry;
import org.apache.sling.resourceresolver.impl.params.ParsedParameters;
-import
org.apache.sling.resourceresolver.impl.providers.ResourceProviderStorage;
+import
org.apache.sling.resourceresolver.impl.providers.ResourceProviderStorageProvider;
+import
org.apache.sling.resourceresolver.impl.providers.ResourceProviderTracker;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -106,13 +107,13 @@ public class ResourceResolverImpl extend
private volatile Exception closedResolverException;
public ResourceResolverImpl(final CommonResourceResolverFactoryImpl
factory, final boolean isAdmin, final Map<String, Object> authenticationInfo)
throws LoginException {
- this(factory, isAdmin, authenticationInfo,
factory.getResourceProviderTracker().getResourceProviderStorage());
+ this(factory, isAdmin, authenticationInfo,
factory.getResourceProviderTracker());
}
- ResourceResolverImpl(final CommonResourceResolverFactoryImpl factory,
final boolean isAdmin, final Map<String, Object> authenticationInfo, final
ResourceProviderStorage storage) throws LoginException {
+ ResourceResolverImpl(final CommonResourceResolverFactoryImpl factory,
final boolean isAdmin, final Map<String, Object> authenticationInfo, final
ResourceProviderStorageProvider resourceProviderTracker) throws LoginException {
this.factory = factory;
this.context = new ResourceResolverContext(this,
factory.getResourceAccessSecurityTracker());
- this.control = createControl(storage, authenticationInfo, isAdmin);
+ this.control = createControl(resourceProviderTracker,
authenticationInfo, isAdmin);
this.factory.register(this, control);
}
@@ -132,7 +133,7 @@ public class ResourceResolverImpl extend
authInfo.putAll(authenticationInfo);
}
this.context = new ResourceResolverContext(this,
factory.getResourceAccessSecurityTracker());
- this.control =
createControl(factory.getResourceProviderTracker().getResourceProviderStorage(),
authInfo, resolver.control.isAdmin());
+ this.control = createControl(factory.getResourceProviderTracker(),
authInfo, resolver.control.isAdmin());
this.factory.register(this, control);
}
@@ -144,13 +145,13 @@ public class ResourceResolverImpl extend
* @return A control
* @throws LoginException If auth to the required providers fails.
*/
- private ResourceResolverControl createControl(final
ResourceProviderStorage storage,
+ private ResourceResolverControl createControl(final
ResourceProviderStorageProvider resourceProviderTracker,
final Map<String, Object> authenticationInfo,
final boolean isAdmin)
throws LoginException {
- final ResourceResolverControl control = new
ResourceResolverControl(isAdmin, authenticationInfo, storage);
+ final ResourceResolverControl control = new
ResourceResolverControl(isAdmin, authenticationInfo, resourceProviderTracker);
-
this.context.getProviderManager().authenticateAll(storage.getAuthRequiredHandlers(),
control);
+
this.context.getProviderManager().authenticateAll(resourceProviderTracker.getResourceProviderStorage().getAuthRequiredHandlers(),
control);
return control;
}
Modified:
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControl.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControl.java?rev=1729773&r1=1729772&r2=1729773&view=diff
==============================================================================
---
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControl.java
(original)
+++
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControl.java
Thu Feb 11 08:45:03 2016
@@ -48,6 +48,7 @@ import org.apache.sling.api.resource.pat
import
org.apache.sling.resourceresolver.impl.providers.ResourceProviderHandler;
import org.apache.sling.resourceresolver.impl.providers.ResourceProviderInfo;
import
org.apache.sling.resourceresolver.impl.providers.ResourceProviderStorage;
+import
org.apache.sling.resourceresolver.impl.providers.ResourceProviderStorageProvider;
import
org.apache.sling.resourceresolver.impl.providers.stateful.AuthenticatedResourceProvider;
import org.apache.sling.resourceresolver.impl.providers.tree.Node;
import org.apache.sling.spi.resource.provider.ResourceProvider;
@@ -80,7 +81,7 @@ public class ResourceResolverControl {
/** Flag for handling multiple calls to close. */
private final AtomicBoolean isClosed = new AtomicBoolean(false);
- private final ResourceProviderStorage storage;
+ private final ResourceProviderStorageProvider resourceProviderTracker;
private final Map<ResourceProviderHandler, Object> authenticatedProviders;
@@ -89,11 +90,11 @@ public class ResourceResolverControl {
*/
public ResourceResolverControl(final boolean isAdmin,
final Map<String, Object> authenticationInfo,
- final ResourceProviderStorage storage) {
+ final ResourceProviderStorageProvider resourceProviderTracker) {
this.authenticatedProviders = new
IdentityHashMap<ResourceProviderHandler, Object>();
this.authenticationInfo = authenticationInfo;
this.isAdmin = isAdmin;
- this.storage = storage;
+ this.resourceProviderTracker = resourceProviderTracker;
}
/**
@@ -229,7 +230,7 @@ public class ResourceResolverControl {
}
private boolean isIntermediatePath(final String fullPath) {
- return storage.getTree().getNode(fullPath) != null;
+ return getResourceProviderStorage().getTree().getNode(fullPath) !=
null;
}
/**
@@ -263,7 +264,7 @@ public class ResourceResolverControl {
}
// synthetic and providers are done in one loop
- final Node<ResourceProviderHandler> node =
storage.getTree().getNode(parent.getPath());
+ final Node<ResourceProviderHandler> node =
getResourceProviderStorage().getTree().getNode(parent.getPath());
if (node != null) {
final List<Resource> syntheticList = new ArrayList<Resource>();
final List<Resource> providerList = new ArrayList<Resource>();
@@ -315,7 +316,7 @@ public class ResourceResolverControl {
*/
public Collection<String> getAttributeNames(final ResourceResolverContext
context) {
final Set<String> names = new LinkedHashSet<String>();
- for (final AuthenticatedResourceProvider p :
context.getProviderManager().getAllBestEffort(storage.getAttributableHandlers(),
this)) {
+ for (final AuthenticatedResourceProvider p :
context.getProviderManager().getAllBestEffort(getResourceProviderStorage().getAttributableHandlers(),
this)) {
p.getAttributeNames(names);
}
if ( this.authenticationInfo != null ) {
@@ -334,7 +335,7 @@ public class ResourceResolverControl {
if (FORBIDDEN_ATTRIBUTE.equals(name)) {
return null;
}
- for (final AuthenticatedResourceProvider p :
context.getProviderManager().getAllBestEffort(storage.getAttributableHandlers(),
this)) {
+ for (final AuthenticatedResourceProvider p :
context.getProviderManager().getAllBestEffort(getResourceProviderStorage().getAttributableHandlers(),
this)) {
final Object attribute = p.getAttribute(name);
if (attribute != null) {
return attribute;
@@ -421,7 +422,7 @@ public class ResourceResolverControl {
*/
public String[] getSupportedLanguages(final ResourceResolverContext
context) {
final Set<String> supportedLanguages = new LinkedHashSet<String>();
- for (AuthenticatedResourceProvider p :
context.getProviderManager().getAllBestEffort(storage.getLanguageQueryableHandlers(),
this)) {
+ for (AuthenticatedResourceProvider p :
context.getProviderManager().getAllBestEffort(getResourceProviderStorage().getLanguageQueryableHandlers(),
this)) {
supportedLanguages.addAll(Arrays.asList(p.getSupportedLanguages()));
}
return supportedLanguages.toArray(new
String[supportedLanguages.size()]);
@@ -444,7 +445,7 @@ public class ResourceResolverControl {
final ResourceResolverContext context,
final String language) {
final List<AuthenticatedResourceProvider> queryableProviders = new
ArrayList<AuthenticatedResourceProvider>();
- for (final AuthenticatedResourceProvider p :
context.getProviderManager().getAllBestEffort(storage.getLanguageQueryableHandlers(),
this)) {
+ for (final AuthenticatedResourceProvider p :
context.getProviderManager().getAllBestEffort(getResourceProviderStorage().getLanguageQueryableHandlers(),
this)) {
if (ArrayUtils.contains(p.getSupportedLanguages(), language)) {
queryableProviders.add(p);
}
@@ -471,7 +472,7 @@ public class ResourceResolverControl {
*/
@SuppressWarnings("unchecked")
public <AdapterType> AdapterType adaptTo(final ResourceResolverContext
context, Class<AdapterType> type) {
- for (AuthenticatedResourceProvider p :
context.getProviderManager().getAllBestEffort(storage.getAdaptableHandlers(),
this)) {
+ for (AuthenticatedResourceProvider p :
context.getProviderManager().getAllBestEffort(getResourceProviderStorage().getAdaptableHandlers(),
this)) {
final Object adaptee = p.adaptTo(type);
if (adaptee != null) {
return (AdapterType) adaptee;
@@ -483,7 +484,7 @@ public class ResourceResolverControl {
private AuthenticatedResourceProvider checkSourceAndDest(final
ResourceResolverContext context,
final String srcAbsPath, final String destAbsPath) throws
PersistenceException {
// check source
- final Node<ResourceProviderHandler> srcNode =
storage.getTree().getBestMatchingNode(srcAbsPath);
+ final Node<ResourceProviderHandler> srcNode =
getResourceProviderStorage().getTree().getBestMatchingNode(srcAbsPath);
if ( srcNode == null ) {
throw new PersistenceException("Source resource does not exist.",
null, srcAbsPath, null);
}
@@ -502,7 +503,7 @@ public class ResourceResolverControl {
}
// check destination
- final Node<ResourceProviderHandler> destNode =
storage.getTree().getBestMatchingNode(destAbsPath);
+ final Node<ResourceProviderHandler> destNode =
getResourceProviderStorage().getTree().getBestMatchingNode(destAbsPath);
if ( destNode == null ) {
throw new PersistenceException("Destination resource does not
exist.", null, destAbsPath, null);
}
@@ -613,7 +614,7 @@ public class ResourceResolverControl {
}
public ResourceProviderStorage getResourceProviderStorage() {
- return this.storage;
+ return this.resourceProviderTracker.getResourceProviderStorage();
}
/**
@@ -623,7 +624,7 @@ public class ResourceResolverControl {
private @CheckForNull AuthenticatedResourceProvider
getBestMatchingProvider(final ResourceResolverContext context,
final String path) {
try {
- final Node<ResourceProviderHandler> node =
storage.getTree().getBestMatchingNode(path);
+ final Node<ResourceProviderHandler> node =
resourceProviderTracker.getResourceProviderStorage().getTree().getBestMatchingNode(path);
return node == null ? null :
context.getProviderManager().getOrCreateProvider(node.getValue(), this);
} catch ( final LoginException le ) {
// ignore
@@ -638,7 +639,7 @@ public class ResourceResolverControl {
private @CheckForNull AuthenticatedResourceProvider
getBestMatchingModifiableProvider(
final ResourceResolverContext context,
final String path) {
- final Node<ResourceProviderHandler> node =
storage.getTree().getBestMatchingNode(path);
+ final Node<ResourceProviderHandler> node =
resourceProviderTracker.getResourceProviderStorage().getTree().getBestMatchingNode(path);
if ( node != null && node.getValue().getInfo().isModifiable() ) {
try {
return
context.getProviderManager().getOrCreateProvider(node.getValue(), this);
Modified:
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderHandler.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderHandler.java?rev=1729773&r1=1729772&r2=1729773&view=diff
==============================================================================
---
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderHandler.java
(original)
+++
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderHandler.java
Thu Feb 11 08:45:03 2016
@@ -28,11 +28,11 @@ import org.osgi.framework.BundleContext;
*/
public class ResourceProviderHandler implements
Comparable<ResourceProviderHandler>, Pathable {
- private final ResourceProviderInfo info;
+ private volatile ResourceProviderInfo info;
- private final BundleContext bundleContext;
+ private volatile BundleContext bundleContext;
- private final ProviderContextImpl context = new ProviderContextImpl();
+ private volatile ProviderContextImpl context = new ProviderContextImpl();
private volatile ResourceProvider<Object> provider;
@@ -55,6 +55,15 @@ public class ResourceProviderHandler imp
return this.provider != null;
}
+ /**C
+ * Clear all references.
+ */
+ public void dispose() {
+ this.info = null;
+ this.bundleContext = null;
+ this.context = null;
+ }
+
public ResourceProvider<Object> getResourceProvider() {
return this.provider;
}
@@ -70,6 +79,15 @@ public class ResourceProviderHandler imp
@Override
public int compareTo(final ResourceProviderHandler o) {
+ if ( this.getInfo() == null ) {
+ if ( o.getInfo() == null ) {
+ return 0;
+ }
+ return 1;
+ }
+ if ( o.getInfo() == null ) {
+ return -1;
+ }
return this.getInfo().compareTo(o.getInfo());
}
Added:
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderStorageProvider.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderStorageProvider.java?rev=1729773&view=auto
==============================================================================
---
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderStorageProvider.java
(added)
+++
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderStorageProvider.java
Thu Feb 11 08:45:03 2016
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.resourceresolver.impl.providers;
+
+/**
+ * Interface which allows access to a ResourceProviderStorage object.
+ */
+public interface ResourceProviderStorageProvider {
+
+ ResourceProviderStorage getResourceProviderStorage();
+
+}
Propchange:
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderStorageProvider.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderStorageProvider.java
------------------------------------------------------------------------------
svn:keywords = author date id revision rev url
Modified:
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderTracker.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderTracker.java?rev=1729773&r1=1729772&r2=1729773&view=diff
==============================================================================
---
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderTracker.java
(original)
+++
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderTracker.java
Thu Feb 11 08:45:03 2016
@@ -55,7 +55,7 @@ import org.slf4j.LoggerFactory;
/**
* This service keeps track of all resource providers.
*/
-public class ResourceProviderTracker {
+public class ResourceProviderTracker implements
ResourceProviderStorageProvider {
public interface ObservationReporterGenerator {
@@ -244,8 +244,10 @@ public class ResourceProviderTracker {
Iterator<ResourceProviderHandler> it = infos.iterator();
boolean removed = false;
while (it.hasNext()) {
- if (it.next().getInfo() == info) {
+ final ResourceProviderHandler h = it.next();
+ if (h.getInfo() == info) {
it.remove();
+ h.dispose();
removed = true;
break;
}
@@ -337,6 +339,7 @@ public class ResourceProviderTracker {
dto.failedProviders = failures.toArray(new
ResourceProviderFailureDTO[failures.size()]);
}
+ @Override
public ResourceProviderStorage getResourceProviderStorage() {
ResourceProviderStorage result = storage;
if (result == null) {
Modified:
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ProviderHandlerTest.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ProviderHandlerTest.java?rev=1729773&r1=1729772&r2=1729773&view=diff
==============================================================================
---
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ProviderHandlerTest.java
(original)
+++
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ProviderHandlerTest.java
Thu Feb 11 08:45:03 2016
@@ -33,6 +33,7 @@ import org.apache.sling.api.resource.Res
import org.apache.sling.api.resource.ResourceUtil;
import
org.apache.sling.resourceresolver.impl.providers.ResourceProviderHandler;
import
org.apache.sling.resourceresolver.impl.providers.ResourceProviderStorage;
+import
org.apache.sling.resourceresolver.impl.providers.ResourceProviderStorageProvider;
import org.apache.sling.spi.resource.provider.ResolveContext;
import org.apache.sling.spi.resource.provider.ResourceContext;
import org.apache.sling.spi.resource.provider.ResourceProvider;
@@ -56,10 +57,16 @@ public class ProviderHandlerTest {
final ResourceProvider<?> leaveProvider =
Mockito.mock(ResourceProvider.class);
Mockito.when(leaveProvider.getResource(Mockito.any(ResolveContext.class),
Mockito.eq(servletpath), Mockito.any(ResourceContext.class),
Mockito.any(Resource.class))).thenReturn(servletResource);
- ResourceProviderHandler h = createRPHandler(leaveProvider, "my-pid",
0, servletpath);
+ final ResourceProviderHandler h = createRPHandler(leaveProvider,
"my-pid", 0, servletpath);
ResourceResolverFactoryActivator activator = new
ResourceResolverFactoryActivator();
activator.resourceAccessSecurityTracker = new
ResourceAccessSecurityTracker();
- ResourceResolver resolver = new ResourceResolverImpl(new
CommonResourceResolverFactoryImpl(activator), false, null, new
ResourceProviderStorage(Arrays.asList(h)));
+ ResourceResolver resolver = new ResourceResolverImpl(new
CommonResourceResolverFactoryImpl(activator), false, null, new
ResourceProviderStorageProvider() {
+
+ @Override
+ public ResourceProviderStorage getResourceProviderStorage() {
+ return new ResourceProviderStorage(Arrays.asList(h));
+ }
+ });
final Resource parent =
resolver.getResource(ResourceUtil.getParent(servletpath));
assertNotNull("Parent must be available", parent);
Modified:
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ResourceDecoratorTestBase.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ResourceDecoratorTestBase.java?rev=1729773&r1=1729772&r2=1729773&view=diff
==============================================================================
---
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ResourceDecoratorTestBase.java
(original)
+++
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ResourceDecoratorTestBase.java
Thu Feb 11 08:45:03 2016
@@ -39,6 +39,7 @@ import org.apache.sling.api.resource.Val
import org.apache.sling.resourceresolver.impl.helper.ResourceDecoratorTracker;
import
org.apache.sling.resourceresolver.impl.providers.ResourceProviderHandler;
import
org.apache.sling.resourceresolver.impl.providers.ResourceProviderStorage;
+import
org.apache.sling.resourceresolver.impl.providers.ResourceProviderStorageProvider;
import org.apache.sling.spi.resource.provider.QueryLanguageProvider;
import org.apache.sling.spi.resource.provider.ResolveContext;
import org.apache.sling.spi.resource.provider.ResourceContext;
@@ -142,8 +143,14 @@ public abstract class ResourceDecoratorT
}
};
- List<ResourceProviderHandler> list =
Arrays.asList(MockedResourceResolverImplTest.createRPHandler(provider,
"A-provider", 0L, "/"));
- resolver = new ResourceResolverImpl(crf, false, null, new
ResourceProviderStorage(list));
+ final List<ResourceProviderHandler> list =
Arrays.asList(MockedResourceResolverImplTest.createRPHandler(provider,
"A-provider", 0L, "/"));
+ resolver = new ResourceResolverImpl(crf, false, null, new
ResourceProviderStorageProvider() {
+
+ @Override
+ public ResourceProviderStorage getResourceProviderStorage() {
+ return new ResourceProviderStorage(list);
+ }
+ });
}
protected void assertExistent(Resource r, boolean existent) {
Modified:
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ResourceProviderEntryTest.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ResourceProviderEntryTest.java?rev=1729773&r1=1729772&r2=1729773&view=diff
==============================================================================
---
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ResourceProviderEntryTest.java
(original)
+++
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ResourceProviderEntryTest.java
Thu Feb 11 08:45:03 2016
@@ -37,6 +37,7 @@ import org.apache.sling.api.resource.Res
import org.apache.sling.api.resource.SyntheticResource;
import
org.apache.sling.resourceresolver.impl.providers.ResourceProviderHandler;
import
org.apache.sling.resourceresolver.impl.providers.ResourceProviderStorage;
+import
org.apache.sling.resourceresolver.impl.providers.ResourceProviderStorageProvider;
import org.apache.sling.spi.resource.provider.ResolveContext;
import org.apache.sling.spi.resource.provider.ResourceContext;
import org.apache.sling.spi.resource.provider.ResourceProvider;
@@ -245,7 +246,13 @@ public class ResourceProviderEntryTest {
final ResourceResolverFactoryActivator activator = new
ResourceResolverFactoryActivator();
activator.resourceAccessSecurityTracker = new
ResourceAccessSecurityTracker();
providersBasedResolver = new ResourceResolverImpl(new
CommonResourceResolverFactoryImpl(activator), false, null,
- new ResourceProviderStorage(providers));
+ new ResourceProviderStorageProvider() {
+
+ @Override
+ public ResourceProviderStorage
getResourceProviderStorage() {
+ return new ResourceProviderStorage(providers);
+ }
+ });
}
return providersBasedResolver;
}
Modified:
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverImplTest.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverImplTest.java?rev=1729773&r1=1729772&r2=1729773&view=diff
==============================================================================
---
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverImplTest.java
(original)
+++
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverImplTest.java
Thu Feb 11 08:45:03 2016
@@ -96,7 +96,7 @@ public class ResourceResolverImplTest {
@SuppressWarnings("deprecation")
@Test public void testClose() throws Exception {
- final ResourceResolver rr = new ResourceResolverImpl(commonFactory,
false, null, resourceProviderTracker.getResourceProviderStorage());
+ final ResourceResolver rr = new ResourceResolverImpl(commonFactory,
false, null, resourceProviderTracker);
assertTrue(rr.isLive());
rr.close();
assertFalse(rr.isLive());
@@ -208,7 +208,7 @@ public class ResourceResolverImplTest {
ResourceResolverFactoryActivator rrfa = spy(new
ResourceResolverFactoryActivator());
Whitebox.setInternalState(rrfa, "logResourceResolverClosing", true);
CommonResourceResolverFactoryImpl crrfi = new
CommonResourceResolverFactoryImpl(rrfa);
- final ResourceResolver rr = new ResourceResolverImpl(crrfi, false,
null, resourceProviderTracker.getResourceProviderStorage());
+ final ResourceResolver rr = new ResourceResolverImpl(crrfi, false,
null, resourceProviderTracker);
assertTrue(rr.isLive());
rr.close();
assertFalse(rr.isLive());
@@ -622,7 +622,7 @@ public class ResourceResolverImplTest {
}
public PathBasedResourceResolverImpl(CommonResourceResolverFactoryImpl
factory, ResourceProviderTracker resourceProviderTracker) throws LoginException
{
- super(factory, false, null,
resourceProviderTracker.getResourceProviderStorage());
+ super(factory, false, null, resourceProviderTracker);
}
public Resource add(final Resource r) {
Modified:
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverMangleNamespacesTest.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverMangleNamespacesTest.java?rev=1729773&r1=1729772&r2=1729773&view=diff
==============================================================================
---
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverMangleNamespacesTest.java
(original)
+++
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverMangleNamespacesTest.java
Thu Feb 11 08:45:03 2016
@@ -32,6 +32,7 @@ import org.apache.commons.collections.It
import org.apache.sling.api.resource.LoginException;
import org.apache.sling.api.resource.Resource;
import
org.apache.sling.resourceresolver.impl.providers.ResourceProviderStorage;
+import
org.apache.sling.resourceresolver.impl.providers.ResourceProviderStorageProvider;
import org.apache.sling.spi.resource.provider.ResolveContext;
import org.apache.sling.spi.resource.provider.ResourceContext;
import org.apache.sling.spi.resource.provider.ResourceProvider;
@@ -95,8 +96,13 @@ public class ResourceResolverMangleNames
final CommonResourceResolverFactoryImpl fac = new
CommonResourceResolverFactoryImpl(act);
- rr = new ResourceResolverImpl(fac, false, null,
- new
ResourceProviderStorage(Arrays.asList(MockedResourceResolverImplTest.createRPHandler(rp,
"rp1", 0, "/"))));
+ rr = new ResourceResolverImpl(fac, false, null, new
ResourceProviderStorageProvider() {
+
+ @Override
+ public ResourceProviderStorage getResourceProviderStorage() {
+ return new
ResourceProviderStorage(Arrays.asList(MockedResourceResolverImplTest.createRPHandler(rp,
"rp1", 0, "/")));
+ }
+ });
}
@Test
Modified:
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControlTest.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControlTest.java?rev=1729773&r1=1729772&r2=1729773&view=diff
==============================================================================
---
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControlTest.java
(original)
+++
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControlTest.java
Thu Feb 11 08:45:03 2016
@@ -52,6 +52,7 @@ import org.apache.sling.resourceresolver
import
org.apache.sling.resourceresolver.impl.providers.ResourceProviderHandler;
import org.apache.sling.resourceresolver.impl.providers.ResourceProviderInfo;
import
org.apache.sling.resourceresolver.impl.providers.ResourceProviderStorage;
+import
org.apache.sling.resourceresolver.impl.providers.ResourceProviderStorageProvider;
import org.apache.sling.spi.resource.provider.QueryLanguageProvider;
import org.apache.sling.spi.resource.provider.ResolveContext;
import org.apache.sling.spi.resource.provider.ResourceContext;
@@ -138,9 +139,15 @@ public class ResourceResolverControlTest
authInfo = Collections.emptyMap();
handlers = Arrays.asList(rootHandler, handler);
- ResourceProviderStorage storage = new
ResourceProviderStorage(handlers);
+ final ResourceProviderStorage storage = new
ResourceProviderStorage(handlers);
- crp = new ResourceResolverControl(false, authInfo, storage);
+ crp = new ResourceResolverControl(false, authInfo, new
ResourceProviderStorageProvider() {
+
+ @Override
+ public ResourceProviderStorage getResourceProviderStorage() {
+ return storage;
+ }
+ });
context = new ResourceResolverContext(rr, securityTracker);
}