Class VFSClassLoader


  • public class VFSClassLoader
    extends java.security.SecureClassLoader
    A class loader that can load classes and resources from a search path VFS FileObjects refering both to folders and JAR files. Any FileObject of type FileType.FILE is asumed to be a JAR and is opened by creating a layered file system with the "jar" scheme.

    TODO - Test this with signed Jars and a SecurityManager.

    Version:
    $Revision: 480428 $ $Date: 2006-11-29 07:15:24 +0100 (Wed, 29 Nov 2006) $
    Author:
    Brian Olsen
    See Also:
    FileSystemManager.createFileSystem(java.lang.String, org.apache.commons.vfs.FileObject)
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void copyPermissions​(java.security.PermissionCollection src, java.security.PermissionCollection dest)
      Copies the permissions from src to dest.
      protected java.lang.Class findClass​(java.lang.String name)
      Finds and loads the class with the specified name from the search path.
      protected java.net.URL findResource​(java.lang.String name)
      Finds the resource with the specified name from the search path.
      protected java.util.Enumeration findResources​(java.lang.String name)
      Returns an Enumeration of all the resources in the search path with the specified name.
      protected java.security.PermissionCollection getPermissions​(java.security.CodeSource cs)
      Calls super.getPermissions both for the code source and also adds the permissions granted to the parent layers.
      • Methods inherited from class java.security.SecureClassLoader

        defineClass, defineClass
      • Methods inherited from class java.lang.ClassLoader

        clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findSystemClass, getClassLoadingLock, getDefinedPackage, getDefinedPackages, getName, getPackage, getPackages, getParent, getPlatformClassLoader, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, getUnnamedModule, isRegisteredAsParallelCapable, loadClass, loadClass, registerAsParallelCapable, resolveClass, resources, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • VFSClassLoader

        public VFSClassLoader​(FileObject file,
                              FileSystemManager manager)
                       throws FileSystemException
        Constructors a new VFSClassLoader for the given file.
        Parameters:
        file - the file to load the classes and resources from.
        manager - the FileManager to use when trying create a layered Jar file system.
        Throws:
        FileSystemException
      • VFSClassLoader

        public VFSClassLoader​(FileObject file,
                              FileSystemManager manager,
                              java.lang.ClassLoader parent)
                       throws FileSystemException
        Constructors a new VFSClassLoader for the given file.
        Parameters:
        file - the file to load the classes and resources from.
        manager - the FileManager to use when trying create a layered Jar file system.
        parent - the parent class loader for delegation.
        Throws:
        FileSystemException
      • VFSClassLoader

        public VFSClassLoader​(FileObject[] files,
                              FileSystemManager manager)
                       throws FileSystemException
        Constructors a new VFSClassLoader for the given files. The files will be searched in the order specified.
        Parameters:
        files - the files to load the classes and resources from.
        manager - the FileManager to use when trying create a layered Jar file system.
        Throws:
        FileSystemException
      • VFSClassLoader

        public VFSClassLoader​(FileObject[] files,
                              FileSystemManager manager,
                              java.lang.ClassLoader parent)
                       throws FileSystemException
        Constructors a new VFSClassLoader for the given FileObjects. The FileObjects will be searched in the order specified.
        Parameters:
        files - the FileObjects to load the classes and resources from.
        manager - the FileManager to use when trying create a layered Jar file system.
        parent - the parent class loader for delegation.
        Throws:
        FileSystemException
    • Method Detail

      • findClass

        protected java.lang.Class findClass​(java.lang.String name)
                                     throws java.lang.ClassNotFoundException
        Finds and loads the class with the specified name from the search path.
        Overrides:
        findClass in class java.lang.ClassLoader
        Throws:
        java.lang.ClassNotFoundException - if the class is not found.
      • getPermissions

        protected java.security.PermissionCollection getPermissions​(java.security.CodeSource cs)
        Calls super.getPermissions both for the code source and also adds the permissions granted to the parent layers.
        Overrides:
        getPermissions in class java.security.SecureClassLoader
      • copyPermissions

        protected void copyPermissions​(java.security.PermissionCollection src,
                                       java.security.PermissionCollection dest)
        Copies the permissions from src to dest.
      • findResource

        protected java.net.URL findResource​(java.lang.String name)
        Finds the resource with the specified name from the search path. This returns null if the resource is not found.
        Overrides:
        findResource in class java.lang.ClassLoader
      • findResources

        protected java.util.Enumeration findResources​(java.lang.String name)
        Returns an Enumeration of all the resources in the search path with the specified name. TODO - Implement this.
        Overrides:
        findResources in class java.lang.ClassLoader