FELIX-4390 Make sure OsgiLoginModuleProvider instances are updated
   when configuration is updated
   (Thanks Tobias Bocanegra for providing the patch)

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1558624 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/jaas/src/main/java/org/apache/felix/jaas/internal/ConfigSpiOsgi.java b/jaas/src/main/java/org/apache/felix/jaas/internal/ConfigSpiOsgi.java
index f62b3e8..beebd8a 100644
--- a/jaas/src/main/java/org/apache/felix/jaas/internal/ConfigSpiOsgi.java
+++ b/jaas/src/main/java/org/apache/felix/jaas/internal/ConfigSpiOsgi.java
@@ -375,6 +375,11 @@
     @Override
     public void modifiedService(ServiceReference reference, Object service)
     {
+        LoginModuleFactory lmf = providerMap.get(reference);
+        if (lmf instanceof OsgiLoginModuleProvider) {
+            // refresh to update configs
+            ((OsgiLoginModuleProvider) lmf).configure();
+        }
         recreateConfigs();
     }
 
diff --git a/jaas/src/main/java/org/apache/felix/jaas/internal/OsgiLoginModuleProvider.java b/jaas/src/main/java/org/apache/felix/jaas/internal/OsgiLoginModuleProvider.java
index 4e71fa5..a16ed46 100644
--- a/jaas/src/main/java/org/apache/felix/jaas/internal/OsgiLoginModuleProvider.java
+++ b/jaas/src/main/java/org/apache/felix/jaas/internal/OsgiLoginModuleProvider.java
@@ -34,19 +34,23 @@
 final class OsgiLoginModuleProvider implements LoginModuleProvider
 {
     private final LoginModuleFactory delegate;
-    private final int ranking;
-    private final LoginModuleControlFlag flag;
-    private final String realmName;
     private final ServiceReference serviceReference;
 
+    private int ranking;
+    private LoginModuleControlFlag flag;
+    private String realmName;
+
     public OsgiLoginModuleProvider(ServiceReference sr, LoginModuleFactory delegate)
     {
         this.delegate = delegate;
-        this.ranking = PropertiesUtil.toInteger(sr.getProperty(Constants.SERVICE_RANKING), 0);
-        this.flag = ControlFlag.from(
-            (String) sr.getProperty(LoginModuleFactory.JAAS_CONTROL_FLAG)).flag();
-        this.realmName = (String) sr.getProperty(LoginModuleFactory.JAAS_REALM_NAME);
         this.serviceReference = sr;
+        configure();
+    }
+
+    public void configure() {
+        ranking = PropertiesUtil.toInteger(serviceReference.getProperty(Constants.SERVICE_RANKING), 0);
+        flag = ControlFlag.from((String) serviceReference.getProperty(LoginModuleFactory.JAAS_CONTROL_FLAG)).flag();
+        realmName = (String) serviceReference.getProperty(LoginModuleFactory.JAAS_REALM_NAME);
     }
 
     public Map<String, ?> options()