/*
* Copyright 2007 The JA-SIG Collaborative. All rights reserved. See license
* distributed with this file and available online at
* http://www.ja-sig.org/products/cas/overview/license/
*/
import java.util.HashMap;
import java.util.Map;
import javax.naming.NamingException;
import javax.naming.directory.DirContext;
/**
* Utilities related to LDAP functions.
*
* @author Scott Battaglia
* @version $Revision: 42053 $ $Date: 2007-06-10 09:17:55 -0400 (Sun, 10 Jun 2007) $
* @since 3.0
*/
public final class LdapUtils {
private LdapUtils() {
// private constructor so that no one can instantiate.
}
/**
* Utility method to replace the placeholders in the filter with the proper
* values from the userName.
*
* @param filter
* @param userName
* @return the filtered string populated with the username
*/
public static String getFilterWithValues(final String filter,
final String userName) {
final Map properties = new HashMap();
final String[] userDomain;
String newFilter = filter;
properties.put("%u", userName.replace("\\", "\\\\"));
userDomain = userName.split("@");
properties.put("%U", userDomain[0]);
if (userDomain.length > 1) {
properties.put("%d", userDomain[1]);
final String[] dcArray = userDomain[1].split("\\.");
for (int i = 0; i < dcArray.length; i++) {
properties.put("%" + (i + 1), dcArray[dcArray.length
- 1 - i]);
}
}
for (final String key : properties.keySet()) {
final String value = properties.get(key);
newFilter = newFilter.replaceAll(key, value);
}
return newFilter;
}
/**
* Close the given context and ignore any thrown exception. This is useful
* for typical finally blocks in manual Ldap statements.
*
* @param context the Ldap context to close
*/
public static void closeContext(final DirContext context) {
if (context != null) {
try {
context.close();
} catch (NamingException ex) {
}
}
}
}