Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/customizer/ContextFilterTrackerCustomizer.java')
-rw-r--r--bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/customizer/ContextFilterTrackerCustomizer.java39
1 files changed, 11 insertions, 28 deletions
diff --git a/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/customizer/ContextFilterTrackerCustomizer.java b/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/customizer/ContextFilterTrackerCustomizer.java
index ee9efa443..3ab68807b 100644
--- a/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/customizer/ContextFilterTrackerCustomizer.java
+++ b/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/customizer/ContextFilterTrackerCustomizer.java
@@ -30,15 +30,13 @@ import org.osgi.service.http.whiteboard.HttpWhiteboardConstants;
* @author Raymond Augé
*/
public class ContextFilterTrackerCustomizer
- extends RegistrationServiceTrackerCustomizer<Filter, AtomicReference<FilterRegistration>> {
+ extends RegistrationServiceTrackerCustomizer<Filter, FilterRegistration> {
public ContextFilterTrackerCustomizer(
BundleContext bundleContext, HttpServiceRuntimeImpl httpServiceRuntime,
ContextController contextController) {
- super(bundleContext, httpServiceRuntime);
-
- this.contextController = contextController;
+ super(bundleContext, httpServiceRuntime, contextController);
}
@Override
@@ -51,6 +49,8 @@ public class ContextFilterTrackerCustomizer
}
try {
+ contextController.checkShutdown();
+
if (!contextController.matches(serviceReference)) {
// Only the default context will perform the "does anyone match" checks.
if (httpServiceRuntime.isDefaultContext(contextController) &&
@@ -70,41 +70,26 @@ public class ContextFilterTrackerCustomizer
catch (HttpWhiteboardFailureException hwfe) {
httpServiceRuntime.log(hwfe.getMessage(), hwfe);
- recordFailedFilterDTO(serviceReference, hwfe.getFailureReason());
+ recordFailed(serviceReference, hwfe.getFailureReason());
}
catch (Exception e) {
httpServiceRuntime.log(e.getMessage(), e);
- recordFailedFilterDTO(serviceReference, DTOConstants.FAILURE_REASON_EXCEPTION_ON_INIT);
+ recordFailed(serviceReference, DTOConstants.FAILURE_REASON_EXCEPTION_ON_INIT);
+ }
+ finally {
+ httpServiceRuntime.incrementServiceChangecount();
}
return result;
}
@Override
- public void modifiedService(
- ServiceReference<Filter> serviceReference,
- AtomicReference<FilterRegistration> filterReference) {
-
- removedService(serviceReference, filterReference);
- AtomicReference<FilterRegistration> added = addingService(serviceReference);
- filterReference.set(added.get());
- }
-
- @Override
- public void removedService(
- ServiceReference<Filter> serviceReference,
- AtomicReference<FilterRegistration> filterReference) {
- FilterRegistration registration = filterReference.get();
- if (registration != null) {
- // Destroy now ungets the object we are using
- registration.destroy();
- }
-
+ void removeFailed(ServiceReference<Filter> serviceReference) {
contextController.getHttpServiceRuntime().removeFailedFilterDTO(serviceReference);
}
- private void recordFailedFilterDTO(
+ private void recordFailed(
ServiceReference<Filter> serviceReference, int failureReason) {
FailedFilterDTO failedFilterDTO = new FailedFilterDTO();
@@ -129,6 +114,4 @@ public class ContextFilterTrackerCustomizer
contextController.getHttpServiceRuntime().recordFailedFilterDTO(serviceReference, failedFilterDTO);
}
- private ContextController contextController;
-
}

Back to the top