aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/knowcenter/wag/egov/egiz/ldap/client
diff options
context:
space:
mode:
authortknall <tknall@7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c>2006-12-13 16:00:50 +0000
committertknall <tknall@7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c>2006-12-13 16:00:50 +0000
commitf1db00ea7fce12a186a3c5070d7f46298224c57a (patch)
tree57580548de8b9841aa4f4008f6b08b54f2789659 /src/main/java/at/knowcenter/wag/egov/egiz/ldap/client
parentaf0a15de2b1228e65872cb74935d933735133e5f (diff)
downloadpdf-as-3-f1db00ea7fce12a186a3c5070d7f46298224c57a.tar.gz
pdf-as-3-f1db00ea7fce12a186a3c5070d7f46298224c57a.tar.bz2
pdf-as-3-f1db00ea7fce12a186a3c5070d7f46298224c57a.zip
ldap support improved
git-svn-id: https://joinup.ec.europa.eu/svn/pdf-as/trunk@20 7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c
Diffstat (limited to 'src/main/java/at/knowcenter/wag/egov/egiz/ldap/client')
-rw-r--r--src/main/java/at/knowcenter/wag/egov/egiz/ldap/client/LDAPIssuerNameFilter.java20
-rw-r--r--src/main/java/at/knowcenter/wag/egov/egiz/ldap/client/LDAPMappingStore.java85
2 files changed, 105 insertions, 0 deletions
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 <a href="mailto:thomas.knall@iaik.tugraz.at">Thomas Knall</a>
+ */
+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 <a href="mailto:thomas.knall@iaik.tugraz.at">Thomas Knall</a>
+ */
+public class LDAPMappingStore {
+
+ private Hashtable<Name, LDAPMapping> storedMappings;
+ private LDAPIssuerNameFilter issuerNameFilter;
+ private Logger log = Logger.getLogger(getClass());
+
+ public LDAPMappingStore(LDAPIssuerNameFilter issuerNameFilter) {
+ this.storedMappings = new Hashtable<Name, LDAPMapping>();
+ this.issuerNameFilter = issuerNameFilter;
+ }
+
+ public LDAPMappingStore() {
+ this(null);
+ }
+
+ public void clearStore() {
+ this.storedMappings = new Hashtable<Name, LDAPMapping>();
+ }
+
+ 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<LDAPMapping> iterable) {
+ Iterator<LDAPMapping> 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);
+ }
+
+}