Path: blob/master/src/java.naming/share/classes/com/sun/jndi/ldap/LdapNamingEnumeration.java
41161 views
/*1* Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation. Oracle designates this7* particular file as subject to the "Classpath" exception as provided8* by Oracle in the LICENSE file that accompanied this code.9*10* This code is distributed in the hope that it will be useful, but WITHOUT11* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or12* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License13* version 2 for more details (a copy is included in the LICENSE file that14* accompanied this code).15*16* You should have received a copy of the GNU General Public License version17* 2 along with this work; if not, write to the Free Software Foundation,18* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.19*20* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA21* or visit www.oracle.com if you need additional information or have any22* questions.23*/2425package com.sun.jndi.ldap;2627import javax.naming.*;28import javax.naming.directory.*;2930import com.sun.jndi.toolkit.ctx.Continuation;31import java.util.Vector;32import javax.naming.ldap.Control;333435final class LdapNamingEnumeration36extends AbstractLdapNamingEnumeration<NameClassPair> {3738private static final String defaultClassName = DirContext.class.getName();3940LdapNamingEnumeration(LdapCtx homeCtx, LdapResult answer, Name listArg,41Continuation cont) throws NamingException {42super(homeCtx, answer, listArg, cont);43}4445@Override46protected NameClassPair createItem(String dn, Attributes attrs,47Vector<Control> respCtls) throws NamingException {4849Attribute attr;50String className = null;5152// use the Java classname if present53if ((attr = attrs.get(Obj.JAVA_ATTRIBUTES[Obj.CLASSNAME])) != null) {54className = (String)attr.get();55} else {56className = defaultClassName;57}58CompositeName cn = new CompositeName();59cn.add(getAtom(dn));6061NameClassPair ncp;62if (respCtls != null) {63ncp = new NameClassPairWithControls(64cn.toString(), className,65homeCtx.convertControls(respCtls));66} else {67ncp = new NameClassPair(cn.toString(), className);68}69ncp.setNameInNamespace(dn);70return ncp;71}7273@Override74protected AbstractLdapNamingEnumeration<? extends NameClassPair> getReferredResults(75LdapReferralContext refCtx) throws NamingException {76// repeat the original operation at the new context77return (AbstractLdapNamingEnumeration<? extends NameClassPair>)refCtx.list(listArg);78}79}808182