move LdapConnection to an interface

git-svn-id: https://svn.apache.org/repos/asf/archiva/redback/redback-core/trunk@1477971 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Olivier Lamy 2013-05-01 12:19:20 +00:00
parent d1b77ab248
commit 4a57b05074
9 changed files with 102 additions and 46 deletions

View File

@ -21,6 +21,7 @@ package org.apache.archiva.redback.authentication.ldap;
import org.apache.archiva.redback.authentication.AbstractAuthenticator;
import org.apache.archiva.redback.common.ldap.connection.DefaultLdapConnection;
import org.apache.archiva.redback.common.ldap.connection.LdapConnection;
import org.apache.archiva.redback.common.ldap.user.UserMapper;
import org.apache.archiva.redback.common.ldap.connection.LdapConnectionFactory;
import org.apache.archiva.redback.configuration.UserConfiguration;
@ -103,8 +104,8 @@ public class LdapBindAuthenticator
log.debug( "Searching for users with filter: '{}' from base dn: {}", filter, mapper.getUserBaseDn() );
DefaultLdapConnection ldapConnection = null;
DefaultLdapConnection authLdapConnection = null;
LdapConnection ldapConnection = null;
LdapConnection authLdapConnection = null;
NamingEnumeration<SearchResult> results = null;
try
{
@ -172,13 +173,13 @@ public class LdapBindAuthenticator
return ( source instanceof PasswordBasedAuthenticationDataSource );
}
private DefaultLdapConnection getLdapConnection()
private LdapConnection getLdapConnection()
throws LdapException
{
return connectionFactory.getConnection();
}
private void closeLdapConnection( DefaultLdapConnection ldapConnection )
private void closeLdapConnection( LdapConnection ldapConnection )
{
if ( ldapConnection != null )
{

View File

@ -38,8 +38,10 @@ import java.util.Properties;
* The configuration for a connection will not change.
*
* @author <a href="mailto:trygvis@inamo.no">trygvis</a>
* @since 2.1
*/
public class DefaultLdapConnection
implements LdapConnection
{
private static LdapCtxFactory ctxFactory;// = new LdapCtxFactory();
@ -132,6 +134,7 @@ public class DefaultLdapConnection
// Connection Managment
// ----------------------------------------------------------------------
@Override
public Hashtable<Object, Object> getEnvironment()
throws LdapException
{
@ -236,6 +239,7 @@ public class DefaultLdapConnection
return env;
}
@Override
public void close()
{
try
@ -259,16 +263,19 @@ public class DefaultLdapConnection
// Utils
// ----------------------------------------------------------------------
@Override
public LdapConnectionConfiguration getConfiguration()
{
return config;
}
@Override
public List<Rdn> getBaseDnRdns()
{
return baseDnRdns;
}
@Override
public DirContext getDirContext()
{
return context;

View File

@ -0,0 +1,42 @@
package org.apache.archiva.redback.common.ldap.connection;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import javax.naming.directory.DirContext;
import javax.naming.ldap.Rdn;
import java.util.Hashtable;
import java.util.List;
/**
* @author Olivier Lamy
*/
public interface LdapConnection
{
Hashtable<Object, Object> getEnvironment()
throws LdapException;
void close();
LdapConnectionConfiguration getConfiguration();
List<Rdn> getBaseDnRdns();
DirContext getDirContext();
}

View File

@ -30,16 +30,16 @@ import javax.naming.spi.StateFactory;
*/
public interface LdapConnectionFactory
{
DefaultLdapConnection getConnection()
LdapConnection getConnection()
throws LdapException;
DefaultLdapConnection getConnection( LdapConnectionConfiguration ldapConnectionConfiguration )
LdapConnection getConnection( LdapConnectionConfiguration ldapConnectionConfiguration )
throws LdapException;
DefaultLdapConnection getConnection( Rdn subRdn )
LdapConnection getConnection( Rdn subRdn )
throws LdapException;
DefaultLdapConnection getConnection( String bindDn, String password )
LdapConnection getConnection( String bindDn, String password )
throws LdapException;
LdapName getBaseDnLdapName()

View File

@ -1,4 +1,5 @@
package org.apache.archiva.redback.common.ldap.role;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@ -19,7 +20,7 @@ package org.apache.archiva.redback.common.ldap.role;
*/
import junit.framework.TestCase;
import org.apache.archiva.redback.common.ldap.connection.DefaultLdapConnection;
import org.apache.archiva.redback.common.ldap.connection.LdapConnection;
import org.apache.archiva.redback.common.ldap.connection.LdapConnectionFactory;
import org.apache.archiva.redback.components.apacheds.ApacheDs;
import org.apache.archiva.redback.policy.PasswordEncoder;
@ -89,7 +90,7 @@ public class TestLdapRoleMapper
List<String> roleNames =
Arrays.asList( "Archiva System Administrator", "Internal Repo Manager", "Internal Repo Observer" );
DefaultLdapConnection ldapConnection;
LdapConnection ldapConnection;
DirContext context;

View File

@ -20,6 +20,7 @@ package org.apache.archiva.redback.rest.services;
import org.apache.archiva.redback.common.ldap.MappingException;
import org.apache.archiva.redback.common.ldap.connection.DefaultLdapConnection;
import org.apache.archiva.redback.common.ldap.connection.LdapConnection;
import org.apache.archiva.redback.common.ldap.connection.LdapConnectionFactory;
import org.apache.archiva.redback.common.ldap.connection.LdapException;
import org.apache.archiva.redback.common.ldap.role.LdapRoleMapper;
@ -67,7 +68,7 @@ public class DefaultLdapGroupMappingService
public StringList getLdapGroups()
throws RedbackServiceException
{
DefaultLdapConnection ldapConnection = null;
LdapConnection ldapConnection = null;
DirContext context = null;
@ -170,7 +171,7 @@ public class DefaultLdapGroupMappingService
// utils
//------------------
protected void closeLdapConnection( DefaultLdapConnection ldapConnection )
protected void closeLdapConnection( LdapConnection ldapConnection )
{
if ( ldapConnection != null )
{

View File

@ -20,7 +20,7 @@ package org.apache.archiva.redback.rbac.ldap;
*/
import org.apache.archiva.redback.common.ldap.MappingException;
import org.apache.archiva.redback.common.ldap.connection.DefaultLdapConnection;
import org.apache.archiva.redback.common.ldap.connection.LdapConnection;
import org.apache.archiva.redback.common.ldap.connection.LdapConnectionFactory;
import org.apache.archiva.redback.common.ldap.connection.LdapException;
import org.apache.archiva.redback.common.ldap.role.LdapRoleMapper;
@ -71,7 +71,7 @@ import java.util.Set;
*
* @author Olivier Lamy
*/
@Service( "rbacManager#ldap" )
@Service("rbacManager#ldap")
public class LdapRbacManager
extends AbstractRBACManager
implements RBACManager, RBACManagerListener
@ -80,19 +80,19 @@ public class LdapRbacManager
private Logger log = LoggerFactory.getLogger( getClass() );
@Inject
@Named( value = "rbacManager#cached" )
@Named(value = "rbacManager#cached")
private RBACManager rbacImpl;
@Inject
@Named( value = "ldapRoleMapper#default" )
@Named(value = "ldapRoleMapper#default")
private LdapRoleMapper ldapRoleMapper;
@Inject
@Named( value = "userConfiguration#default" )
@Named(value = "userConfiguration#default")
private UserConfiguration userConf;
@Inject
@Named( value = "userManager#ldap" )
@Named(value = "userManager#ldap")
private UserManager userManager;
@Inject
@ -102,15 +102,15 @@ public class LdapRbacManager
private LdapController ldapController;
@Inject
@Named( value = "ldapRoleMapperConfiguration#default" )
@Named(value = "ldapRoleMapperConfiguration#default")
private LdapRoleMapperConfiguration ldapRoleMapperConfiguration;
@Inject
@Named( value = "cache#ldapRoles" )
@Named(value = "cache#ldapRoles")
private Cache<String, Role> rolesCache;
@Inject
@Named( value = "cache#userAssignments" )
@Named(value = "cache#userAssignments")
private Cache<String, UserAssignment> userAssignmentsCache;
private boolean writableLdap = false;
@ -174,7 +174,7 @@ public class LdapRbacManager
{
if ( writableLdap )
{
DefaultLdapConnection ldapConnection = null;
LdapConnection ldapConnection = null;
DirContext context = null;
try
{
@ -250,7 +250,7 @@ public class LdapRbacManager
public List<Role> getAllRoles()
throws RbacManagerException
{
DefaultLdapConnection ldapConnection = null;
LdapConnection ldapConnection = null;
DirContext context = null;
try
{
@ -280,7 +280,7 @@ public class LdapRbacManager
public List<UserAssignment> getAllUserAssignments()
throws RbacManagerException
{
DefaultLdapConnection ldapConnection = null;
LdapConnection ldapConnection = null;
DirContext context = null;
try
{
@ -313,7 +313,7 @@ public class LdapRbacManager
}
}
protected void closeLdapConnection( DefaultLdapConnection ldapConnection )
protected void closeLdapConnection( LdapConnection ldapConnection )
{
if ( ldapConnection != null )
{
@ -420,7 +420,7 @@ public class LdapRbacManager
throws RbacManagerException
{
DefaultLdapConnection ldapConnection = null;
LdapConnection ldapConnection = null;
DirContext context = null;
try
@ -528,7 +528,7 @@ public class LdapRbacManager
{
return role;
}
DefaultLdapConnection ldapConnection = null;
LdapConnection ldapConnection = null;
DirContext context = null;
//verify it's a ldap group
try
@ -565,7 +565,7 @@ public class LdapRbacManager
public Collection<Role> getUnassignedRoles( String username )
throws RbacManagerException
{
DefaultLdapConnection ldapConnection = null;
LdapConnection ldapConnection = null;
DirContext context = null;
@ -613,7 +613,7 @@ public class LdapRbacManager
{
return ua;
}
DefaultLdapConnection ldapConnection = null;
LdapConnection ldapConnection = null;
DirContext context = null;
try
{
@ -786,7 +786,7 @@ public class LdapRbacManager
rolesCache.remove( role.getName() );
if ( writableLdap )
{
DefaultLdapConnection ldapConnection = null;
LdapConnection ldapConnection = null;
DirContext context = null;
try
{
@ -868,7 +868,7 @@ public class LdapRbacManager
{
return true;
}
DefaultLdapConnection ldapConnection = null;
LdapConnection ldapConnection = null;
DirContext context = null;
try
{
@ -918,7 +918,7 @@ public class LdapRbacManager
{
if ( writableLdap )
{
DefaultLdapConnection ldapConnection = null;
LdapConnection ldapConnection = null;
DirContext context = null;
try
{
@ -956,7 +956,7 @@ public class LdapRbacManager
{
if ( writableLdap )
{
DefaultLdapConnection ldapConnection = null;
LdapConnection ldapConnection = null;
DirContext context = null;
try
{
@ -985,7 +985,7 @@ public class LdapRbacManager
public UserAssignment saveUserAssignment( UserAssignment userAssignment )
throws RbacManagerException
{
DefaultLdapConnection ldapConnection = null;
LdapConnection ldapConnection = null;
DirContext context = null;
try
{
@ -1052,7 +1052,7 @@ public class LdapRbacManager
{
return true;
}
DefaultLdapConnection ldapConnection = null;
LdapConnection ldapConnection = null;
DirContext context = null;
try
{

View File

@ -21,6 +21,7 @@ package org.apache.archiva.redback.users.ldap;
import org.apache.archiva.redback.common.ldap.connection.DefaultLdapConnection;
import org.apache.archiva.redback.common.ldap.connection.LdapConnection;
import org.apache.archiva.redback.common.ldap.user.LdapUser;
import org.apache.archiva.redback.common.ldap.user.UserMapper;
import org.apache.archiva.redback.configuration.UserConfiguration;
@ -129,7 +130,7 @@ public class LdapUserManager
return guestUser;
}
DefaultLdapConnection ldapConnection = getLdapConnection();
LdapConnection ldapConnection = getLdapConnection();
try
{
DirContext context = ldapConnection.getDirContext();
@ -168,7 +169,7 @@ public class LdapUserManager
{
clearFromCache( username );
}
DefaultLdapConnection ldapConnection = null;
LdapConnection ldapConnection = null;
try
{
ldapConnection = getLdapConnection();
@ -211,7 +212,7 @@ public class LdapUserManager
return ldapUser;
}
DefaultLdapConnection ldapConnection = null;
LdapConnection ldapConnection = null;
try
{
@ -278,7 +279,7 @@ public class LdapUserManager
return Collections.emptyList();
}
DefaultLdapConnection ldapConnection = null;
LdapConnection ldapConnection = null;
try
{
@ -329,7 +330,7 @@ public class LdapUserManager
*/
public List<User> getUsers()
{
DefaultLdapConnection ldapConnection = null;
LdapConnection ldapConnection = null;
try
{
@ -385,7 +386,7 @@ public class LdapUserManager
clearFromCache( user.getUsername() );
}
DefaultLdapConnection ldapConnection = null;
LdapConnection ldapConnection = null;
try
{
@ -429,7 +430,7 @@ public class LdapUserManager
return true;
}
DefaultLdapConnection ldapConnection = null;
LdapConnection ldapConnection = null;
try
{
@ -452,7 +453,7 @@ public class LdapUserManager
}
}
private DefaultLdapConnection getLdapConnection()
private LdapConnection getLdapConnection()
throws LdapException
{
try
@ -466,7 +467,7 @@ public class LdapUserManager
}
}
private void closeLdapConnection( DefaultLdapConnection ldapConnection )
private void closeLdapConnection( LdapConnection ldapConnection )
{
if ( ldapConnection != null )
{

View File

@ -20,6 +20,7 @@ package org.apache.archiva.redback.users.ldap;
*/
import junit.framework.TestCase;
import org.apache.archiva.redback.common.ldap.connection.LdapConnection;
import org.apache.archiva.redback.policy.PasswordEncoder;
import org.apache.archiva.redback.users.User;
import org.apache.archiva.redback.common.ldap.connection.DefaultLdapConnection;
@ -147,7 +148,8 @@ public class LdapUserManagerTest
{
assertNotNull( connectionFactory );
DefaultLdapConnection connection = null;
LdapConnection connection = null;
try
{
connection = connectionFactory.getConnection();
@ -168,7 +170,8 @@ public class LdapUserManagerTest
public void testDirectUsersExistence()
throws Exception
{
DefaultLdapConnection connection = null;
LdapConnection connection = null;
try
{
connection = connectionFactory.getConnection();