istack common utility code 2.6.1-redhat-2

com.sun.istack.tools
Class ParallelWorldClassLoader

java.lang.Object
  extended by java.lang.ClassLoader
      extended by com.sun.istack.tools.ParallelWorldClassLoader
All Implemented Interfaces:
Closeable

public class ParallelWorldClassLoader
extends ClassLoader
implements Closeable

Load classes/resources from a side folder, so that classes of the same package can live in a single jar file.

For example, with the following jar file:

  /
  +- foo
     +- X.class
  +- bar
     +- X.class
 

ParallelWorldClassLoader("foo/") would load X.class from /foo/X.class (note that X is defined in the root package, not foo.X.

This can be combined with MaskingClassLoader to mask classes which are loaded by the parent class loader so that the child class loader classes living in different folders are loaded before the parent class loader loads classes living the jar file publicly visible For example, with the following jar file:

  /
  +- foo
     +- X.class
  +- bar
     +-foo
        +- X.class
 

ParallelWorldClassLoader(MaskingClassLoader.class.getClassLoader()) would load foo.X.class from /bar/foo.X.class not the foo.X.class in the publicly visible place in the jar file, thus masking the parent classLoader from loading the class from foo.X.class (note that X is defined in the package foo, not bar.foo.X.

Author:
Kohsuke Kawaguchi

Constructor Summary
ParallelWorldClassLoader(ClassLoader parent, String prefix)
           
 
Method Summary
 void close()
           
protected  Class findClass(String name)
           
protected  URL findResource(String name)
           
protected  Enumeration<URL> findResources(String name)
           
static URL toJarUrl(URL res)
          Given the URL inside jar, returns the URL to the jar itself.
 
Methods inherited from class java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findLibrary, findLoadedClass, findSystemClass, getPackage, getPackages, getParent, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, loadClass, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ParallelWorldClassLoader

public ParallelWorldClassLoader(ClassLoader parent,
                                String prefix)
Method Detail

findClass

protected Class findClass(String name)
                   throws ClassNotFoundException
Overrides:
findClass in class ClassLoader
Throws:
ClassNotFoundException

findResource

protected URL findResource(String name)
Overrides:
findResource in class ClassLoader

findResources

protected Enumeration<URL> findResources(String name)
                                  throws IOException
Overrides:
findResources in class ClassLoader
Throws:
IOException

close

public void close()
           throws IOException
Specified by:
close in interface Closeable
Throws:
IOException

toJarUrl

public static URL toJarUrl(URL res)
                    throws ClassNotFoundException,
                           MalformedURLException
Given the URL inside jar, returns the URL to the jar itself.

Throws:
ClassNotFoundException
MalformedURLException

istack common utility code 2.6.1-redhat-2

Copyright © 2012 JBoss by Red Hat. All Rights Reserved.