Author: olamy
Date: Thu Dec 13 20:03:16 2012
New Revision: 1421465

URL: http://svn.apache.org/viewvc?rev=1421465&view=rev
Log:
add a service to be able to check ldap configuration

Modified:
    
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaRuntimeConfigurationService.java
    
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultArchivaRuntimeConfigurationService.java

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaRuntimeConfigurationService.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaRuntimeConfigurationService.java?rev=1421465&r1=1421464&r2=1421465&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaRuntimeConfigurationService.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaRuntimeConfigurationService.java
 Thu Dec 13 20:03:16 2012
@@ -19,12 +19,14 @@ package org.apache.archiva.rest.api.serv
  */
 
 import org.apache.archiva.admin.model.beans.ArchivaRuntimeConfiguration;
+import org.apache.archiva.admin.model.beans.LdapConfiguration;
 import org.apache.archiva.redback.authorization.RedbackAuthorization;
 import org.apache.archiva.rest.api.model.UserManagerImplementationInformation;
 import org.apache.archiva.security.common.ArchivaRoleConstants;
 
 import javax.ws.rs.Consumes;
 import javax.ws.rs.GET;
+import javax.ws.rs.POST;
 import javax.ws.rs.PUT;
 import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
@@ -35,28 +37,44 @@ import java.util.List;
  * @author Olivier Lamy
  * @since 1.4-M4
  */
-@Path ( "/archivaRuntimeConfigurationService/" )
+@Path("/archivaRuntimeConfigurationService/")
 public interface ArchivaRuntimeConfigurationService
 {
-    @Path ( "archivaRuntimeConfiguration" )
+    @Path("archivaRuntimeConfiguration")
     @GET
-    @Produces ( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
-    @RedbackAuthorization ( permissions = 
ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
+    @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
+    @RedbackAuthorization(permissions = 
ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION)
     ArchivaRuntimeConfiguration getArchivaRuntimeConfigurationAdmin()
         throws ArchivaRestServiceException;
 
-    @Path ( "archivaRuntimeConfiguration" )
+    @Path("archivaRuntimeConfiguration")
     @PUT
-    @Produces ( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
-    @Consumes ( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
-    @RedbackAuthorization ( permissions = 
ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
+    @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
+    @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
+    @RedbackAuthorization(permissions = 
ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION)
     Boolean updateArchivaRuntimeConfiguration( ArchivaRuntimeConfiguration 
archivaRuntimeConfiguration )
         throws ArchivaRestServiceException;
 
-    @Path ( "userManagerImplementationInformation" )
+    @Path("userManagerImplementationInformation")
     @GET
-    @Produces ( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
-    @RedbackAuthorization ( permissions = 
ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
+    @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
+    @RedbackAuthorization(permissions = 
ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION)
     List<UserManagerImplementationInformation> 
getUserManagerImplementationInformations()
         throws ArchivaRestServiceException;
+
+
+    @Path( "checkLdapConnection" )
+    @GET
+    @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
+    @RedbackAuthorization( permissions = 
ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
+    Boolean checkLdapConnection()
+        throws ArchivaRestServiceException;
+
+    @Path( "checkLdapConnection" )
+    @POST
+    @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
+    @Consumes( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
+    @RedbackAuthorization( permissions = 
ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
+    Boolean checkLdapConnection( LdapConfiguration ldapConfiguration )
+        throws ArchivaRestServiceException;
 }

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=1421465&r1=1421464&r2=1421465&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:03:16 2012
@@ -20,9 +20,12 @@ package org.apache.archiva.rest.services
 
 import org.apache.archiva.admin.model.RepositoryAdminException;
 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.common.ldap.connection.LdapConnection;
 import 
org.apache.archiva.redback.common.ldap.connection.LdapConnectionConfiguration;
 import org.apache.archiva.redback.common.ldap.connection.LdapConnectionFactory;
+import org.apache.archiva.redback.common.ldap.connection.LdapException;
 import org.apache.archiva.redback.policy.CookieSettings;
 import org.apache.archiva.redback.policy.PasswordRule;
 import org.apache.archiva.redback.users.UserManager;
@@ -35,17 +38,19 @@ import org.springframework.stereotype.Se
 
 import javax.inject.Inject;
 import javax.inject.Named;
+import javax.naming.InvalidNameException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import java.util.Properties;
 
 /**
  * @author Olivier Lamy
  * @since 1.4-M4
  */
-@Service( "archivaRuntimeConfigurationService#rest" )
+@Service("archivaRuntimeConfigurationService#rest")
 public class DefaultArchivaRuntimeConfigurationService
     extends AbstractRestService
     implements ArchivaRuntimeConfigurationService
@@ -54,14 +59,14 @@ public class DefaultArchivaRuntimeConfig
     private ArchivaRuntimeConfigurationAdmin archivaRuntimeConfigurationAdmin;
 
     @Inject
-    @Named( value = "userManager#configurable" )
+    @Named(value = "userManager#configurable")
     private UserManager userManager;
 
     @Inject
     private ApplicationContext applicationContext;
 
     @Inject
-    @Named( value = "ldapConnectionFactory#configurable" )
+    @Named(value = "ldapConnectionFactory#configurable")
     private LdapConnectionFactory ldapConnectionFactory;
 
     public ArchivaRuntimeConfiguration getArchivaRuntimeConfigurationAdmin()
@@ -154,6 +159,83 @@ public class DefaultArchivaRuntimeConfig
 
         return informations;
     }
+
+
+    public Boolean checkLdapConnection()
+        throws ArchivaRestServiceException
+    {
+        LdapConnection ldapConnection = null;
+        try
+        {
+            ldapConnection = ldapConnectionFactory.getConnection();
+        }
+        catch ( LdapException e )
+        {
+            log.warn( "fail to get LdapConnection: {}", e.getMessage() );
+            throw new ArchivaRestServiceException( e.getMessage(), e );
+        }
+        finally
+        {
+
+            if ( ldapConnection != null )
+            {
+                ldapConnection.close();
+            }
+        }
+
+        return Boolean.TRUE;
+    }
+
+    public Boolean checkLdapConnection( LdapConfiguration ldapConfiguration )
+        throws ArchivaRestServiceException
+    {
+        LdapConnection ldapConnection = null;
+        try
+        {
+            LdapConnectionConfiguration ldapConnectionConfiguration =
+                new LdapConnectionConfiguration( 
ldapConfiguration.getHostName(), ldapConfiguration.getPort(),
+                                                 
ldapConfiguration.getBaseDn(), ldapConfiguration.getContextFactory(),
+                                                 
ldapConfiguration.getBindDn(), ldapConfiguration.getPassword(),
+                                                 
ldapConfiguration.getAuthenticationMethod(),
+                                                 toProperties( 
ldapConfiguration.getExtraProperties() ) );
+
+            ldapConnection = ldapConnectionFactory.getConnection( 
ldapConnectionConfiguration );
+        }
+        catch ( InvalidNameException e )
+        {
+            log.warn( "fail to get LdapConnection: {}", e.getMessage() );
+            throw new ArchivaRestServiceException( e.getMessage(), e );
+        }
+        catch ( LdapException e )
+        {
+            log.warn( "fail to get LdapConnection: {}", e.getMessage() );
+            throw new ArchivaRestServiceException( e.getMessage(), e );
+        }
+        finally
+        {
+
+            if ( ldapConnection != null )
+            {
+                ldapConnection.close();
+            }
+        }
+
+        return Boolean.TRUE;
+    }
+
+    private Properties toProperties( Map<String, String> map )
+    {
+        Properties properties = new Properties();
+        if ( map == null || map.isEmpty() )
+        {
+            return properties;
+        }
+        for ( Map.Entry<String, String> entry : map.entrySet() )
+        {
+            properties.put( entry.getKey(), entry.getValue() );
+        }
+        return properties;
+    }
 }
 
 


Reply via email to