sysModel
Class MBSClassLoader

java.lang.Object
  extended by java.lang.ClassLoader
      extended by sysModel.MBSClassLoader

public class MBSClassLoader
extends java.lang.ClassLoader

Class loader used for loading fish classes.

Author:
Mathias Ricken

Field Summary
private  java.util.ArrayList<java.lang.String> _buildinClasses
          List of built-in classes that should not be checked and be loaded with the regular class loader.
(package private)  java.util.HashMap<java.lang.String,java.lang.Class<?>> _classes
          Classes already loaded.
private  java.lang.String _classPathString
          String with class path.
private  MBSSecurityManager _securityManager
          Security manager in use.
private static java.lang.String[] BUILTIN_CLASSES
          Array of built-in classes that should not be checked and be loaded with the regular class loader.
private static java.lang.String JAVA_HOME_STRING
          String with the Java home directory.
private static java.lang.String PATH_SEPARATOR_STRING
          String with path separator character.
private static char SEPARATOR_CHAR
          Character with separator character.
 
Constructor Summary
MBSClassLoader(MBSSecurityManager securityManager)
          Create a new class loader.
 
Method Summary
 void checkClass(java.lang.String name, byte[] classData)
          Check if the class is safe to load.
private  byte[] loadBytes(java.lang.String name, java.lang.String path)
          Load byte array from name and path.
 java.lang.Class<?> loadClass(java.lang.String name, boolean resolveIt)
          Load a class.
private  java.lang.Class<?> loadFromClassPath(java.lang.String name, boolean resolveIt)
          Load class from class path.
private  byte[] loadFromStream(java.io.InputStream fi)
          Load byte array from stream.
 
Methods inherited from class java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, 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
 

Field Detail

_classes

java.util.HashMap<java.lang.String,java.lang.Class<?>> _classes
Classes already loaded.


_classPathString

private java.lang.String _classPathString
String with class path.


JAVA_HOME_STRING

private static final java.lang.String JAVA_HOME_STRING
String with the Java home directory.


SEPARATOR_CHAR

private static final char SEPARATOR_CHAR
Character with separator character.


PATH_SEPARATOR_STRING

private static final java.lang.String PATH_SEPARATOR_STRING
String with path separator character.


_securityManager

private MBSSecurityManager _securityManager
Security manager in use.


_buildinClasses

private java.util.ArrayList<java.lang.String> _buildinClasses
List of built-in classes that should not be checked and be loaded with the regular class loader.


BUILTIN_CLASSES

private static final java.lang.String[] BUILTIN_CLASSES
Array of built-in classes that should not be checked and be loaded with the regular class loader.

Constructor Detail

MBSClassLoader

public MBSClassLoader(MBSSecurityManager securityManager)
Create a new class loader.

Parameters:
securityManager - security manager that lets us enable and disable security measures
Method Detail

loadClass

public java.lang.Class<?> loadClass(java.lang.String name,
                                    boolean resolveIt)
                             throws java.lang.ClassNotFoundException
Load a class.

Overrides:
loadClass in class java.lang.ClassLoader
Parameters:
name - class name
resolveIt - resolve class?
Returns:
class object
Throws:
java.lang.ClassNotFoundException

loadFromClassPath

private java.lang.Class<?> loadFromClassPath(java.lang.String name,
                                             boolean resolveIt)
Load class from class path.

Parameters:
name - class name
resolveIt -
Returns:
loaded class or null if not found

loadBytes

private byte[] loadBytes(java.lang.String name,
                         java.lang.String path)
Load byte array from name and path.

Parameters:
name - class file name (without .class)
path - path to look in (or jar file)
Returns:
byte array

loadFromStream

private byte[] loadFromStream(java.io.InputStream fi)
                       throws java.io.IOException
Load byte array from stream.

Parameters:
fi - input stream
Returns:
byte array
Throws:
java.io.IOException

checkClass

public void checkClass(java.lang.String name,
                       byte[] classData)
Check if the class is safe to load.

Parameters:
name - class name
classData - bytes of the class file