org.dyndns.hentschel.openArena.application
Class ClassLoader

java.lang.Object
  |
  +--java.lang.ClassLoader
        |
        +--org.dyndns.hentschel.openArena.application.ClassLoader

public class ClassLoader
extends java.lang.ClassLoader

Classloader für Agenten, Views und Arenen


Field Summary
static int AGENT
          Es handelt sich um einen Loader für Agenten
static int ARENA
          Es handelt sich um einen Loader für Arenen
private static int BUFFER_SIZE
          Die Standard INODE Dichte auf den meisten OS'es
private  boolean check
          Der Classloader überprüft beim Laden auf nicht finale statische Variablen.
private  java.lang.Class mainClass
          Die Hauptklasse des Agenten,Views oder der Arena Angegeben durch "OpenArena-MainClass" Attribut und Manifestfile Wird nur eine Klasse geladen (kein Jar) so ist diese Automatisch die Hauptklasse
private  java.lang.Class typeOfMainClass
          Dies ist der Typ der MainClass Die durch "OpenArena-MainClass" definierte Klasse muß diese Klasse/dieses Interface unterstützen
static int VIEW
          Es handelt sich um einen Loader für Ansichten
 
Fields inherited from class java.lang.ClassLoader
 
Constructor Summary
ClassLoader(java.lang.Class _typeOfMainClass, boolean _retricted)
          Erzeugt einen neuen Classloader
 
Method Summary
 void addFile(java.lang.String file)
          Lädt die Datei.
protected static void checkClass(java.lang.Class c)
          Prüft ob Klasse nicht finale statische Elemente enthält.
static org.dyndns.hentschel.openArena.application.ClassLoader getClassloader(int type)
          Factory für ClassLoader
 java.lang.Class getMainClass()
          Liefert die Hauptklasse zurück
protected  boolean isClassSubClassFrom(java.lang.Class c)
          Testet ob die Klasse c mit der Klasse/dem Interface typeOfMainClass kompatibel ist
static boolean isClassSubClassFrom(java.lang.Class c, java.lang.Class from)
          Testet ob die Klasse c mit der Klasse/dem Interface from kompatibel ist
protected  java.lang.Class loadClass(byte[] data)
          Laedt eine Klasse
protected  java.lang.Class loadClass(java.nio.channels.FileChannel in)
          Laedt eine Klasse
protected  java.lang.Class loadClass(java.io.InputStream in)
          Laedt eine Klasse
 
Methods inherited from class java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findResources, 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
 

Field Detail

AGENT

public static final int AGENT
Es handelt sich um einen Loader für Agenten

See Also:
Constant Field Values

ARENA

public static final int ARENA
Es handelt sich um einen Loader für Arenen

See Also:
Constant Field Values

VIEW

public static final int VIEW
Es handelt sich um einen Loader für Ansichten

See Also:
Constant Field Values

BUFFER_SIZE

private static final int BUFFER_SIZE
Die Standard INODE Dichte auf den meisten OS'es

See Also:
Constant Field Values

mainClass

private java.lang.Class mainClass
Die Hauptklasse des Agenten,Views oder der Arena Angegeben durch "OpenArena-MainClass" Attribut und Manifestfile Wird nur eine Klasse geladen (kein Jar) so ist diese Automatisch die Hauptklasse


typeOfMainClass

private java.lang.Class typeOfMainClass
Dies ist der Typ der MainClass Die durch "OpenArena-MainClass" definierte Klasse muß diese Klasse/dieses Interface unterstützen


check

private boolean check
Der Classloader überprüft beim Laden auf nicht finale statische Variablen. Weiterhin laufen Klassen die im Restricted Modus laufen, ohne Zugriffs Rechte auf außerhalb ihres ClassLoaders geladene Dinge ab.

Constructor Detail

ClassLoader

public ClassLoader(java.lang.Class _typeOfMainClass,
                   boolean _retricted)
Erzeugt einen neuen Classloader

Parameters:
_typeOfMainClass - Typ der Klasse die die Hauptklasse unterstützen muß
_retricted - Restricted Modus Klassen haben nur Zugriff auf Dinge die mit dem gleichen Classloader geladen worden sind. Und dürfen keine nicht finalen statischen Variablen enthalten.
Method Detail

getClassloader

public static org.dyndns.hentschel.openArena.application.ClassLoader getClassloader(int type)
Factory für ClassLoader

Parameters:
type - kann AGENT,ARENA oder VIEW annehmen
Returns:
Der entsprechenden Classloader für den angegebenen Typ

getMainClass

public java.lang.Class getMainClass()
Liefert die Hauptklasse zurück

Returns:
Die Hauptklasse

addFile

public void addFile(java.lang.String file)
             throws java.io.IOException
Lädt die Datei. Achtung: Alle Klasse die mit einen ClassLoader geladen werden, landen im selben Kontext.

Parameters:
file - Datei die geladen werden soll.
Throws:
java.io.IOException - Wenn etwas beim Lesen schief geht

isClassSubClassFrom

protected boolean isClassSubClassFrom(java.lang.Class c)
Testet ob die Klasse c mit der Klasse/dem Interface typeOfMainClass kompatibel ist

Parameters:
c - Die zutestende Klasse
Returns:
true -> wenn kompatible

isClassSubClassFrom

public static boolean isClassSubClassFrom(java.lang.Class c,
                                          java.lang.Class from)
Testet ob die Klasse c mit der Klasse/dem Interface from kompatibel ist

Parameters:
c - Die zutestende Klasse
Returns:
true -> wenn kompatible

checkClass

protected static void checkClass(java.lang.Class c)
                          throws java.lang.RuntimeException
Prüft ob Klasse nicht finale statische Elemente enthält.

Parameters:
c - Die zuüberprüfende Klasse
Throws:
java.lang.RuntimeException - wird ausgelößt wenn die Klasse nicht finale statische Elemente enthält

loadClass

protected java.lang.Class loadClass(java.io.InputStream in)
                             throws java.io.IOException
Laedt eine Klasse

Parameters:
in - Quelle
Returns:
Die geladene Klasse
Throws:
java.io.IOException - Wenn was beim lesen schief geht

loadClass

protected java.lang.Class loadClass(java.nio.channels.FileChannel in)
                             throws java.io.IOException
Laedt eine Klasse

Parameters:
in - Quelle
Returns:
Die geladene Klasse
Throws:
java.io.IOException - Wenn was beim lesen schief geht

loadClass

protected java.lang.Class loadClass(byte[] data)
Laedt eine Klasse

Parameters:
data - Quelle
Returns:
Die geladene Klasse