01: /*
02: * Copyright 1999-2004 Sun Microsystems, Inc. All Rights Reserved.
03: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
04: *
05: * This code is free software; you can redistribute it and/or modify it
06: * under the terms of the GNU General Public License version 2 only, as
07: * published by the Free Software Foundation. Sun designates this
08: * particular file as subject to the "Classpath" exception as provided
09: * by Sun in the LICENSE file that accompanied this code.
10: *
11: * This code is distributed in the hope that it will be useful, but WITHOUT
12: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14: * version 2 for more details (a copy is included in the LICENSE file that
15: * accompanied this code).
16: *
17: * You should have received a copy of the GNU General Public License version
18: * 2 along with this work; if not, write to the Free Software Foundation,
19: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20: *
21: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22: * CA 95054 USA or visit www.sun.com if you need additional information or
23: * have any questions.
24: */
25:
26: package com.sun.jndi.url.ldap;
27:
28: import java.util.Hashtable;
29: import javax.naming.*;
30: import javax.naming.directory.DirContext;
31: import javax.naming.spi.*;
32: import com.sun.jndi.ldap.LdapCtx;
33: import com.sun.jndi.ldap.LdapCtxFactory;
34: import com.sun.jndi.ldap.LdapURL;
35:
36: /**
37: * An LDAP URL context factory.
38: *
39: * @author Rosanna Lee
40: * @author Scott Seligman
41: * @author Vincent Ryan
42: * @version 1.20 07/05/05
43: */
44:
45: public class ldapURLContextFactory implements ObjectFactory {
46:
47: public Object getObjectInstance(Object urlInfo, Name name,
48: Context nameCtx, Hashtable<?, ?> env) throws Exception {
49:
50: if (urlInfo == null) {
51: return new ldapURLContext(env);
52: } else {
53: return LdapCtxFactory.getLdapCtxInstance(urlInfo, env);
54: }
55: }
56:
57: static ResolveResult getUsingURLIgnoreRootDN(String url,
58: Hashtable env) throws NamingException {
59: LdapURL ldapUrl = new LdapURL(url);
60: DirContext ctx = new LdapCtx("", ldapUrl.getHost(), ldapUrl
61: .getPort(), env, ldapUrl.useSsl());
62: String dn = (ldapUrl.getDN() != null ? ldapUrl.getDN() : "");
63:
64: // Represent DN as empty or single-component composite name.
65: CompositeName remaining = new CompositeName();
66: if (!"".equals(dn)) {
67: // if nonempty, add component
68: remaining.add(dn);
69: }
70:
71: return new ResolveResult(ctx, remaining);
72: }
73: }
|