/* NamingManager.java --
- Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
This file is part of GNU Classpath.
package javax.naming.spi;
-import java.util.*;
-import javax.naming.*;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.StringTokenizer;
+import javax.naming.CannotProceedException;
+import javax.naming.Context;
+import javax.naming.Name;
+import javax.naming.NamingException;
+import javax.naming.NoInitialContextException;
+import javax.naming.RefAddr;
+import javax.naming.Reference;
+import javax.naming.Referenceable;
+import javax.naming.StringRefAddr;
public class NamingManager
{
public static final String CPE = "java.naming.spi.CannotProceedException";
- private static InitialContextFactoryBuilder icfb = null;
+ private static InitialContextFactoryBuilder icfb;
// Package private so DirectoryManager can access it.
- static ObjectFactoryBuilder ofb = null;
+ static ObjectFactoryBuilder ofb;
// This class cannot be instantiated.
NamingManager ()
try
{
- icf = (InitialContextFactory) Class.forName (java_naming_factory_initial).newInstance ();
+ icf = (InitialContextFactory)Class.forName
+ (java_naming_factory_initial, true,
+ Thread.currentThread().getContextClassLoader())
+ .newInstance ();
}
catch (Exception exception)
{
NoInitialContextException e
- = new NoInitialContextException ("Can't load InitialContextFactory class: "
- + java_naming_factory_initial);
+ = new NoInitialContextException
+ ("Can't load InitialContextFactory class: "
+ + java_naming_factory_initial);
e.setRootCause(exception);
throw e;
}
prefixes = "com.sun.jndi.url";
}
- scheme += "URLContextFactory";
+ scheme = scheme + "." + scheme + "URLContextFactory";
StringTokenizer tokens = new StringTokenizer (prefixes, ":");
while (tokens.hasMoreTokens ())
String aTry = tokens.nextToken ();
try
{
- Class factoryClass = Class.forName (aTry + "." + scheme);
+ Class factoryClass = Class.forName (aTry + "." + scheme,
+ true,
+ Thread.currentThread().getContextClassLoader());
ObjectFactory factory =
(ObjectFactory) factoryClass.newInstance ();
Object obj = factory.getObjectInstance (refInfo, name,
if (fClass != null)
{
// Exceptions here are passed to the caller.
- Class k = Class.forName (fClass);
+ Class k = Class.forName (fClass,
+ true,
+ Thread.currentThread().getContextClassLoader());
factory = (ObjectFactory) k.newInstance ();
}
else
while (tokens.hasMoreTokens ())
{
String klassName = tokens.nextToken ();
- Class k = Class.forName (klassName);
+ Class k = Class.forName (klassName,
+ true,
+ Thread.currentThread().getContextClassLoader());
factory = (ObjectFactory) k.newInstance ();
Object obj = factory.getObjectInstance (refInfo, name,
nameCtx, environment);
// It is really unclear to me if this is right.
try
{
- Object obj = getObjectInstance (null, cpe.getAltName (),
- cpe.getAltNameCtx (), env);
+ Object obj = getObjectInstance (cpe.getResolvedObj(),
+ cpe.getAltName (),
+ cpe.getAltNameCtx (),
+ env);
if (obj != null)
return (Context) obj;
}
{
}
+ // fix stack trace for re-thrown exception (message confusing otherwise)
+ cpe.fillInStackTrace();
+
throw cpe;
}
String klassName = tokens.nextToken ();
try
{
- Class k = Class.forName (klassName);
+ Class k = Class.forName (klassName,
+ true,
+ Thread.currentThread().getContextClassLoader());
StateFactory factory = (StateFactory) k.newInstance ();
Object o = factory.getStateToBind (obj, name, nameCtx,
environment);