SMX4NMR-307 - org.apache.servicemix.nmr.osgi can throw an exception when shutting down
git-svn-id: https://svn.apache.org/repos/asf/servicemix/smx4/nmr/trunk@1441026 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/nmr/core/src/main/java/org/apache/servicemix/nmr/core/security/DefaultAuthorizationService.java b/nmr/core/src/main/java/org/apache/servicemix/nmr/core/security/DefaultAuthorizationService.java
index 5866ae8..88302ec 100644
--- a/nmr/core/src/main/java/org/apache/servicemix/nmr/core/security/DefaultAuthorizationService.java
+++ b/nmr/core/src/main/java/org/apache/servicemix/nmr/core/security/DefaultAuthorizationService.java
@@ -24,7 +24,6 @@
import java.util.Comparator;
import java.util.Map;
import java.util.StringTokenizer;
-import java.util.WeakHashMap;
import java.util.regex.Pattern;
import javax.xml.namespace.QName;
@@ -32,12 +31,16 @@
import org.apache.servicemix.nmr.api.security.AuthorizationService;
import org.apache.servicemix.nmr.api.security.GroupPrincipal;
import org.apache.servicemix.nmr.api.security.AuthorizationEntry;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* A default implementation of the authorization service.
*/
public class DefaultAuthorizationService implements AuthorizationService {
+ private final Logger logger = LoggerFactory.getLogger(DefaultAuthorizationService.class);
+
private List<AuthorizationEntry> authorizationEntries;
private Comparator<AuthorizationEntry> comparator;
private Map<String, Set<GroupPrincipal>> cache;
@@ -65,7 +68,13 @@
}
public void unregister(AuthorizationEntry entry, Map<String,?> props) {
- authorizationEntries.remove(entry);
+ try {
+ authorizationEntries.remove(entry);
+ } catch (Exception e) {
+ // blueprint can throw an exception here if the service representing
+ // this AuthorizationEntry is already shutdown
+ logger.debug("Exception occurred while unregistering AuthorizationEntry service.", e);
+ }
Collections.sort(authorizationEntries, comparator);
cache.clear();
}