org.outerj.xreporter.resource
Class RefreshingResourceClassLoader

java.lang.Object
  extended byjava.lang.ClassLoader
      extended byorg.outerj.xreporter.resource.RefreshingResourceClassLoader

public class RefreshingResourceClassLoader
extends java.lang.ClassLoader

A very limited ClassLoader, only meant to be used for loading ResourceBundles from a specified directory. The purpose is to be able to invalidate Java's ResourceBundle cache when the resource bundle changes on disk.

The Java ResourceBundle includes the ClassLoader it loaded a resource bundle from in its cachekey, and so if the classloader changes, it will invalidate that cache entry.

This classloader exploits that technique: when calling checkUpToDate(), all files loaded from this classloader will be checked to see if they are still up to date. If not, the method will return a new ClassLoader, or else it will return itself.


Constructor Summary
RefreshingResourceClassLoader(java.io.File dir)
           
 
Method Summary
 RefreshingResourceClassLoader checkUpToDate()
           
 void clearAssertionStatus()
           
protected  java.lang.Package definePackage(java.lang.String name, java.lang.String specTitle, java.lang.String specVersion, java.lang.String specVendor, java.lang.String implTitle, java.lang.String implVersion, java.lang.String implVendor, java.net.URL sealBase)
           
protected  java.lang.Class findClass(java.lang.String name)
           
protected  java.lang.String findLibrary(java.lang.String libname)
           
protected  java.net.URL findResource(java.lang.String name)
           
protected  java.util.Enumeration findResources(java.lang.String name)
           
protected  java.lang.Package getPackage(java.lang.String name)
           
protected  java.lang.Package[] getPackages()
           
 java.net.URL getResource(java.lang.String name)
           
 java.io.InputStream getResourceAsStream(java.lang.String name)
           
 java.lang.Class loadClass(java.lang.String name)
           
protected  java.lang.Class loadClass(java.lang.String name, boolean resolve)
           
 void setClassAssertionStatus(java.lang.String className, boolean enabled)
           
 void setDefaultAssertionStatus(boolean enabled)
           
 void setPackageAssertionStatus(java.lang.String packageName, boolean enabled)
           
 
Methods inherited from class java.lang.ClassLoader
defineClass, defineClass, defineClass, findLoadedClass, findSystemClass, getParent, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, resolveClass, setSigners
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RefreshingResourceClassLoader

public RefreshingResourceClassLoader(java.io.File dir)
Method Detail

getResourceAsStream

public java.io.InputStream getResourceAsStream(java.lang.String name)

checkUpToDate

public RefreshingResourceClassLoader checkUpToDate()

getResource

public java.net.URL getResource(java.lang.String name)

findResources

protected java.util.Enumeration findResources(java.lang.String name)
                                       throws java.io.IOException
Throws:
java.io.IOException

findResource

protected java.net.URL findResource(java.lang.String name)

loadClass

public java.lang.Class loadClass(java.lang.String name)
                          throws java.lang.ClassNotFoundException
Throws:
java.lang.ClassNotFoundException

loadClass

protected java.lang.Class loadClass(java.lang.String name,
                                    boolean resolve)
                             throws java.lang.ClassNotFoundException
Throws:
java.lang.ClassNotFoundException

findClass

protected java.lang.Class findClass(java.lang.String name)
                             throws java.lang.ClassNotFoundException
Throws:
java.lang.ClassNotFoundException

definePackage

protected java.lang.Package definePackage(java.lang.String name,
                                          java.lang.String specTitle,
                                          java.lang.String specVersion,
                                          java.lang.String specVendor,
                                          java.lang.String implTitle,
                                          java.lang.String implVersion,
                                          java.lang.String implVendor,
                                          java.net.URL sealBase)
                                   throws java.lang.IllegalArgumentException
Throws:
java.lang.IllegalArgumentException

getPackage

protected java.lang.Package getPackage(java.lang.String name)

getPackages

protected java.lang.Package[] getPackages()

findLibrary

protected java.lang.String findLibrary(java.lang.String libname)

setDefaultAssertionStatus

public void setDefaultAssertionStatus(boolean enabled)

setPackageAssertionStatus

public void setPackageAssertionStatus(java.lang.String packageName,
                                      boolean enabled)

setClassAssertionStatus

public void setClassAssertionStatus(java.lang.String className,
                                    boolean enabled)

clearAssertionStatus

public void clearAssertionStatus()