Mega Code Archive

 
Categories / Java / JNDI LDAP
 

Replace the placeholders in the filter with the proper values from the userName

/*  * 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<String, String> properties = new HashMap<String, String>();         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) {                             }         }     } }