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 2024/07/12 09:10:40 UTC
(sling-org-apache-sling-resourceresolver) branch master updated: SLING-12382 : Potential concurrency issues with resource provider registration/unregistration
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 23d16d1 SLING-12382 : Potential concurrency issues with resource provider registration/unregistration
23d16d1 is described below
commit 23d16d1d047250ca834b1960cb908d293f3bcbe7
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Fri Jul 12 11:10:33 2024 +0200
SLING-12382 : Potential concurrency issues with resource provider registration/unregistration
---
.../impl/FactoryPreconditions.java | 11 +-
.../impl/FactoryRegistrationHandler.java | 6 +-
.../impl/ResourceResolverFactoryActivator.java | 7 +-
.../impl/providers/ResourceProviderTracker.java | 226 ++++++++-------------
.../impl/FactoryPreconditionsTest.java | 32 +--
.../impl/FactoryRegistrationHandlerTest.java | 25 ++-
.../providers/ResourceProviderTrackerTest.java | 20 +-
7 files changed, 124 insertions(+), 203 deletions(-)
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/FactoryPreconditions.java b/src/main/java/org/apache/sling/resourceresolver/impl/FactoryPreconditions.java
index 702600a..0897249 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/FactoryPreconditions.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/FactoryPreconditions.java
@@ -19,7 +19,6 @@
package org.apache.sling.resourceresolver.impl;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -132,7 +131,7 @@ public class FactoryPreconditions {
return rps;
}
- public boolean checkPreconditions(final String unavailableName, final String unavailableServicePid) {
+ public boolean checkPreconditions() {
boolean canRegister = true;
for (final RequiredProvider rp : requiredProviders) {
canRegister = false;
@@ -145,14 +144,6 @@ public class FactoryPreconditions {
}
@SuppressWarnings("rawtypes") final ServiceReference ref = info.getServiceReference();
final Object servicePid = ref.getProperty(Constants.SERVICE_PID);
- if (unavailableServicePid != null && unavailableServicePid.equals(servicePid)) {
- // ignore this service
- continue;
- }
- if (unavailableName != null && unavailableName.equals(info.getName())) {
- // ignore this service
- continue;
- }
if (rp.name != null && rp.name.equals(info.getName())) {
canRegister = true;
break;
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/FactoryRegistrationHandler.java b/src/main/java/org/apache/sling/resourceresolver/impl/FactoryRegistrationHandler.java
index 1227f3c..76fe0fc 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/FactoryRegistrationHandler.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/FactoryRegistrationHandler.java
@@ -81,7 +81,7 @@ public class FactoryRegistrationHandler implements AutoCloseable {
if (reRegister) {
unregisterFactory();
- maybeRegisterFactory(null, null);
+ maybeRegisterFactory();
}
}
@@ -107,7 +107,7 @@ public class FactoryRegistrationHandler implements AutoCloseable {
/**
* Check the preconditions and if it changed, either register factory or unregister
*/
- void maybeRegisterFactory(final String unavailableName, final String unavailableServicePid) {
+ void maybeRegisterFactory() {
if (!factoryRegistrationWorker.isShutdown()) {
LOG.debug("submitting maybeRegisterFactory");
factoryRegistrationWorker.execute(() -> {
@@ -115,7 +115,7 @@ public class FactoryRegistrationHandler implements AutoCloseable {
final ResourceResolverFactoryActivator localActivator;
try {
configurationLock.lock();
- preconditionsOk = factoryPreconditions.checkPreconditions(unavailableName, unavailableServicePid);
+ preconditionsOk = factoryPreconditions.checkPreconditions();
localActivator = activator;
} finally {
configurationLock.unlock();
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 4b249d3..faa538a 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryActivator.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryActivator.java
@@ -25,7 +25,6 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
-import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.TreeSet;
@@ -325,15 +324,15 @@ public class ResourceResolverFactoryActivator {
@Override
public void providerAdded() {
- factoryRegistrationHandler.maybeRegisterFactory(null, null);
+ factoryRegistrationHandler.maybeRegisterFactory();
}
@Override
- public void providerRemoved(final String name, final String pid, final boolean stateful, final boolean isUsed) {
+ public void providerRemoved(final boolean stateful, final boolean isUsed) {
if ( isUsed && (stateful || config.resource_resolver_providerhandling_paranoid()) ) {
factoryRegistrationHandler.unregisterFactory();
}
- factoryRegistrationHandler.maybeRegisterFactory(name, pid);
+ factoryRegistrationHandler.maybeRegisterFactory();
}
});
}
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderTracker.java b/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderTracker.java
index 45a6371..35429e2 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderTracker.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderTracker.java
@@ -70,7 +70,7 @@ public class ResourceProviderTracker implements ResourceProviderStorageProvider
void providerAdded();
- void providerRemoved(String name, String pid, boolean stateful, boolean used);
+ void providerRemoved(boolean stateful, boolean used);
}
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@@ -110,11 +110,7 @@ public class ResourceProviderTracker implements ResourceProviderStorageProvider
public void removedService(final ServiceReference<ResourceProvider> reference, final ServiceReference<ResourceProvider> ref) {
final ResourceProviderInfo info = infos.remove(ref);
if ( info != null ) {
- Object pid = ref.getProperty(Constants.SERVICE_PID);
- if ( pid != null && !(pid instanceof String) ) {
- pid = null;
- }
- unregister(info, (String)pid);
+ unregister(info);
}
}
@@ -170,68 +166,53 @@ public class ResourceProviderTracker implements ResourceProviderStorageProvider
*/
private void register(final ResourceProviderInfo info) {
if ( info.isValid() ) {
- logger.debug("Registering new resource provider {}", info);
- final List<ProviderEvent> events = new ArrayList<>();
- boolean providerAdded = false;
- ResourceProviderHandler deactivateHandler = null;
-
- ResourceProviderHandler activate = null;
- synchronized ( this.handlers ) {
- final List<ResourceProviderHandler> matchingHandlers = this.handlers.computeIfAbsent(info.getPath(), key -> new ArrayList<>());
- final ResourceProviderHandler handler = new ResourceProviderHandler(bundleContext, info);
- matchingHandlers.add(handler);
- Collections.sort(matchingHandlers);
- if ( matchingHandlers.get(0) == handler ) {
- activate = handler;
- }
- }
- if ( activate != null ) {
- if ( this.activate(activate) ) {
- providerAdded = true;
- events.add(new ProviderEvent(true, info));
- synchronized ( this.handlers ) {
- storage = null;
- final List<ResourceProviderHandler> matchingHandlers = this.handlers.get(info.getPath());
- if ( matchingHandlers != null && matchingHandlers.size() > 1 ) {
- deactivateHandler = matchingHandlers.get(1);
- }
- }
- } else {
- synchronized ( this.handlers ) {
- final List<ResourceProviderHandler> matchingHandlers = this.handlers.get(info.getPath());
- if ( matchingHandlers != null && !matchingHandlers.isEmpty() && matchingHandlers.remove(activate) ) {
- storage = null;
- if ( matchingHandlers.isEmpty() ) {
- this.handlers.remove(info.getPath());
- }
- }
- }
- }
- }
-
- final ChangeListener cl = this.listener;
- if ( providerAdded && cl != null ) {
- cl.providerAdded();
- }
- // we have to check for deactivated handlers
- if ( deactivateHandler != null ) {
- final ResourceProviderInfo handlerInfo = deactivateHandler.getInfo();
- if ( cl != null ) {
- Object pid = handlerInfo.getServiceReference().getProperty(Constants.SERVICE_PID);
- if ( pid != null && !(pid instanceof String) ) {
- pid = null;
- }
- cl.providerRemoved(handlerInfo.getName(), (String)pid,
- handlerInfo.getAuthType() != AuthType.no,
- deactivateHandler.isUsed());
- }
- this.deactivate(deactivateHandler);
- synchronized ( this.handlers ) {
- storage = null;
- }
- events.add(new ProviderEvent(false, handlerInfo));
- }
- this.postEvents(events);
+ logger.debug("Registering new resource provider {}", info);
+
+ final List<ProviderEvent> events = new ArrayList<>();
+ boolean providerAdded = false;
+ ResourceProviderHandler deactivateHandler = null;
+
+ final ResourceProviderHandler handler = new ResourceProviderHandler(bundleContext, info);
+
+ // update list of active handlers
+ synchronized ( this.handlers ) {
+ final List<ResourceProviderHandler> matchingHandlers = this.handlers.computeIfAbsent(info.getPath(), key -> new ArrayList<>());
+ matchingHandlers.add(handler);
+ Collections.sort(matchingHandlers);
+
+ if ( matchingHandlers.get(0) == handler ) {
+ if ( this.activate(handler) ) {
+ providerAdded = true;
+ events.add(new ProviderEvent(true, info));
+ synchronized ( this.handlers ) {
+ storage = null;
+ if ( matchingHandlers.size() > 1 ) {
+ deactivateHandler = matchingHandlers.get(1);
+ this.deactivate(deactivateHandler);
+ events.add(new ProviderEvent(false, deactivateHandler.getInfo()));
+ }
+ }
+ } else {
+ matchingHandlers.remove(handler);
+ if ( matchingHandlers.isEmpty() ) {
+ this.handlers.remove(info.getPath());
+ }
+ }
+ }
+ }
+
+ // update change listener (only once)
+ final ChangeListener cl = this.listener;
+ if ( cl != null ) {
+ if ( deactivateHandler != null ) {
+ cl.providerRemoved(deactivateHandler.getInfo().getAuthType() != AuthType.no, deactivateHandler.isUsed());
+ } else if ( providerAdded ) {
+ cl.providerAdded();
+ }
+ }
+
+ // send events
+ this.postEvents(events);
} else {
logger.warn("Ignoring invalid resource provider {}", info);
this.invalidProviders.put(info, FailureReason.invalid);
@@ -242,14 +223,12 @@ public class ResourceProviderTracker implements ResourceProviderStorageProvider
* Unregister a resource provider.
* @param info The resource provider info.
*/
- private void unregister(final ResourceProviderInfo info, final String pid) {
- final boolean isInvalid;
- synchronized ( this.invalidProviders ) {
- isInvalid = this.invalidProviders.remove(info) != null;
- }
+ private void unregister(final ResourceProviderInfo info) {
+ final boolean isInvalid = this.invalidProviders.remove(info) != null;
if ( !isInvalid ) {
logger.debug("Unregistering resource provider {}", info);
+ final List<ProviderEvent> events = new ArrayList<>();
// remove provider from handlers and if the provider is active (first handler)
// keep the reference for deactivation
@@ -265,82 +244,55 @@ public class ResourceProviderTracker implements ResourceProviderStorageProvider
it.remove();
if ( first ) {
deactivateHandler = h;
+ storage = null;
} else {
h.dispose();
}
if (matchingHandlers.isEmpty()) {
this.handlers.remove(info.getPath());
}
- storage = null;
break;
}
first = false;
}
}
- }
-
- if ( deactivateHandler != null ) {
- final List<ProviderEvent> events = new ArrayList<>();
- final ChangeListener cl = this.listener;
- if ( cl != null ) {
- cl.providerRemoved(info.getName(), pid,
- info.getAuthType() != AuthType.no,
- deactivateHandler.isUsed());
- }
- this.deactivate(deactivateHandler);
- deactivateHandler.dispose();
-
- // check if we can activate another handler
- ResourceProviderHandler addingProvider = null;
- synchronized ( this.handlers ) {
- final List<ResourceProviderHandler> matchingHandlers = this.handlers.get(info.getPath());
- if ( matchingHandlers != null ) {
- if ( matchingHandlers.isEmpty() ) {
- this.handlers.remove(info.getPath());
- } else {
- addingProvider = matchingHandlers.get(0);
- }
- }
- }
- boolean providerAdded = false;
- while ( addingProvider != null ) {
- if (this.activate(addingProvider)) {
- events.add(new ProviderEvent(true, addingProvider.getInfo()));
- providerAdded = true;
- addingProvider = null;
- synchronized ( this.handlers ) {
- this.storage = null;
- }
- } else {
- synchronized ( this.handlers ) {
- final List<ResourceProviderHandler> matchingHandlers = this.handlers.get(info.getPath());
- if ( matchingHandlers != null && !matchingHandlers.isEmpty() ) {
- if ( matchingHandlers.get(0) == addingProvider ) {
- this.storage = null;
- matchingHandlers.remove(0);
- addingProvider.dispose();
- if ( matchingHandlers.isEmpty() ) {
- this.handlers.remove(info.getPath());
- addingProvider = null;
- } else {
- addingProvider = matchingHandlers.get(0);
- }
+ if ( deactivateHandler != null ) {
+ this.deactivate(deactivateHandler);
+ deactivateHandler.dispose();
+ events.add(new ProviderEvent(false, info));
+
+ // check if we can activate another handler
+ if ( !matchingHandlers.isEmpty() ) {
+ ResourceProviderHandler addingProvider = matchingHandlers.get(0);
+ while ( addingProvider != null ) {
+ if (this.activate(addingProvider)) {
+ events.add(new ProviderEvent(true, addingProvider.getInfo()));
+ addingProvider = null;
+ } else {
+ matchingHandlers.remove(0);
+ addingProvider.dispose();
+ if ( matchingHandlers.isEmpty() ) {
+ this.handlers.remove(info.getPath());
+ addingProvider = null;
+ } else {
+ addingProvider = matchingHandlers.get(0);
}
}
}
- }
+ }
}
+ }
- if ( providerAdded && cl != null ) {
- if ( cl != null ) {
- cl.providerAdded();
- }
- }
- events.add(new ProviderEvent(false,info));
- this.postEvents(events);
-
+ // update change listener (only once)
+ final ChangeListener cl = this.listener;
+ if ( cl != null ) {
+ cl.providerRemoved(info.getAuthType() != AuthType.no, deactivateHandler.isUsed());
}
+
+ // send events
+ this.postEvents(events);
+
} else {
logger.debug("Unregistering invalid resource provider {}", info);
}
@@ -426,13 +378,11 @@ public class ResourceProviderTracker implements ResourceProviderStorageProvider
}
}
}
- synchronized ( this.invalidProviders ) {
- for(final Map.Entry<ResourceProviderInfo, FailureReason> entry : this.invalidProviders.entrySet()) {
- final ResourceProviderFailureDTO d = new ResourceProviderFailureDTO();
- fill(d, entry.getKey());
- d.reason = entry.getValue();
- failures.add(d);
- }
+ for(final Map.Entry<ResourceProviderInfo, FailureReason> entry : this.invalidProviders.entrySet()) {
+ final ResourceProviderFailureDTO d = new ResourceProviderFailureDTO();
+ fill(d, entry.getKey());
+ d.reason = entry.getValue();
+ failures.add(d);
}
dto.providers = dtos.toArray(new ResourceProviderDTO[dtos.size()]);
dto.failedProviders = failures.toArray(new ResourceProviderFailureDTO[failures.size()]);
diff --git a/src/test/java/org/apache/sling/resourceresolver/impl/FactoryPreconditionsTest.java b/src/test/java/org/apache/sling/resourceresolver/impl/FactoryPreconditionsTest.java
index b930503..03710cc 100644
--- a/src/test/java/org/apache/sling/resourceresolver/impl/FactoryPreconditionsTest.java
+++ b/src/test/java/org/apache/sling/resourceresolver/impl/FactoryPreconditionsTest.java
@@ -45,11 +45,11 @@ public class FactoryPreconditionsTest {
FactoryPreconditions conditions = new FactoryPreconditions(tracker, null, null);
- assertTrue(conditions.checkPreconditions(null, null));
+ assertTrue(conditions.checkPreconditions());
conditions = new FactoryPreconditions(tracker, Collections.<String> emptySet(), Collections.<String> emptySet());
- assertTrue(conditions.checkPreconditions(null, null));
+ assertTrue(conditions.checkPreconditions());
}
private List<ResourceProviderHandler> getResourceProviderHandlers(String[] pids) {
@@ -95,15 +95,15 @@ public class FactoryPreconditionsTest {
final List<ResourceProviderHandler> handlers1 = getResourceProviderHandlers(new String[] {"pid2"});
Mockito.when(storage.getAllHandlers()).thenReturn(handlers1);
- assertFalse(conditions.checkPreconditions(null, null));
+ assertFalse(conditions.checkPreconditions());
final List<ResourceProviderHandler> handlers2 = getResourceProviderHandlers(new String[] {"pid1", "pid2", "pid3"});
Mockito.when(storage.getAllHandlers()).thenReturn(handlers2);
- assertTrue(conditions.checkPreconditions(null, null));
+ assertTrue(conditions.checkPreconditions());
final List<ResourceProviderHandler> handlers3 = getResourceProviderHandlers(new String[] {"pid1"});
Mockito.when(storage.getAllHandlers()).thenReturn(handlers3);
- assertFalse(conditions.checkPreconditions(null, null));
+ assertFalse(conditions.checkPreconditions());
}
@Test public void testNames() {
@@ -115,30 +115,14 @@ public class FactoryPreconditionsTest {
final List<ResourceProviderHandler> handlers1 = getResourceProviderHandlersWithNames(new String[] {"n2"});
Mockito.when(storage.getAllHandlers()).thenReturn(handlers1);
- assertFalse(conditions.checkPreconditions(null, null));
+ assertFalse(conditions.checkPreconditions());
final List<ResourceProviderHandler> handlers2 = getResourceProviderHandlersWithNames(new String[] {"n1", "n2", "n3"});
Mockito.when(storage.getAllHandlers()).thenReturn(handlers2);
- assertTrue(conditions.checkPreconditions(null, null));
+ assertTrue(conditions.checkPreconditions());
final List<ResourceProviderHandler> handlers3 = getResourceProviderHandlersWithNames(new String[] {"n1"});
Mockito.when(storage.getAllHandlers()).thenReturn(handlers3);
- assertFalse(conditions.checkPreconditions(null, null));
- }
-
- @Test public void testUnregisteringService() {
- final ResourceProviderTracker tracker = Mockito.mock(ResourceProviderTracker.class);
- final ResourceProviderStorage storage = Mockito.mock(ResourceProviderStorage.class);
- Mockito.when(tracker.getResourceProviderStorage()).thenReturn(storage);
-
- FactoryPreconditions conditions = new FactoryPreconditions(tracker, null, new HashSet<>(Arrays.asList("pid1", "pid3")));
-
- final List<ResourceProviderHandler> handlers2 = getResourceProviderHandlers(new String[] {"pid1", "pid2", "pid3"});
- Mockito.when(storage.getAllHandlers()).thenReturn(handlers2);
- assertTrue(conditions.checkPreconditions(null, null));
-
- assertTrue(conditions.checkPreconditions(null, "pid2"));
-
- assertFalse(conditions.checkPreconditions(null, "pid1"));
+ assertFalse(conditions.checkPreconditions());
}
}
diff --git a/src/test/java/org/apache/sling/resourceresolver/impl/FactoryRegistrationHandlerTest.java b/src/test/java/org/apache/sling/resourceresolver/impl/FactoryRegistrationHandlerTest.java
index 04fb408..1ee8f74 100644
--- a/src/test/java/org/apache/sling/resourceresolver/impl/FactoryRegistrationHandlerTest.java
+++ b/src/test/java/org/apache/sling/resourceresolver/impl/FactoryRegistrationHandlerTest.java
@@ -43,7 +43,6 @@ import static org.apache.sling.resourceresolver.util.events.ServiceEventUtil.unr
import static org.hamcrest.Matchers.empty;
import static org.hamcrest.Matchers.hasSize;
import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.mockito.ArgumentMatchers.isNull;
import static org.mockito.Mockito.doCallRealMethod;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.when;
@@ -99,7 +98,7 @@ class FactoryRegistrationHandlerTest {
void testFactoryRegistrationDeregistration() throws InterruptedException {
final BundleContext bundleContext = osgi.bundleContext();
final FactoryPreconditions preconditions = mock(FactoryPreconditions.class);
- when(preconditions.checkPreconditions(isNull(), isNull())).thenReturn(true);
+ when(preconditions.checkPreconditions()).thenReturn(true);
try (FactoryRegistrationHandler factoryRegistrationHandler = new FactoryRegistrationHandler()) {
@@ -114,7 +113,7 @@ class FactoryRegistrationHandlerTest {
}
try (RecordingListener listener = RecordingListener.of(bundleContext)) {
- factoryRegistrationHandler.maybeRegisterFactory(null, null);
+ factoryRegistrationHandler.maybeRegisterFactory();
listener.assertRecorded(RRF_REGISTRATION);
}
}
@@ -127,14 +126,14 @@ class FactoryRegistrationHandlerTest {
try (FactoryRegistrationHandler factoryRegistrationHandler = new FactoryRegistrationHandler()) {
try (final RecordingListener listener = RecordingListener.of(ctx)) {
- when(preconditions.checkPreconditions(isNull(), isNull())).thenReturn(true);
+ when(preconditions.checkPreconditions()).thenReturn(true);
factoryRegistrationHandler.configure(activator, preconditions);
listener.assertRecorded(RRF_REGISTRATION);
}
try (final RecordingListener listener = RecordingListener.of(ctx)) {
- when(preconditions.checkPreconditions(isNull(), isNull())).thenReturn(false);
- factoryRegistrationHandler.maybeRegisterFactory(null, null);
+ when(preconditions.checkPreconditions()).thenReturn(false);
+ factoryRegistrationHandler.maybeRegisterFactory();
listener.assertRecorded(RRF_UNREGISTRATION);
}
}
@@ -145,7 +144,7 @@ class FactoryRegistrationHandlerTest {
void testReconfigurationLeadingToUnregsitration() throws InterruptedException {
final BundleContext ctx = osgi.bundleContext();
final FactoryPreconditions preconditions = mock(FactoryPreconditions.class);
- when(preconditions.checkPreconditions(isNull(), isNull())).thenReturn(true);
+ when(preconditions.checkPreconditions()).thenReturn(true);
try (final FactoryRegistrationHandler factoryRegistrationHandler = new FactoryRegistrationHandler()) {
try (RecordingListener listener = RecordingListener.of(ctx)) {
@@ -155,7 +154,7 @@ class FactoryRegistrationHandlerTest {
try (RecordingListener listener = RecordingListener.of(ctx)) {
final FactoryPreconditions failingPreconditions = mock(FactoryPreconditions.class); // new instance
- when(failingPreconditions.checkPreconditions(isNull(), isNull())).thenReturn(false);
+ when(failingPreconditions.checkPreconditions()).thenReturn(false);
factoryRegistrationHandler.configure(activator, failingPreconditions);
listener.assertRecorded(RRF_UNREGISTRATION);
}
@@ -165,7 +164,7 @@ class FactoryRegistrationHandlerTest {
void testReconfigurationWithNoChanges() throws InterruptedException {
final BundleContext ctx = osgi.bundleContext();
final FactoryPreconditions preconditions = mock(FactoryPreconditions.class);
- when(preconditions.checkPreconditions(isNull(), isNull())).thenReturn(true);
+ when(preconditions.checkPreconditions()).thenReturn(true);
try (final FactoryRegistrationHandler factoryRegistrationHandler = new FactoryRegistrationHandler()) {
try (RecordingListener listener = RecordingListener.of(ctx)) {
@@ -187,14 +186,14 @@ class FactoryRegistrationHandlerTest {
try (final FactoryRegistrationHandler factoryRegistrationHandler = new FactoryRegistrationHandler()) {
try (RecordingListener listener = RecordingListener.of(ctx)) {
final FactoryPreconditions preconditions = mock(FactoryPreconditions.class);
- when(preconditions.checkPreconditions(isNull(), isNull())).thenReturn(true);
+ when(preconditions.checkPreconditions()).thenReturn(true);
factoryRegistrationHandler.configure(activator, preconditions);
listener.assertRecorded(RRF_REGISTRATION);
}
try (RecordingListener listener = RecordingListener.of(ctx)) {
final FactoryPreconditions preconditions = mock(FactoryPreconditions.class);
- when(preconditions.checkPreconditions(isNull(), isNull())).thenReturn(true);
+ when(preconditions.checkPreconditions()).thenReturn(true);
factoryRegistrationHandler.configure(activator, preconditions);
listener.assertRecorded(allOf(RRF_REREGISTRATION));
}
@@ -208,13 +207,13 @@ class FactoryRegistrationHandlerTest {
final FactoryRegistrationHandler factoryRegistrationHandler = new FactoryRegistrationHandler();
try (RecordingListener listener = RecordingListener.of(ctx)) {
- when(preconditions.checkPreconditions(isNull(), isNull())).thenReturn(true);
+ when(preconditions.checkPreconditions()).thenReturn(true);
factoryRegistrationHandler.configure(activator, preconditions);
listener.assertRecorded(RRF_REGISTRATION);
}
try (RecordingListener listener = RecordingListener.of(ctx)) {
- when(preconditions.checkPreconditions(isNull(), isNull())).thenReturn(false);
+ when(preconditions.checkPreconditions()).thenReturn(false);
factoryRegistrationHandler.close();
listener.assertRecorded(allOf(RRF_UNREGISTRATION));
diff --git a/src/test/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderTrackerTest.java b/src/test/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderTrackerTest.java
index 34fdd65..a55d234 100644
--- a/src/test/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderTrackerTest.java
+++ b/src/test/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderTrackerTest.java
@@ -116,7 +116,7 @@ public class ResourceProviderTrackerTest {
}
@Override
- public void providerRemoved(String name, String pid, boolean stateful, boolean used) {
+ public void providerRemoved(boolean stateful, boolean used) {
removedCalled.set(true);
}
@@ -170,7 +170,7 @@ public class ResourceProviderTrackerTest {
}
@Override
- public void providerRemoved(String name, String pid, boolean stateful, boolean used) {
+ public void providerRemoved(boolean stateful, boolean used) {
removedCalled.set(true);
}
@@ -201,8 +201,8 @@ public class ResourceProviderTrackerTest {
ResourceProvider<Object> rp2 = mock(ResourceProvider.class);
final ResourceProviderInfo infoOverlay = fixture.registerResourceProvider(rp2, "/", AuthType.no, 1000);
- // check added and removed is called
- assertTrue(addedCalled.get());
+ // check only removed is called
+ assertFalse(addedCalled.get());
assertTrue(removedCalled.get());
// verify a single provider
@@ -215,8 +215,8 @@ public class ResourceProviderTrackerTest {
// unregister overlay provider
fixture.unregisterResourceProvider(infoOverlay);
- // check added and removed is called
- assertTrue(addedCalled.get());
+ // check only removed is called
+ assertFalse(addedCalled.get());
assertTrue(removedCalled.get());
// verify a single provider
@@ -286,14 +286,12 @@ public class ResourceProviderTrackerTest {
@Override
public void providerAdded() {
- // TODO Auto-generated method stub
-
+ // do nothing
}
@Override
- public void providerRemoved(String name, String pid, boolean stateful, boolean used) {
- // TODO Auto-generated method stub
-
+ public void providerRemoved(boolean stateful, boolean used) {
+ // do nothing
}
}
}
\ No newline at end of file