/** * Copyright 2006 by Know-Center, Graz, Austria * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a * joint initiative of the Federal Chancellery Austria and Graz University of * Technology. * * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by * the European Commission - subsequent versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * http://www.osor.eu/eupl/ * * Unless required by applicable law or agreed to in writing, software * distributed under the Licence is distributed on an "AS IS" basis, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the Licence for the specific language governing permissions and * limitations under the Licence. * * This product combines work with different licenses. See the "NOTICE" text * file for details on the various modules and licenses. * The "NOTICE" text file is part of the distribution. Any derivative works * that you distribute must include a readable copy of the "NOTICE" text file. */ 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 String getIssuerNameAsString() { return this.issuerName.getName(); } 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"); } } 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(); } }