X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=libjava%2Fjavax%2Fnaming%2Fspi%2FNamingManager.java;h=6c75e72e070a10962b1da702d9733c72348ae3c8;hb=2e98f1147826aed0074bd0c2d781a53424e7a36f;hp=bb3d87253d772995121cd7e9a3a61e90e8cd73dd;hpb=85021d7cf0688ce8322ae70df8bd3d0dbb825a48;p=pf3gnuchains%2Fgcc-fork.git diff --git a/libjava/javax/naming/spi/NamingManager.java b/libjava/javax/naming/spi/NamingManager.java index bb3d87253d7..6c75e72e070 100644 --- a/libjava/javax/naming/spi/NamingManager.java +++ b/libjava/javax/naming/spi/NamingManager.java @@ -1,5 +1,5 @@ /* 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. @@ -38,17 +38,27 @@ exception statement from your version. */ 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 () @@ -83,13 +93,17 @@ public class 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; } @@ -117,7 +131,7 @@ public class NamingManager prefixes = "com.sun.jndi.url"; } - scheme += "URLContextFactory"; + scheme = scheme + "." + scheme + "URLContextFactory"; StringTokenizer tokens = new StringTokenizer (prefixes, ":"); while (tokens.hasMoreTokens ()) @@ -125,7 +139,9 @@ public class NamingManager 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, @@ -227,7 +243,9 @@ public class NamingManager 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 @@ -271,7 +289,9 @@ public class NamingManager 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); @@ -314,8 +334,10 @@ public class NamingManager // 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; } @@ -323,6 +345,9 @@ public class NamingManager { } + // fix stack trace for re-thrown exception (message confusing otherwise) + cpe.fillInStackTrace(); + throw cpe; } @@ -337,7 +362,9 @@ public class NamingManager 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);