package at.knowcenter.wag.egov.egiz.ldap.client; import iaik.asn1.structures.Name; import iaik.utils.RFC2253NameParser; import iaik.utils.RFC2253NameParserException; import java.net.MalformedURLException; import java.net.URL; import java.util.Properties; import org.apache.log4j.Logger; /** * @author Thomas Knall */ public class LDAPMapping { // constants public static final String PROPERTIES_KEY_ISSUER_NAME = "issuer.name"; public static final String PROPERTIES_KEY_LDAP_URL = "ldap.url"; public static final String PROPERTIES_KEY_SERIAL_ATTR_NAME = "serialnumber.attrname"; private final Logger log = Logger.getLogger(getClass()); private static final iaik.x509.net.ldap.Handler LDAP_HANDLER; // fields private Name issuerName; private URL ldapURL; private String serialNumberAttrName; // static initialization static { LDAP_HANDLER = new iaik.x509.net.ldap.Handler(); } // constructors protected LDAPMapping() { this.setSerialNumberAttrName(LDAPClientImpl.DEFAULT_LDAP_ATTR_SERIAL_NUMBER); } public LDAPMapping(Name issuerName, URL ldapURL) { this(issuerName, ldapURL, null); } public LDAPMapping(Name issuerName, URL ldapURL, String serialNumberAttrName) { this(); this.setIssuerName(issuerName); this.setLdapURL(ldapURL); this.setSerialNumberAttrName(serialNumberAttrName); } public LDAPMapping(String issuerNameString, String ldapURLString) throws LDAPException { this(issuerNameString, ldapURLString, null); } public LDAPMapping(String issuerNameString, String ldapURLString, String serialNumberAttrName) throws LDAPException { this(); this.setIssuerName(issuerNameString); this.setLdapURL(ldapURLString); this.setSerialNumberAttrName(serialNumberAttrName); } public LDAPMapping(Properties properties) throws LDAPException { this(); if (properties == null) { throw new NullPointerException("Properties must not be null."); } String in = properties.getProperty(PROPERTIES_KEY_ISSUER_NAME); String sn = properties.getProperty(PROPERTIES_KEY_LDAP_URL); String snan = properties.getProperty(PROPERTIES_KEY_SERIAL_ATTR_NAME); if (in == null || in.length() == 0) { throw new LDAPException("Property \"" + PROPERTIES_KEY_ISSUER_NAME + "\" must not be null or empty."); } if (sn == null || sn.length() == 0) { throw new LDAPException("Property \"" + PROPERTIES_KEY_LDAP_URL + "\" must not be null or empty."); } this.setIssuerName(in); this.setLdapURL(sn); this.setSerialNumberAttrName(snan); } // getter/setter public Name getIssuerName() { return this.issuerName; } public void setIssuerName(Name issuerName) { if (issuerName == null) { throw new NullPointerException("Issuer name must not be null."); } this.issuerName = issuerName; } public void setIssuerName(String issuerNameString) throws LDAPException { RFC2253NameParser parser = new RFC2253NameParser(issuerNameString.trim()); try { this.setIssuerName(parser.parse()); } catch (RFC2253NameParserException e) { throw new LDAPException(e); } } public URL getLdapURL() { return this.ldapURL; } public void setLdapURL(URL ldapURL) { if (ldapURL == null) { throw new NullPointerException("LDAP url must not be null."); } this.ldapURL = ldapURL; } public void setLdapURL(String ldapURLString) throws LDAPException { try { this.setLdapURL(new URL(null, ldapURLString.trim(), LDAP_HANDLER)); } catch (MalformedURLException e) { throw new LDAPException(e); } } public String getSerialNumberAttrName() { return this.serialNumberAttrName; } public void setSerialNumberAttrName(String serialNumberAttrName) { if (serialNumberAttrName != null && serialNumberAttrName.length() == 0) { throw new IllegalArgumentException("Serial number attribute name must not be empty"); } this.serialNumberAttrName = serialNumberAttrName != null ? serialNumberAttrName.trim() : LDAPClientImpl.DEFAULT_LDAP_ATTR_SERIAL_NUMBER; } // misc public void validateData() throws LDAPException { if (this.issuerName == null) { throw new LDAPException("Issuer name must not be null."); } if (this.ldapURL == null) { throw new LDAPException("LDAP url must not be null."); } if (serialNumberAttrName == null || serialNumberAttrName.length() == 0) { throw new LDAPException("Serial number attribute name must not be null or empty"); } } @Override public String toString() { StringBuffer buffer = new StringBuffer(); buffer.append("issuerName = ").append(this.issuerName != null ? this.issuerName.getName() : null); buffer.append(", ldapURL = ").append(this.ldapURL); buffer.append(", serialNumberAttrName = ").append(this.serialNumberAttrName); return buffer.toString(); } }