From e452213b7bb66956522cf74fbd255f8970678525 Mon Sep 17 00:00:00 2001 From: tknall Date: Thu, 4 Dec 2008 19:16:33 +0000 Subject: LDAP implementation enhanced. git-svn-id: https://joinup.ec.europa.eu/svn/pdf-as/trunk@316 7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c --- .../egiz/ldap/client/LDAPClientFactoryImpl.java | 39 +++++++++++++--------- 1 file changed, 24 insertions(+), 15 deletions(-) (limited to 'src/main/java/at/knowcenter/wag/egov/egiz/ldap/client/LDAPClientFactoryImpl.java') diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/ldap/client/LDAPClientFactoryImpl.java b/src/main/java/at/knowcenter/wag/egov/egiz/ldap/client/LDAPClientFactoryImpl.java index 1390202..ec5548b 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/ldap/client/LDAPClientFactoryImpl.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/ldap/client/LDAPClientFactoryImpl.java @@ -5,8 +5,13 @@ import iaik.asn1.structures.Name; import iaik.utils.RFC2253NameParser; import iaik.utils.RFC2253NameParserException; +import java.util.ArrayList; +import java.util.Collections; import java.util.Hashtable; +import java.util.Iterator; +import java.util.List; +import org.apache.commons.lang.ArrayUtils; import org.apache.log4j.Logger; /** @@ -16,7 +21,6 @@ public final class LDAPClientFactoryImpl extends LDAPClientFactory { private final Logger log = Logger.getLogger(getClass()); -// private Hashtable ldapClients; private Hashtable ldapClients; protected LDAPClientFactoryImpl() { @@ -43,13 +47,13 @@ public final class LDAPClientFactoryImpl extends LDAPClientFactory { return rfc2253Name2Domain(nameParser.parse()); } - private LDAPClient instantiateLDAPClient(String issuerName) throws LDAPException { + private List instantiateLDAPClients(String issuerName) throws LDAPException { if (!super.hasBeenConfigured()) { log.warn(super.getClass().getName() + " has not been configured yet."); } - LDAPClient client = null; - LDAPMapping mapping = super.getMapping(issuerName); - if (mapping == null) { + List ldapClients = new ArrayList(); + List mappings = super.getMappings(issuerName); + if (mappings == null || mappings.isEmpty()) { try { String alternativeURLString = rfc2253Name2Domain(issuerName); if (alternativeURLString == null || alternativeURLString.length() == 0) { @@ -57,30 +61,35 @@ public final class LDAPClientFactoryImpl extends LDAPClientFactory { } alternativeURLString = "ldap://" + alternativeURLString; log.warn("Issuer name \"" + issuerName + "\" has not been registered; trying to instantiate client for url \"" + alternativeURLString + "\"..."); - client = new LDAPClientImpl(alternativeURLString); + LDAPClient client = new LDAPClientImpl(alternativeURLString); + ldapClients.add(client); } catch (RFC2253NameParserException e) { throw new LDAPException(e); } } else { - log.debug("Instantiating LDAP client for " + mapping + "."); - client = new LDAPClientImpl(mapping); + log.debug("Instantiating LDAP clients for " + ArrayUtils.toString(mappings.toArray()) + "."); + Iterator mappingIt = mappings.iterator(); + while (mappingIt.hasNext()) { + LDAPMapping mapping = (LDAPMapping) mappingIt.next(); + ldapClients.add(new LDAPClientImpl(mapping)); + } } - return client; + return ldapClients; } - public synchronized LDAPClient createClient(String issuerName) throws LDAPException { + public synchronized List createClients(String issuerName) throws LDAPException { if (issuerName == null) { throw new NullPointerException("Issuer name must not be null."); } if (issuerName.length() == 0) { throw new IllegalArgumentException("Issuer name must not be empty."); } - LDAPClient ldapClient = (LDAPClient) ldapClients.get(issuerName); - if (ldapClient == null) { - ldapClient = instantiateLDAPClient(issuerName); - ldapClients.put(issuerName, ldapClient); + List ldapClientList = (List) ldapClients.get(issuerName); + if (ldapClientList == null) { + ldapClientList = instantiateLDAPClients(issuerName); + ldapClients.put(issuerName, ldapClientList); } - return ldapClient; + return Collections.unmodifiableList(ldapClientList); } } -- cgit v1.2.3