src/share/classes/com/sun/jndi/ldap/LdapCtxFactory.java
Print this page
*** 26,36 ****
package com.sun.jndi.ldap;
import java.util.Hashtable;
import java.util.Vector;
import java.util.Enumeration;
- import java.net.MalformedURLException;
import javax.naming.*;
import javax.naming.directory.*;
import javax.naming.spi.ObjectFactory;
import javax.naming.spi.InitialContextFactory;
--- 26,35 ----
*** 117,129 ****
private static String[] getURLs(Reference ref) throws NamingException {
int size = 0; // number of URLs
String[] urls = new String[ref.size()];
! Enumeration addrs = ref.getAll();
while (addrs.hasMoreElements()) {
! RefAddr addr = (RefAddr)addrs.nextElement();
if ((addr instanceof StringRefAddr) &&
addr.getType().equals(ADDRESS_TYPE)) {
urls[size++] = (String)addr.getContent();
--- 116,128 ----
private static String[] getURLs(Reference ref) throws NamingException {
int size = 0; // number of URLs
String[] urls = new String[ref.size()];
! Enumeration<RefAddr> addrs = ref.getAll();
while (addrs.hasMoreElements()) {
! RefAddr addr = addrs.nextElement();
if ((addr instanceof StringRefAddr) &&
addr.getType().equals(ADDRESS_TYPE)) {
urls[size++] = (String)addr.getContent();
*** 143,153 ****
return urls2;
}
// ------------ Utilities used by other classes ----------------
! public static DirContext getLdapCtxInstance(Object urlInfo, Hashtable env)
throws NamingException {
if (urlInfo instanceof String) {
return getUsingURL((String)urlInfo, env);
} else if (urlInfo instanceof String[]) {
--- 142,152 ----
return urls2;
}
// ------------ Utilities used by other classes ----------------
! public static DirContext getLdapCtxInstance(Object urlInfo, Hashtable<?,?> env)
throws NamingException {
if (urlInfo instanceof String) {
return getUsingURL((String)urlInfo, env);
} else if (urlInfo instanceof String[]) {
*** 156,166 ****
throw new IllegalArgumentException(
"argument must be an LDAP URL String or array of them");
}
}
! private static DirContext getUsingURL(String url, Hashtable env)
throws NamingException {
DirContext ctx = null;
LdapURL ldapUrl = new LdapURL(url);
String dn = ldapUrl.getDN();
String host = ldapUrl.getHost();
--- 155,165 ----
throw new IllegalArgumentException(
"argument must be an LDAP URL String or array of them");
}
}
! private static DirContext getUsingURL(String url, Hashtable<?,?> env)
throws NamingException {
DirContext ctx = null;
LdapURL ldapUrl = new LdapURL(url);
String dn = ldapUrl.getDN();
String host = ldapUrl.getHost();
*** 200,210 ****
/*
* Try each URL until one of them succeeds.
* If all URLs fail, throw one of the exceptions arbitrarily.
* Not pretty, but potentially more informative than returning null.
*/
! private static DirContext getUsingURLs(String[] urls, Hashtable env)
throws NamingException {
NamingException ne = null;
DirContext ctx = null;
for (int i = 0; i < urls.length; i++) {
try {
--- 199,209 ----
/*
* Try each URL until one of them succeeds.
* If all URLs fail, throw one of the exceptions arbitrarily.
* Not pretty, but potentially more informative than returning null.
*/
! private static DirContext getUsingURLs(String[] urls, Hashtable<?,?> env)
throws NamingException {
NamingException ne = null;
DirContext ctx = null;
for (int i = 0; i < urls.length; i++) {
try {
*** 219,230 ****
}
/**
* Used by Obj and obj/RemoteToAttrs too so must be public
*/
! public static Attribute createTypeNameAttr(Class cl) {
! Vector v = new Vector(10);
String[] types = getTypeNames(cl, v);
if (types.length > 0) {
BasicAttribute tAttr =
new BasicAttribute(Obj.JAVA_ATTRIBUTES[Obj.TYPENAME]);
for (int i = 0; i < types.length; i++) {
--- 218,229 ----
}
/**
* Used by Obj and obj/RemoteToAttrs too so must be public
*/
! public static Attribute createTypeNameAttr(Class<?> cl) {
! Vector<String> v = new Vector<>(10);
String[] types = getTypeNames(cl, v);
if (types.length > 0) {
BasicAttribute tAttr =
new BasicAttribute(Obj.JAVA_ATTRIBUTES[Obj.TYPENAME]);
for (int i = 0; i < types.length; i++) {
*** 233,258 ****
return tAttr;
}
return null;
}
! private static String[] getTypeNames(Class currentClass, Vector v) {
getClassesAux(currentClass, v);
Class[] members = currentClass.getInterfaces();
for (int i = 0; i < members.length; i++) {
getClassesAux(members[i], v);
}
String[] ret = new String[v.size()];
int i = 0;
! for (java.util.Enumeration e = v.elements(); e.hasMoreElements();) {
! ret[i++] = (String)e.nextElement();
}
return ret;
}
! private static void getClassesAux(Class currentClass, Vector v) {
if (!v.contains(currentClass.getName())) {
v.addElement(currentClass.getName());
}
currentClass = currentClass.getSuperclass();
--- 232,258 ----
return tAttr;
}
return null;
}
! private static String[] getTypeNames(Class<?> currentClass, Vector<String> v) {
getClassesAux(currentClass, v);
Class[] members = currentClass.getInterfaces();
for (int i = 0; i < members.length; i++) {
getClassesAux(members[i], v);
}
String[] ret = new String[v.size()];
int i = 0;
!
! for (String name : v) {
! ret[i++] = name;
}
return ret;
}
! private static void getClassesAux(Class<?> currentClass, Vector<String> v) {
if (!v.contains(currentClass.getName())) {
v.addElement(currentClass.getName());
}
currentClass = currentClass.getSuperclass();