de.willuhn.jameica.plugin
Class PluginLoader

java.lang.Object
  extended by de.willuhn.jameica.plugin.PluginLoader

public final class PluginLoader
extends java.lang.Object

Kontrolliert alle installierten Plugins.

Author:
willuhn

Constructor Summary
PluginLoader()
           
 
Method Summary
 AbstractPlugin findByClass(java.lang.Class c)
          Versucht, anhand der Klasse herauszufinden, zu welchem Plugins sie gehoert.
 java.util.List getInstalledManifests()
          Liefert eine Liste mit den Manifesten der installierten Plugins.
 java.util.List getInstalledPlugins()
          Liefert eine Liste mit allen installierten Plugins.
 Manifest getManifest(java.lang.Class plugin)
          Liefert das Manifest der angegebenen Plugin-Klasse.
 Manifest getManifest(java.lang.String pluginClass)
          Liefert das Manifest der angegebenen Plugin-Klasse.
 AbstractPlugin getPlugin(java.lang.Class plugin)
          Liefert die Instanz des Plugins mit der angegebenen Klasse.
 AbstractPlugin getPlugin(java.lang.String pluginClass)
          Liefert die Instanz des Plugins mit der angegebenen Klassennamen.
 void init()
          Sucht nach allen verfuegbaren Plugins und initialisiert sie.
 boolean isInstalled(java.lang.String pluginClass)
          Prueft, ob das angegebene Plugin installiert ist und erfolgreich initialisiert ist.
 void shutDown()
          Wird beim Beenden der Anwendung ausgefuehrt und beendet alle Plugins.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PluginLoader

public PluginLoader()
Method Detail

init

public void init()
Sucht nach allen verfuegbaren Plugins und initialisiert sie.


getInstalledPlugins

public java.util.List getInstalledPlugins()
Liefert eine Liste mit allen installierten Plugins.

Returns:
Liste aller installierten Plugins. Die Elemente sind vom Typ AbstractPlugin.

getInstalledManifests

public java.util.List getInstalledManifests()
Liefert eine Liste mit den Manifesten der installierten Plugins.

Returns:
Liste der installierten Manifeste.

getManifest

public Manifest getManifest(java.lang.Class plugin)
Liefert das Manifest der angegebenen Plugin-Klasse.

Parameters:
plugin - Klasse des Plugins.
Returns:
das Manifest.

getManifest

public Manifest getManifest(java.lang.String pluginClass)
Liefert das Manifest der angegebenen Plugin-Klasse.

Parameters:
pluginClass - Klasse des Plugins.
Returns:
das Manifest.

getPlugin

public AbstractPlugin getPlugin(java.lang.Class plugin)
Liefert die Instanz des Plugins mit der angegebenen Klasse.

Parameters:
plugin - Klasse des Plugins.
Returns:
Instanz des Plugins oder null wenn es nicht installiert ist.

getPlugin

public AbstractPlugin getPlugin(java.lang.String pluginClass)
Liefert die Instanz des Plugins mit der angegebenen Klassennamen.

Parameters:
pluginClass - Klassenname des Plugins.
Returns:
Instanz des Plugins oder null wenn es nicht installiert ist.

findByClass

public AbstractPlugin findByClass(java.lang.Class c)
Versucht, anhand der Klasse herauszufinden, zu welchem Plugins sie gehoert. Falls die Klasse in mehreren Plugins enthalten ist und diese Plugins einen gemeinsamen Classloader nutzen (was bei den bisherigen und meisten Plugins meist der Fall ist), kann das Ergebnis durchaus variieren.

Parameters:
c - die zu testende Klasse.
Returns:
das Plugin oder null, wenn es nicht ermittelbar ist oder zu einem Fehler fuehrte. Der Fehler wird im Jameica-Log protokolliert.

isInstalled

public boolean isInstalled(java.lang.String pluginClass)
Prueft, ob das angegebene Plugin installiert ist und erfolgreich initialisiert ist.

Parameters:
pluginClass - vollstaeniger Klassenname des Plugins. Warum hier nicht ein Class-Objekt uebergeben wird? Wuerde das Plugin mittels PluginLoader.isInstalled(NeededPlugin.class) pruefen wollen, ob das benoetigte Plugin installiert ist, dann wuerde bereits das NeededPlugin.class vom SystemClassLoader der JVM mit einer ClassNotFoundException aufgeben. Da wir es hier mit dynamisch geladenen Klassen zu tun haben, sind die dem SystemClassLoader nicht bekannt sondern nur unserem eigenen, der via Application.getClassLoder() bezogen werden kann.
Returns:
true, wenn es installiert und aktiv ist.

shutDown

public void shutDown()
Wird beim Beenden der Anwendung ausgefuehrt und beendet alle Plugins.