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();
     }