From f1db00ea7fce12a186a3c5070d7f46298224c57a Mon Sep 17 00:00:00 2001 From: tknall Date: Wed, 13 Dec 2006 16:00:50 +0000 Subject: ldap support improved git-svn-id: https://joinup.ec.europa.eu/svn/pdf-as/trunk@20 7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c --- .../egiz/ldap/client/LDAPIssuerNameFilter.java | 20 +++++ .../egov/egiz/ldap/client/LDAPMappingStore.java | 85 ++++++++++++++++++++++ 2 files changed, 105 insertions(+) create mode 100644 src/main/java/at/knowcenter/wag/egov/egiz/ldap/client/LDAPIssuerNameFilter.java create mode 100644 src/main/java/at/knowcenter/wag/egov/egiz/ldap/client/LDAPMappingStore.java (limited to 'src/main/java/at/knowcenter/wag/egov/egiz/ldap/client') diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/ldap/client/LDAPIssuerNameFilter.java b/src/main/java/at/knowcenter/wag/egov/egiz/ldap/client/LDAPIssuerNameFilter.java new file mode 100644 index 0000000..722251c --- /dev/null +++ b/src/main/java/at/knowcenter/wag/egov/egiz/ldap/client/LDAPIssuerNameFilter.java @@ -0,0 +1,20 @@ +package at.knowcenter.wag.egov.egiz.ldap.client; + +import iaik.asn1.structures.Name; + +/** + * @author Thomas Knall + */ +public interface LDAPIssuerNameFilter { + + /** + * Applies some kind of filtering on the distinguished name. This can be used + * for normalization. + * + * @param name + * The original distinguished name. + * @return The new filtered distinguished name. + */ + Name applyFilter(Name name); + +} diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/ldap/client/LDAPMappingStore.java b/src/main/java/at/knowcenter/wag/egov/egiz/ldap/client/LDAPMappingStore.java new file mode 100644 index 0000000..324e859 --- /dev/null +++ b/src/main/java/at/knowcenter/wag/egov/egiz/ldap/client/LDAPMappingStore.java @@ -0,0 +1,85 @@ +package at.knowcenter.wag.egov.egiz.ldap.client; + +import iaik.asn1.structures.Name; +import iaik.utils.RFC2253NameParser; +import iaik.utils.RFC2253NameParserException; + +import java.util.Hashtable; +import java.util.Iterator; + +import org.apache.log4j.Logger; + +/** + * @author Thomas Knall + */ +public class LDAPMappingStore { + + private Hashtable storedMappings; + private LDAPIssuerNameFilter issuerNameFilter; + private Logger log = Logger.getLogger(getClass()); + + public LDAPMappingStore(LDAPIssuerNameFilter issuerNameFilter) { + this.storedMappings = new Hashtable(); + this.issuerNameFilter = issuerNameFilter; + } + + public LDAPMappingStore() { + this(null); + } + + public void clearStore() { + this.storedMappings = new Hashtable(); + } + + public boolean isEmpty() { + return this.storedMappings.isEmpty(); + } + + public boolean isLDAPIssuerNameFilter() { + return this.issuerNameFilter != null; + } + + public void storeMapping(LDAPMapping... mappings) { + for (LDAPMapping mapping : mappings) { + Name name = mapping.getIssuerName(); + if (issuerNameFilter != null) { + name = this.issuerNameFilter.applyFilter(name); + } + if (this.storedMappings.containsKey(name)) { + log.warn("Skipping mapping \"" + mapping + "\" because is has already been stored under \"" + name.getName() + "\"."); + } else { + log.debug("Storing mapping \"" + mapping + "\" under \"" + name.getName() + "\"."); + this.storedMappings.put(name, mapping); + } + } + } + + public void storeMappings(Iterable iterable) { + Iterator it = iterable.iterator(); + while (it.hasNext()) { + this.storeMapping(it.next()); + } + } + + public LDAPMapping getMapping(Name name) { + if (issuerNameFilter != null) { + name = this.issuerNameFilter.applyFilter(name); + } + return this.storedMappings.get(name); + } + + public LDAPMapping getMapping(String nameString) throws LDAPException { + RFC2253NameParser parser = new RFC2253NameParser(nameString); + Name name; + try { + name = parser.parse(); + } catch (RFC2253NameParserException e) { + throw new LDAPException(e); + } + if (issuerNameFilter != null) { + name = this.issuerNameFilter.applyFilter(name); + } + return getMapping(name); + } + +} -- cgit v1.2.3