You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@river.apache.org by jc...@apache.org on 2010/09/01 23:53:28 UTC

svn commit: r991718 - /incubator/river/jtsk/trunk/src/net/jini/loader/ClassLoading.java

Author: jcosters
Date: Wed Sep  1 21:53:28 2010
New Revision: 991718

URL: http://svn.apache.org/viewvc?rev=991718&view=rev
Log:
Backout ClassLoading changes

Modified:
    incubator/river/jtsk/trunk/src/net/jini/loader/ClassLoading.java

Modified: incubator/river/jtsk/trunk/src/net/jini/loader/ClassLoading.java
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/net/jini/loader/ClassLoading.java?rev=991718&r1=991717&r2=991718&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/net/jini/loader/ClassLoading.java (original)
+++ incubator/river/jtsk/trunk/src/net/jini/loader/ClassLoading.java Wed Sep  1 21:53:28 2010
@@ -18,21 +18,18 @@
 
 package net.jini.loader;
 
-import java.io.IOException;
 import java.lang.ref.SoftReference;
 import java.net.MalformedURLException;
+import java.rmi.server.RMIClassLoader;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
-import java.util.HashSet;
 import java.util.Map;
 import java.util.WeakHashMap;
-import java.util.logging.Level;
-import java.util.logging.Logger;
 import net.jini.security.Security;
 
 /**
  * Provides static methods for loading classes using {@link
- * CodebaseAccessClassLoader} with optional verification that the codebase URLs
+ * RMIClassLoader} with optional verification that the codebase URLs
  * used to load classes provide content integrity (see {@link
  * Security#verifyCodebaseIntegrity
  * Security.verifyCodebaseIntegrity}).
@@ -41,18 +38,7 @@ import net.jini.security.Security;
  * @since 2.0
  **/
 public final class ClassLoading {
-  	private static Logger logger = Logger.getLogger( ClassLoading.class.getName() );
-// 	private static HashSet<String>noprefs = new HashSet<String>();
-// 	
-// 	public synchronized static void neverPrefer( String name ) {
-// 		logger.fine("neverPrefer("+name+")");
-// 		noprefs.add( name );
-// 	}
-// 
-// 	public synchronized static void honorPreferenceFor( String name ) {
-// 		logger.fine("honorPreferenceFor("+name+")");
-// 		noprefs.remove( name );
-// 	}
+
     /**
      * per-thread cache (weakly) mapping verifierLoader values to
      * (soft) sets of codebase values that have been verified (to
@@ -64,8 +50,8 @@ public final class ClassLoading {
 
     /**
      * Loads a class using {@link
-     * CodebaseAccessClassLoader#loadClass(String,String,ClassLoader)
-     * CodebaseAccessClassLoader.loadClass}, optionally verifying that the
+     * RMIClassLoader#loadClass(String,String,ClassLoader)
+     * RMIClassLoader.loadClass}, optionally verifying that the
      * codebase URLs provide content integrity.
      *
      * <p>If <code>verifyCodebaseIntegrity</code> is <code>true</code>
@@ -86,19 +72,19 @@ public final class ClassLoading {
      * other exception, then this method throws that exception.
      *
      * <p>This method then invokes {@link
-     * CodebaseAccessClassLoader#loadClass(String,String,ClassLoader)
-     * CodebaseAccessClassLoader.loadClass} with <code>codebase</code> as the
+     * RMIClassLoader#loadClass(String,String,ClassLoader)
+     * RMIClassLoader.loadClass} with <code>codebase</code> as the
      * first argument (or <code>null</code> if in the previous step
      * <code>Security.verifyCodebaseIntegrity</code> was invoked and
      * it threw a <code>SecurityException</code>), <code>name</code>
      * as the second argument, and <code>defaultLoader</code> as the
-     * third argument.  If <code>CodebaseAccessClassLoader.loadClass</code>
+     * third argument.  If <code>RMIClassLoader.loadClass</code>
      * throws a <code>ClassNotFoundException</code>, then this method
      * throws a <code>ClassNotFoundException</code>; if
-     * <code>CodebaseAccessClassLoader.loadClass</code> throws any other
+     * <code>RMIClassLoader.loadClass</code> throws any other
      * exception, then this method throws that exception; otherwise,
      * this method returns the <code>Class</code> returned by
-     * <code>CodebaseAccessClassLoader.loadClass</code>.
+     * <code>RMIClassLoader.loadClass</code>.
      *
      * @param codebase the list of URLs (separated by spaces) to load
      * the class from, or <code>null</code>
@@ -107,7 +93,7 @@ public final class ClassLoading {
      *
      * @param defaultLoader the class loader value (possibly
      * <code>null</code>) to pass as the <code>defaultLoader</code>
-     * argument to <code>CodebaseAccessClassLoader.loadClass</code>
+     * argument to <code>RMIClassLoader.loadClass</code>
      *
      * @param verifyCodebaseIntegrity if <code>true</code>, verify
      * that the codebase URLs provide content integrity
@@ -122,11 +108,11 @@ public final class ClassLoading {
      *
      * @throws MalformedURLException if
      * <code>Security.verifyCodebaseIntegrity</code> or
-     * <code>CodebaseAccessClassLoader.loadClass</code> throws a
+     * <code>RMIClassLoader.loadClass</code> throws a
      * <code>MalformedURLException</code>
      *
      * @throws ClassNotFoundException if
-     * <code>CodebaseAccessClassLoader.loadClass</code> throws a
+     * <code>RMIClassLoader.loadClass</code> throws a
      * <code>ClassNotFoundException</code>
      *
      * @throws NullPointerException if <code>name</code> is
@@ -137,7 +123,7 @@ public final class ClassLoading {
 				  ClassLoader defaultLoader,
 				  boolean verifyCodebaseIntegrity,
 				  ClassLoader verifierLoader)
-	throws IOException, ClassNotFoundException
+	throws MalformedURLException, ClassNotFoundException
     {
 	SecurityException verifyException = null;
 	if (verifyCodebaseIntegrity && codebase != null) {
@@ -148,57 +134,8 @@ public final class ClassLoading {
 		codebase = null;
 	    }
 	}
-//        if( logger.isLoggable(Level.FINEST) ) {
-//                logger.log(Level.FINEST, "loadClass(url="+codebase+",class="+name+
-//                                ") with="+defaultLoader+", noprefs="+isNeverPreferred(name),
-//                        new Throwable("loadClass("+name+")") );
-//        } else if( logger.isLoggable(Level.FINER) ) {
-//                logger.finer("loadClass(url="+codebase+",class="+name+
-//                                ") with="+defaultLoader+", noprefs="+isNeverPreferred(name));
-//        }
-//        if( logger.isLoggable(Level.FINEST) ) {
-//                synchronized( noprefs ) {
-//                        logger.finest("Check Pref \""+name+"\" in "+noprefs );
-//                }
-//        }
-//        if( isNeverPreferred(name) ) {
-//                // defaultLoader is the remote loader, only use it's classLoader
-//                if( defaultLoader != null ) {
-//                        // If it's loaded by the system class loader, don't use it
-//                        if( defaultLoader.getClass().getClassLoader() != null ) {
-//                                logger.fine("Loading with defaultLoader: "+
-//                                                defaultLoader+" which was loaded from "+
-//                                                defaultLoader.getClass().getClassLoader() );
-//                                Class c = Class.forName( name, true,
-//                                        CodebaseAccessClassLoader.getSystemContextClassLoader( defaultLoader ) );
-//                                logger.fine("Loaded "+c.getName()+" using: "+c.getClassLoader() );
-//                                return c;
-//                        }
-//                }
-//
-//                if (logger.isLoggable(Level.FINE))
-//                        logger.fine("\""+name+"\" is never preferred and there is no " +
-//                                "defaultLoader, so calling forName()" +
-//                                ", ctx loader="+Thread.currentThread().getContextClassLoader()+
-//                                ", thisLoader="+ClassLoading.class.getClassLoader() );
-//                Class c = Class.forName( name, true, CodebaseAccessClassLoader.getSystemContextClassLoader( null ) );
-//                if (logger.isLoggable(Level.FINE))  {
-//                        logger.fine("Loaded "+
-//                                c.getName()+" using: "+c.getClassLoader() );
-//                }
-//                return c;
-//        }
- 
-        if (logger.isLoggable(Level.FINE)) {
-                logger.fine( "Using ("+(defaultLoader != null ?
-                                defaultLoader.getClass().getClassLoader() : null)+
-                        "="+defaultLoader+") to download: "+name+" from "+codebase );
-        }
-        try {
-                Class c = CodebaseAccessClassLoader.loadClass(codebase, name, defaultLoader );
-                if (logger.isLoggable(Level.FINE))
-                        logger.fine("Loaded "+c.getName()+" using: "+c.getClassLoader() );
-                return c;      
+	try {
+	    return RMIClassLoader.loadClass(codebase, name, defaultLoader);
 	} catch (ClassNotFoundException e) {
 	    if (verifyException != null) {
 		// assume that the verify exception is more important
@@ -212,8 +149,8 @@ public final class ClassLoading {
 
     /**
      * Loads a dynamic proxy class using {@link
-     * CodebaseAccessClassLoader#loadProxyClass(String,String[],ClassLoader)
-     * CodebaseAccessClassLoader.loadProxyClass}, optionally verifying that the
+     * RMIClassLoader#loadProxyClass(String,String[],ClassLoader)
+     * RMIClassLoader.loadProxyClass}, optionally verifying that the
      * codebase URLs provide content integrity.
      *
      * <p>If <code>verifyCodebaseIntegrity</code> is <code>true</code>
@@ -234,20 +171,20 @@ public final class ClassLoading {
      * exception, then this method throws that exception.
      *
      * <p>This method invokes {@link
-     * CodebaseAccessClassLoader#loadProxyClass(String,String[],ClassLoader)
-     * CodebaseAccessClassLoader.loadProxyClass} with <code>codebase</code> as
+     * RMIClassLoader#loadProxyClass(String,String[],ClassLoader)
+     * RMIClassLoader.loadProxyClass} with <code>codebase</code> as
      * the first argument (or <code>null</code> if in the previous
      * step <code>Security.verifyCodebaseIntegrity</code> was invoked
      * and it threw a <code>SecurityException</code>),
      * <code>interfaceNames</code> as the second argument, and
      * <code>defaultLoader</code> as the third argument.  If
-     * <code>CodebaseAccessClassLoader.loadProxyClass</code> throws a
+     * <code>RMIClassLoader.loadProxyClass</code> throws a
      * <code>ClassNotFoundException</code>, then this method throws a
      * <code>ClassNotFoundException</code>; if
-     * <code>CodebaseAccessClassLoader.loadProxyClass</code> throws any other
+     * <code>RMIClassLoader.loadProxyClass</code> throws any other
      * exception, then this method throws that exception; otherwise,
      * this method returns the <code>Class</code> returned by
-     * <code>CodebaseAccessClassLoader.loadProxyClass</code>.
+     * <code>RMIClassLoader.loadProxyClass</code>.
      *
      * @param codebase the list of URLs (separated by spaces) to load
      * classes from, or <code>null</code>
@@ -257,7 +194,7 @@ public final class ClassLoading {
      *
      * @param defaultLoader the class loader value (possibly
      * <code>null</code>) to pass as the <code>defaultLoader</code>
-     * argument to <code>CodebaseAccessClassLoader.loadProxyClass</code>
+     * argument to <code>RMIClassLoader.loadProxyClass</code>
      *
      * @param verifyCodebaseIntegrity if <code>true</code>, verify
      * that the codebase URLs provide content integrity
@@ -272,11 +209,11 @@ public final class ClassLoading {
      *
      * @throws MalformedURLException if
      * <code>Security.verifyCodebaseIntegrity</code> or
-     * <code>CodebaseAccessClassLoader.loadProxyClass</code> throws a
+     * <code>RMIClassLoader.loadProxyClass</code> throws a
      * <code>MalformedURLException</code>
      *
      * @throws ClassNotFoundException if
-     * <code>CodebaseAccessClassLoader.loadProxyClass</code> throws a
+     * <code>RMIClassLoader.loadProxyClass</code> throws a
      * <code>ClassNotFoundException</code>
      *
      * @throws NullPointerException if <code>interfaceNames</code> is
@@ -288,7 +225,7 @@ public final class ClassLoading {
 				       ClassLoader defaultLoader,
 				       boolean verifyCodebaseIntegrity,
 				       ClassLoader verifierLoader)
-	throws IOException, ClassNotFoundException
+	throws MalformedURLException, ClassNotFoundException
     {
 	SecurityException verifyException = null;
 	if (verifyCodebaseIntegrity && codebase != null) {
@@ -300,7 +237,7 @@ public final class ClassLoading {
 	    }
 	}
 	try {
-	    return CodebaseAccessClassLoader.loadProxyClass(codebase, interfaceNames,
+	    return RMIClassLoader.loadProxyClass(codebase, interfaceNames,
 						 defaultLoader);
 	} catch (ClassNotFoundException e) {
 	    if (verifyException != null) {