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. --- java/rmi/server/RMIClassLoader.java | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'java/rmi/server/RMIClassLoader.java') 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