/*
* JBoss, Home of Professional Open Source.
* See the COPYRIGHT.txt file distributed with this work for information
* regarding copyright ownership. Some portions may be licensed
* to Red Hat, Inc. under one or more contributor license agreements.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA.
*/
package org.teiid.resource.adapter.ldap;
import javax.resource.ResourceException;
import org.teiid.resource.spi.BasicConnectionFactory;
import org.teiid.resource.spi.BasicManagedConnectionFactory;
public class LDAPManagedConnectionFactory extends BasicManagedConnectionFactory {
private static final long serialVersionUID = -1832915223199053471L;
private String ldapAdminUserDN;
private String ldapAdminUserPassword;
private String ldapUrl;
private Long ldapTxnTimeoutInMillis;
private String ldapContextFactory = "com.sun.jndi.ldap.LdapCtxFactory"; //$NON-NLS-1$
@Override
@SuppressWarnings("serial")
public BasicConnectionFactory<LDAPConnectionImpl> createConnectionFactory() throws ResourceException {
return new BasicConnectionFactory<LDAPConnectionImpl>() {
@Override
public LDAPConnectionImpl getConnection() throws ResourceException {
ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
return new LDAPConnectionImpl(LDAPManagedConnectionFactory.this);
}
finally {
Thread.currentThread().setContextClassLoader(contextClassLoader);
}
}
};
}
public String getLdapAdminUserDN() {
return ldapAdminUserDN;
}
public void setLdapAdminUserDN(String ldapAdminUserDN) {
this.ldapAdminUserDN = ldapAdminUserDN;
}
public String getLdapAdminUserPassword() {
return ldapAdminUserPassword;
}
public void setLdapAdminUserPassword(String ldapAdminUserPassword) {
this.ldapAdminUserPassword = ldapAdminUserPassword;
}
public Long getLdapTxnTimeoutInMillis() {
return ldapTxnTimeoutInMillis;
}
public void setLdapTxnTimeoutInMillis(Long ldapTxnTimeoutInMillis) {
this.ldapTxnTimeoutInMillis = ldapTxnTimeoutInMillis.longValue();
}
public String getLdapUrl() {
return ldapUrl;
}
public void setLdapUrl(String ldapUrl) {
this.ldapUrl = ldapUrl;
}
public String getLdapContextFactory() {
return ldapContextFactory;
}
public void setLdapContextFactory(String ldapContextFactory) {
this.ldapContextFactory = ldapContextFactory;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((ldapAdminUserDN == null) ? 0 : ldapAdminUserDN.hashCode());
result = prime * result + ((ldapAdminUserPassword == null) ? 0 : ldapAdminUserPassword.hashCode());
result = prime * result + ((ldapContextFactory == null) ? 0 : ldapContextFactory.hashCode());
result = prime * result + (ldapTxnTimeoutInMillis == null ? 0 : (int) (ldapTxnTimeoutInMillis ^ (ldapTxnTimeoutInMillis >>> 32)));
result = prime * result + ((ldapUrl == null) ? 0 : ldapUrl.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
LDAPManagedConnectionFactory other = (LDAPManagedConnectionFactory) obj;
if (!checkEquals(this.ldapAdminUserDN, other.ldapAdminUserDN)) {
return false;
}
if (!checkEquals(this.ldapAdminUserPassword, other.ldapAdminUserPassword)) {
return false;
}
if (!checkEquals(this.ldapContextFactory, other.ldapContextFactory)) {
return false;
}
if (!checkEquals(this.ldapTxnTimeoutInMillis, other.ldapTxnTimeoutInMillis)) {
return false;
}
if (!checkEquals(this.ldapUrl, other.ldapUrl)) {
return false;
}
return true;
}
}