Java examples for javax.naming.directory:Record
gets a user LDAP dn
/**//from w ww . j av a 2 s .com * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright (c) 2009 Sun Microsystems Inc. All Rights Reserved * * The contents of this file are subject to the terms * of the Common Development and Distribution License * (the License). You may not use this file except in * compliance with the License. * * You can obtain a copy of the License at * https://opensso.dev.java.net/public/CDDLv1.0.html or * opensso/legal/CDDLv1.0.txt * See the License for the specific language governing * permission and limitations under the License. * * When distributing Covered Code, include this CDDL * Header Notice in each file and include the License file * at opensso/legal/CDDLv1.0.txt. * If applicable, add the following below the CDDL Header, * with the fields enclosed by brackets [] replaced by * your own identifying information: * "Portions Copyrighted [year] [name of copyright owner]" * * $Id: LDAPUtils.java,v 1.2 2009-08-24 11:37:44 hubertlvg Exp $ * */ import java.util.ArrayList; import java.util.HashMap; import java.util.Hashtable; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; import javax.naming.Context; import javax.naming.NameNotFoundException; import javax.naming.NamingEnumeration; import javax.naming.NamingException; import javax.naming.directory.Attribute; import javax.naming.directory.Attributes; import javax.naming.directory.BasicAttribute; import javax.naming.directory.BasicAttributes; import javax.naming.directory.DirContext; import javax.naming.directory.InitialDirContext; import javax.naming.directory.SearchControls; import javax.naming.directory.SearchResult; public class Main{ private static final Logger logger = Logger.getLogger(LDAPUtils.class .getName()); /** * gets a user dn * * @param baseDN * @param filter * @return the user dn * @throws BackendException */ public static String getUserDN(String baseDN, String filter, DirContext ctx) throws BackendException { NamingEnumeration ne = null; String d = null; try { ne = search(baseDN, filter, null, ctx); if (ne != null) { SearchResult sr = (SearchResult) ne.next(); // d = sr.getName() + "," + baseDN; d = sr.getNameInNamespace(); } } catch (NamingException e) { logger.log(Level.SEVERE, e.getMessage(), e); } finally { close(ne); } return d; } /** * Gets a naming enumeration. * * @param baseDN * @param filter * @param returnAttributes * @return A naming enumeration. * @throws BackendException */ public static NamingEnumeration<SearchResult> search(String baseDN, String filter, String[] returnAttributes, DirContext ctx) throws BackendException { NamingEnumeration<SearchResult> ne = null; boolean found = false; try { SearchControls sc = new SearchControls(); sc.setReturningAttributes(returnAttributes); sc.setSearchScope(SearchControls.SUBTREE_SCOPE); ne = ctx.search(baseDN, filter, sc); found = ne.hasMore(); return found ? ne : null; } catch (NamingException e) { throw new BackendException(e.getMessage()); } finally { // if no records are found close it if (!found) { close(ne); } } } /** * Close context. * * @param ctx */ public static void close(DirContext ctx) { if (ctx == null) { return; } try { ctx.close(); } catch (NamingException ignore) { logger.log(Level.SEVERE, ignore.getMessage(), ignore); } } /** * Close naming enumeration. * * @param ne */ public static void close(NamingEnumeration ne) { if (ne == null) { return; } try { ne.close(); } catch (NamingException ignore) { logger.log(Level.WARNING, ignore.getMessage(), ignore); } } }