629 lines · 20.5 KB · Java
RawDownload
/* * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.  Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle in the LICENSE file that accompanied this code. * * This code 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 General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ package com.sun.jndi.url.ldap; import javax.naming.spi.ResolveResult;import javax.naming.*;import javax.naming.directory.*;import java.util.Hashtable;import java.util.StringTokenizer;import com.sun.jndi.ldap.LdapURL; /** * An LDAP URL context. * * @author Rosanna Lee * @author Scott Seligman */ final public class ldapURLContext        extends com.sun.jndi.toolkit.url.GenericURLDirContext {     ldapURLContext(Hashtable env) {        super(env);    }     /**      * Resolves 'name' into a target context with remaining name.      * It only resolves the hostname/port number. The remaining name      * contains the root DN.      *      * For example, with a LDAP URL "ldap://localhost:389/o=widget,c=us",      * this method resolves "ldap://localhost:389/" to the root LDAP      * context on the server 'localhost' on port 389,      * and returns as the remaining name "o=widget, c=us".      */    protected ResolveResult getRootURLContext(String name, Hashtable env)    throws NamingException {        return ldapURLContextFactory.getUsingURLIgnoreRootDN(name, env);    }     /**     * Return the suffix of an ldap url.     * prefix parameter is ignored.     */    protected Name getURLSuffix(String prefix, String url)        throws NamingException {         LdapURL ldapUrl = new LdapURL(url);        String dn = (ldapUrl.getDN() != null? ldapUrl.getDN() : "");         // Represent DN as empty or single-component composite name.        CompositeName remaining = new CompositeName();        if (!"".equals(dn)) {            // if nonempty, add component            remaining.add(dn);        }        return remaining;    }     /*     * Override context operations.     * Test for presence of LDAP URL query components in the name argument.     * Query components are permitted only for search operations and only     * when the name has a single component.     */     public Object lookup(String name) throws NamingException {        if (LdapURL.hasQueryComponents(name)) {            throw new InvalidNameException(name);        } else {            return super.lookup(name);        }    }     public Object lookup(Name name) throws NamingException {        if (LdapURL.hasQueryComponents(name.get(0))) {            throw new InvalidNameException(name.toString());        } else {            return super.lookup(name);        }    }     public void bind(String name, Object obj) throws NamingException {        if (LdapURL.hasQueryComponents(name)) {            throw new InvalidNameException(name);        } else {            super.bind(name, obj);        }    }     public void bind(Name name, Object obj) throws NamingException {        if (LdapURL.hasQueryComponents(name.get(0))) {            throw new InvalidNameException(name.toString());        } else {            super.bind(name, obj);        }    }     public void rebind(String name, Object obj) throws NamingException {        if (LdapURL.hasQueryComponents(name)) {            throw new InvalidNameException(name);        } else {            super.rebind(name, obj);        }    }     public void rebind(Name name, Object obj) throws NamingException {        if (LdapURL.hasQueryComponents(name.get(0))) {            throw new InvalidNameException(name.toString());        } else {            super.rebind(name, obj);        }    }     public void unbind(String name) throws NamingException {        if (LdapURL.hasQueryComponents(name)) {            throw new InvalidNameException(name);        } else {            super.unbind(name);        }    }     public void unbind(Name name) throws NamingException {        if (LdapURL.hasQueryComponents(name.get(0))) {            throw new InvalidNameException(name.toString());        } else {            super.unbind(name);        }    }     public void rename(String oldName, String newName) throws NamingException {        if (LdapURL.hasQueryComponents(oldName)) {            throw new InvalidNameException(oldName);        } else if (LdapURL.hasQueryComponents(newName)) {            throw new InvalidNameException(newName);        } else {            super.rename(oldName, newName);        }    }     public void rename(Name oldName, Name newName) throws NamingException {        if (LdapURL.hasQueryComponents(oldName.get(0))) {            throw new InvalidNameException(oldName.toString());        } else if (LdapURL.hasQueryComponents(newName.get(0))) {            throw new InvalidNameException(newName.toString());        } else {            super.rename(oldName, newName);        }    }     public NamingEnumeration list(String name)  throws NamingException {        if (LdapURL.hasQueryComponents(name)) {            throw new InvalidNameException(name);        } else {            return super.list(name);        }    }     public NamingEnumeration list(Name name) throws NamingException {        if (LdapURL.hasQueryComponents(name.get(0))) {            throw new InvalidNameException(name.toString());        } else {            return super.list(name);        }    }     public NamingEnumeration listBindings(String name) throws NamingException {        if (LdapURL.hasQueryComponents(name)) {            throw new InvalidNameException(name);        } else {            return super.listBindings(name);        }    }     public NamingEnumeration listBindings(Name name) throws NamingException {        if (LdapURL.hasQueryComponents(name.get(0))) {            throw new InvalidNameException(name.toString());        } else {            return super.listBindings(name);        }    }     public void destroySubcontext(String name) throws NamingException {        if (LdapURL.hasQueryComponents(name)) {            throw new InvalidNameException(name);        } else {            super.destroySubcontext(name);        }    }     public void destroySubcontext(Name name) throws NamingException {        if (LdapURL.hasQueryComponents(name.get(0))) {            throw new InvalidNameException(name.toString());        } else {            super.destroySubcontext(name);        }    }     public Context createSubcontext(String name) throws NamingException {        if (LdapURL.hasQueryComponents(name)) {            throw new InvalidNameException(name);        } else {            return super.createSubcontext(name);        }    }     public Context createSubcontext(Name name) throws NamingException {        if (LdapURL.hasQueryComponents(name.get(0))) {            throw new InvalidNameException(name.toString());        } else {            return super.createSubcontext(name);        }    }     public Object lookupLink(String name) throws NamingException {        if (LdapURL.hasQueryComponents(name)) {            throw new InvalidNameException(name);        } else {            return super.lookupLink(name);        }    }     public Object lookupLink(Name name) throws NamingException {        if (LdapURL.hasQueryComponents(name.get(0))) {            throw new InvalidNameException(name.toString());        } else {            return super.lookupLink(name);        }    }     public NameParser getNameParser(String name) throws NamingException {        if (LdapURL.hasQueryComponents(name)) {            throw new InvalidNameException(name);        } else {            return super.getNameParser(name);        }    }     public NameParser getNameParser(Name name) throws NamingException {        if (LdapURL.hasQueryComponents(name.get(0))) {            throw new InvalidNameException(name.toString());        } else {            return super.getNameParser(name);        }    }     public String composeName(String name, String prefix)        throws NamingException {        if (LdapURL.hasQueryComponents(name)) {            throw new InvalidNameException(name);        } else if (LdapURL.hasQueryComponents(prefix)) {            throw new InvalidNameException(prefix);        } else {            return super.composeName(name, prefix);        }    }     public Name composeName(Name name, Name prefix) throws NamingException {        if (LdapURL.hasQueryComponents(name.get(0))) {            throw new InvalidNameException(name.toString());        } else if (LdapURL.hasQueryComponents(prefix.get(0))) {            throw new InvalidNameException(prefix.toString());        } else {            return super.composeName(name, prefix);        }    }     public Attributes getAttributes(String name) throws NamingException {        if (LdapURL.hasQueryComponents(name)) {            throw new InvalidNameException(name);        } else {            return super.getAttributes(name);        }    }     public Attributes getAttributes(Name name) throws NamingException  {        if (LdapURL.hasQueryComponents(name.get(0))) {            throw new InvalidNameException(name.toString());        } else {            return super.getAttributes(name);        }    }     public Attributes getAttributes(String name, String[] attrIds)        throws NamingException {        if (LdapURL.hasQueryComponents(name)) {            throw new InvalidNameException(name);        } else {            return super.getAttributes(name, attrIds);        }    }     public Attributes getAttributes(Name name, String[] attrIds)        throws NamingException {        if (LdapURL.hasQueryComponents(name.get(0))) {            throw new InvalidNameException(name.toString());        } else {            return super.getAttributes(name, attrIds);        }    }     public void modifyAttributes(String name, int mod_op, Attributes attrs)        throws NamingException {        if (LdapURL.hasQueryComponents(name)) {            throw new InvalidNameException(name);        } else {            super.modifyAttributes(name, mod_op, attrs);        }    }     public void modifyAttributes(Name name, int mod_op, Attributes attrs)        throws NamingException {        if (LdapURL.hasQueryComponents(name.get(0))) {            throw new InvalidNameException(name.toString());        } else {            super.modifyAttributes(name, mod_op, attrs);        }    }     public void modifyAttributes(String name, ModificationItem[] mods)        throws NamingException {        if (LdapURL.hasQueryComponents(name)) {            throw new InvalidNameException(name);        } else {            super.modifyAttributes(name, mods);        }    }     public void modifyAttributes(Name name, ModificationItem[] mods)        throws NamingException  {        if (LdapURL.hasQueryComponents(name.get(0))) {            throw new InvalidNameException(name.toString());        } else {            super.modifyAttributes(name, mods);        }    }     public void bind(String name, Object obj, Attributes attrs)        throws NamingException {        if (LdapURL.hasQueryComponents(name)) {            throw new InvalidNameException(name);        } else {            super.bind(name, obj, attrs);        }    }     public void bind(Name name, Object obj, Attributes attrs)        throws NamingException {        if (LdapURL.hasQueryComponents(name.get(0))) {            throw new InvalidNameException(name.toString());        } else {            super.bind(name, obj, attrs);        }    }     public void rebind(String name, Object obj, Attributes attrs)        throws NamingException {        if (LdapURL.hasQueryComponents(name)) {            throw new InvalidNameException(name);        } else {            super.rebind(name, obj, attrs);        }    }     public void rebind(Name name, Object obj, Attributes attrs)        throws NamingException {        if (LdapURL.hasQueryComponents(name.get(0))) {            throw new InvalidNameException(name.toString());        } else {            super.rebind(name, obj, attrs);        }    }     public DirContext createSubcontext(String name, Attributes attrs)        throws NamingException {        if (LdapURL.hasQueryComponents(name)) {            throw new InvalidNameException(name);        } else {            return super.createSubcontext(name, attrs);        }    }     public DirContext createSubcontext(Name name, Attributes attrs)        throws NamingException {        if (LdapURL.hasQueryComponents(name.get(0))) {            throw new InvalidNameException(name.toString());        } else {            return super.createSubcontext(name, attrs);        }    }     public DirContext getSchema(String name) throws NamingException {        if (LdapURL.hasQueryComponents(name)) {            throw new InvalidNameException(name);        } else {            return super.getSchema(name);        }    }     public DirContext getSchema(Name name) throws NamingException {        if (LdapURL.hasQueryComponents(name.get(0))) {            throw new InvalidNameException(name.toString());        } else {            return super.getSchema(name);        }    }     public DirContext getSchemaClassDefinition(String name)        throws NamingException {        if (LdapURL.hasQueryComponents(name)) {            throw new InvalidNameException(name);        } else {            return super.getSchemaClassDefinition(name);        }    }     public DirContext getSchemaClassDefinition(Name name)        throws NamingException {        if (LdapURL.hasQueryComponents(name.get(0))) {            throw new InvalidNameException(name.toString());        } else {            return super.getSchemaClassDefinition(name);        }    }     // divert the search operation when the LDAP URL has query components    public NamingEnumeration search(String name,        Attributes matchingAttributes)        throws NamingException {         if (LdapURL.hasQueryComponents(name)) {            return searchUsingURL(name);        } else {            return super.search(name, matchingAttributes);        }    }     // divert the search operation when name has a single component    public NamingEnumeration search(Name name,        Attributes matchingAttributes)        throws NamingException {        if (name.size() == 1) {            return search(name.get(0), matchingAttributes);        } else if (LdapURL.hasQueryComponents(name.get(0))) {            throw new InvalidNameException(name.toString());        } else {            return super.search(name, matchingAttributes);        }    }     // divert the search operation when the LDAP URL has query components    public NamingEnumeration search(String name,        Attributes matchingAttributes,        String[] attributesToReturn)        throws NamingException {         if (LdapURL.hasQueryComponents(name)) {            return searchUsingURL(name);        } else {            return super.search(name, matchingAttributes, attributesToReturn);        }    }     // divert the search operation when name has a single component    public NamingEnumeration search(Name name,        Attributes matchingAttributes,        String[] attributesToReturn)        throws NamingException {         if (name.size() == 1) {            return search(name.get(0), matchingAttributes, attributesToReturn);        } else if (LdapURL.hasQueryComponents(name.get(0))) {            throw new InvalidNameException(name.toString());        } else {            return super.search(name, matchingAttributes, attributesToReturn);        }    }

Lines 1–500 of 629.