You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ch...@apache.org on 2013/03/26 14:51:07 UTC

svn commit: r1461129 - /felix/trunk/jaas/src/main/java/org/apache/felix/jaas/internal/JaasConfigFactory.java

Author: chetanm
Date: Tue Mar 26 13:51:07 2013
New Revision: 1461129

URL: http://svn.apache.org/r1461129
Log:
FELIX-3998 Updating JAAS config leads to registration of duplicate LoginModules

If config gets updated the previous service is unregistered

Modified:
    felix/trunk/jaas/src/main/java/org/apache/felix/jaas/internal/JaasConfigFactory.java

Modified: felix/trunk/jaas/src/main/java/org/apache/felix/jaas/internal/JaasConfigFactory.java
URL: http://svn.apache.org/viewvc/felix/trunk/jaas/src/main/java/org/apache/felix/jaas/internal/JaasConfigFactory.java?rev=1461129&r1=1461128&r2=1461129&view=diff
==============================================================================
--- felix/trunk/jaas/src/main/java/org/apache/felix/jaas/internal/JaasConfigFactory.java (original)
+++ felix/trunk/jaas/src/main/java/org/apache/felix/jaas/internal/JaasConfigFactory.java Tue Mar 26 13:51:07 2013
@@ -19,10 +19,13 @@
 
 package org.apache.felix.jaas.internal;
 
-import static org.apache.felix.jaas.internal.Util.trimToNull;
-
-import java.util.*;
+import java.util.Dictionary;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
 
 import org.apache.felix.jaas.LoginModuleFactory;
 import org.apache.felix.scr.annotations.Component;
@@ -37,6 +40,8 @@ import org.osgi.service.cm.Configuration
 import org.osgi.service.cm.ManagedServiceFactory;
 import org.osgi.service.log.LogService;
 
+import static org.apache.felix.jaas.internal.Util.trimToNull;
+
 @Component(label = "%jaas.name",
         description = "%jaas.description",
         metatype = true,
@@ -73,7 +78,7 @@ public class JaasConfigFactory implement
 
     private final BundleContext context;
 
-    private final Map<String, ServiceRegistration> registrations = new ConcurrentHashMap<String, ServiceRegistration>();
+    private final ConcurrentMap<String, ServiceRegistration> registrations = new ConcurrentHashMap<String, ServiceRegistration>();
 
     public JaasConfigFactory(BundleContext context, LoginModuleCreator factory, Logger log)
     {
@@ -126,7 +131,13 @@ public class JaasConfigFactory implement
 
         ServiceRegistration reg = context.registerService(
             LoginModuleFactory.class.getName(), lmf, new Properties());
-        registrations.put(pid, reg);
+        ServiceRegistration oldReg = registrations.put(pid, reg);
+
+        //Remove earlier registration if any
+        if(oldReg != null)
+        {
+            oldReg.unregister();
+        }
     }
 
     @Override