Sweet Home 3D 3.4

com.eteks.sweethome3d.tools
Class ExtensionsClassLoader

java.lang.Object
  extended by java.lang.ClassLoader
      extended by com.eteks.sweethome3d.tools.ExtensionsClassLoader

public class ExtensionsClassLoader
extends java.lang.ClassLoader

Class loader able to load classes and DLLs with a higher priority from a given set of JARs. Its bytecode is Java 1.1 compatible to be loadable by old JVMs.

Author:
Emmanuel Puybaret

Constructor Summary
ExtensionsClassLoader(java.lang.ClassLoader parent, java.security.ProtectionDomain protectionDomain, java.lang.String[] extensionJarsAndDlls, java.lang.String[] applicationPackages)
          Creates a class loader.
ExtensionsClassLoader(java.lang.ClassLoader parent, java.security.ProtectionDomain protectionDomain, java.lang.String[] extensionJarAndDllResources, java.net.URL[] extensionJarAndDllUrls, java.lang.String[] applicationPackages, java.io.File cacheFolder, java.lang.String cachedFilesPrefix)
          Creates a class loader.
 
Method Summary
 void copyInputStreamToFile(java.io.InputStream input, java.io.File file)
          Copies the input content to the given file.
protected  java.lang.Class findClass(java.lang.String name)
          Finds and defines the given class among the extension JARs given in constructor, then among resources.
protected  java.lang.String findLibrary(java.lang.String libname)
          Returns the library path of an extension DLL.
protected  java.net.URL findResource(java.lang.String name)
          Returns the URL of the given resource searching first if it exists among the extension JARs given in constructor.
protected  java.lang.Class loadClass(java.lang.String name, boolean resolve)
          Loads a class with this class loader if its package belongs to applicationPackages given in constructor.
 
Methods inherited from class java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findLoadedClass, findResources, findSystemClass, getPackage, getPackages, getParent, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, 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

ExtensionsClassLoader

public ExtensionsClassLoader(java.lang.ClassLoader parent,
                             java.security.ProtectionDomain protectionDomain,
                             java.lang.String[] extensionJarsAndDlls,
                             java.lang.String[] applicationPackages)
Creates a class loader. It will consider JARs and DLLs of extensionJarsAndDlls accessed as resources as classpath and libclasspath elements with a higher priority than the ones of default classpath, and will load itself all the classes belonging to packages of applicationPackages. No cache will be used.


ExtensionsClassLoader

public ExtensionsClassLoader(java.lang.ClassLoader parent,
                             java.security.ProtectionDomain protectionDomain,
                             java.lang.String[] extensionJarAndDllResources,
                             java.net.URL[] extensionJarAndDllUrls,
                             java.lang.String[] applicationPackages,
                             java.io.File cacheFolder,
                             java.lang.String cachedFilesPrefix)
Creates a class loader. It will consider JARs and DLLs of extensionJarAndDllResources and extensionJarAndDllUrls as classpath and libclasspath elements with a higher priority than the ones of default classpath, and will load itself all the classes belonging to packages of applicationPackages.
Copies of extensionJarAndDllResources and extensionJarAndDllUrls will be stored in the given cache folder, each file being prefixed by cachedFilesPrefix.

Method Detail

copyInputStreamToFile

public void copyInputStreamToFile(java.io.InputStream input,
                                  java.io.File file)
                           throws java.io.FileNotFoundException,
                                  java.io.IOException
Copies the input content to the given file.

Throws:
java.io.FileNotFoundException
java.io.IOException

findClass

protected java.lang.Class findClass(java.lang.String name)
                             throws java.lang.ClassNotFoundException
Finds and defines the given class among the extension JARs given in constructor, then among resources.

Overrides:
findClass in class java.lang.ClassLoader
Throws:
java.lang.ClassNotFoundException

findLibrary

protected java.lang.String findLibrary(java.lang.String libname)
Returns the library path of an extension DLL.

Overrides:
findLibrary in class java.lang.ClassLoader

findResource

protected java.net.URL findResource(java.lang.String name)
Returns the URL of the given resource searching first if it exists among the extension JARs given in constructor.

Overrides:
findResource in class java.lang.ClassLoader

loadClass

protected java.lang.Class loadClass(java.lang.String name,
                                    boolean resolve)
                             throws java.lang.ClassNotFoundException
Loads a class with this class loader if its package belongs to applicationPackages given in constructor.

Overrides:
loadClass in class java.lang.ClassLoader
Throws:
java.lang.ClassNotFoundException

Sweet Home 3D 3.4

? Copyrights 2006-2011 eTeks - All rights reserved
Distributed under GNU General Public License