From d5d2810fcc0cb609c9175a38076a2ed7aa896b25 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Thu, 2 Mar 2006 18:56:12 +0000 Subject: * java/rmi/server/RMIClassLoader.java (getProviderInstance): Wrote. --- ChangeLog | 5 +++++ java/rmi/server/RMIClassLoader.java | 20 ++++++++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index d2055563d..89d4fd1ca 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,11 @@ +2006-03-02 Tom Tromey + + * java/rmi/server/RMIClassLoader.java (getProviderInstance): Wrote. + 2006-03-02 Tom Tromey * java/rmi/server/RMIClassLoader.java (loadProxyClass): New method. + (getProviderInstance): 2006-03-02 Andrew John Hughes diff --git a/java/rmi/server/RMIClassLoader.java b/java/rmi/server/RMIClassLoader.java index 761d99830..33c44198d 100644 --- a/java/rmi/server/RMIClassLoader.java +++ b/java/rmi/server/RMIClassLoader.java @@ -38,10 +38,13 @@ exception statement from your version. */ package java.rmi.server; +import gnu.classpath.ServiceFactory; +import gnu.classpath.SystemProperties; import gnu.java.rmi.server.RMIClassLoaderImpl; import java.net.MalformedURLException; import java.net.URL; +import java.util.Iterator; /** * This class provides a set of public static utility methods for supporting @@ -181,7 +184,20 @@ public class RMIClassLoader */ private static RMIClassLoaderSpi getProviderInstance() { - // TODO: Do something more useful here. - return null; + // If the user asked for the default, return it. We do a special + // check here because our standard service lookup function does not + // handle this -- nor should it. + String prop = SystemProperties.getProperty("java.rmi.server.RMIClassLoaderSpi"); + if ("default".equals(prop)) + return null; + Iterator it = ServiceFactory.lookupProviders(RMIClassLoaderSpi.class, + null); + if (it == null || ! it.hasNext()) + return null; + // FIXME: the spec says we ought to throw an Error of some kind if + // the specified provider is not suitable for some reason. However + // our service factory simply logs the problem and moves on to the next + // provider in this situation. + return (RMIClassLoaderSpi) it.next(); } } -- cgit v1.2.1