Author: olamy
Date: Thu Dec 13 20:05:51 2012
New Revision: 1421476

URL: http://svn.apache.org/viewvc?rev=1421476&view=rev
Log:
reload authenticators when configuration has changed

Modified:
    
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultArchivaRuntimeConfigurationService.java
    
archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/java/org/apache/archiva/web/security/ArchivaUserManagerAuthenticator.java

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultArchivaRuntimeConfigurationService.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultArchivaRuntimeConfigurationService.java?rev=1421476&r1=1421475&r2=1421476&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultArchivaRuntimeConfigurationService.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultArchivaRuntimeConfigurationService.java
 Thu Dec 13 20:05:51 2012
@@ -22,6 +22,8 @@ import org.apache.archiva.admin.model.Re
 import org.apache.archiva.admin.model.beans.ArchivaRuntimeConfiguration;
 import org.apache.archiva.admin.model.beans.LdapConfiguration;
 import org.apache.archiva.admin.model.runtime.ArchivaRuntimeConfigurationAdmin;
+import org.apache.archiva.redback.authentication.AuthenticationException;
+import org.apache.archiva.redback.authentication.Authenticator;
 import org.apache.archiva.redback.common.ldap.connection.LdapConnection;
 import 
org.apache.archiva.redback.common.ldap.connection.LdapConnectionConfiguration;
 import org.apache.archiva.redback.common.ldap.connection.LdapConnectionFactory;
@@ -121,8 +123,20 @@ public class DefaultArchivaRuntimeConfig
                 cookieSettings.initialize();
             }
 
+            Collection<Authenticator> authenticators =
+                applicationContext.getBeansOfType( Authenticator.class 
).values();
+
+            for ( Authenticator authenticator : authenticators )
+            {
+                authenticator.initialize();
+            }
+
             return Boolean.TRUE;
         }
+        catch ( AuthenticationException e )
+        {
+            throw new ArchivaRestServiceException( e.getMessage(), e );
+        }
         catch ( RepositoryAdminException e )
         {
             throw new ArchivaRestServiceException( e.getMessage(), e );

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/java/org/apache/archiva/web/security/ArchivaUserManagerAuthenticator.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/java/org/apache/archiva/web/security/ArchivaUserManagerAuthenticator.java?rev=1421476&r1=1421475&r2=1421476&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/java/org/apache/archiva/web/security/ArchivaUserManagerAuthenticator.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/java/org/apache/archiva/web/security/ArchivaUserManagerAuthenticator.java
 Thu Dec 13 20:05:51 2012
@@ -20,6 +20,7 @@ package org.apache.archiva.web.security;
 
 import org.apache.archiva.admin.model.RepositoryAdminException;
 import org.apache.archiva.admin.model.runtime.ArchivaRuntimeConfigurationAdmin;
+import org.apache.archiva.redback.authentication.AbstractAuthenticator;
 import org.apache.archiva.redback.authentication.AuthenticationConstants;
 import org.apache.archiva.redback.authentication.AuthenticationDataSource;
 import org.apache.archiva.redback.authentication.AuthenticationException;
@@ -52,8 +53,9 @@ import java.util.Map;
  * @author Olivier Lamy
  * @since 1.4-M4
  */
-@Service( "authenticator#archiva" )
+@Service("authenticator#archiva")
 public class ArchivaUserManagerAuthenticator
+    extends AbstractAuthenticator
     implements Authenticator
 {
     private Logger log = LoggerFactory.getLogger( getClass() );
@@ -70,17 +72,25 @@ public class ArchivaUserManagerAuthentic
     private List<UserManager> userManagers;
 
     @PostConstruct
-    protected void initialize()
-        throws RepositoryAdminException
+    @Override
+    public void initialize()
+        throws AuthenticationException
     {
-        List<String> userManagerImpls =
-            
archivaRuntimeConfigurationAdmin.getArchivaRuntimeConfiguration().getUserManagerImpls();
+        try
+        {
+            List<String> userManagerImpls =
+                
archivaRuntimeConfigurationAdmin.getArchivaRuntimeConfiguration().getUserManagerImpls();
 
-        userManagers = new ArrayList<UserManager>( userManagerImpls.size() );
+            userManagers = new ArrayList<UserManager>( userManagerImpls.size() 
);
 
-        for ( String beanId : userManagerImpls )
+            for ( String beanId : userManagerImpls )
+            {
+                userManagers.add( applicationContext.getBean( "userManager#" + 
beanId, UserManager.class ) );
+            }
+        }
+        catch ( RepositoryAdminException e )
         {
-            userManagers.add( applicationContext.getBean( "userManager#" + 
beanId, UserManager.class ) );
+            throw new AuthenticationException( e.getMessage(), e );
         }
     }
 


Reply via email to