Package de.willuhn.jameica.plugin
Class PluginLoader
- java.lang.Object
-
- de.willuhn.jameica.plugin.PluginLoader
-
public final class PluginLoader extends java.lang.Object
Kontrolliert alle installierten Plugins.
-
-
Constructor Summary
Constructors Constructor Description PluginLoader()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
canUnInstall(Manifest mf)
Prueft, ob das Plugin prinzipiell deinstalliert werden kann.Plugin
findByClass(java.lang.Class c)
Versucht, anhand der Klasse herauszufinden, zu welchem Plugins sie gehoert.java.util.Map<Manifest,java.lang.Throwable>
getInitErrors()
Liefert die ggf.java.util.List<Manifest>
getInstalledManifests()
Liefert eine Liste mit den Manifesten der installierten Plugins.java.util.List<Plugin>
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.Manifest
getManifestByName(java.lang.String name)
Liefert das Manifest anhand des Plugin-Namens.java.util.List<Manifest>
getManifests()
Liefert eine Liste mit allen gefundenen Manifesten.<T extends Plugin>
TgetPlugin(java.lang.Class<? extends Plugin> plugin)
Liefert die Instanz des Plugins mit der angegebenen Klasse.Plugin
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.boolean
isObsolete(java.lang.String name)
Prueft, ob das Plugin obsolet ist und daher ignoriert wird.void
markForDelete(Manifest manifest)
Deinstalliert ein Plugin nicht sofort, sondern markiert es nur zur Loeschung.void
shutDown()
Wird beim Beenden der Anwendung ausgefuehrt und beendet alle Plugins.void
unInstall(Manifest mf, boolean deleteUserData, de.willuhn.util.ProgressMonitor monitor)
Deinstalliert das angegebene Plugin.
-
-
-
Method Detail
-
init
public void init()
Sucht nach allen verfuegbaren Plugins und initialisiert sie.
-
isObsolete
public boolean isObsolete(java.lang.String name)
Prueft, ob das Plugin obsolet ist und daher ignoriert wird.- Parameters:
name
- der Name des Plugins.- Returns:
- true, wenn es obsolet ist.
-
getInstalledPlugins
public java.util.List<Plugin> getInstalledPlugins()
Liefert eine Liste mit allen installierten Plugins.- Returns:
- Liste aller installierten Plugins. Die Elemente sind vom Typ
AbstractPlugin
.
-
getInstalledManifests
public java.util.List<Manifest> getInstalledManifests()
Liefert eine Liste mit den Manifesten der installierten Plugins.- Returns:
- Liste der installierten Manifeste.
-
getManifests
public java.util.List<Manifest> getManifests()
Liefert eine Liste mit allen gefundenen Manifesten.- Returns:
- Liste aller Manifeste (unabhaengig ob erfolgreich installiert oder nicht).
-
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.
-
getManifestByName
public Manifest getManifestByName(java.lang.String name)
Liefert das Manifest anhand des Plugin-Namens.- Parameters:
name
- Name des Plugins.- Returns:
- das Manifest.
-
getPlugin
public <T extends Plugin> T getPlugin(java.lang.Class<? extends Plugin> plugin)
Liefert die Instanz des Plugins mit der angegebenen Klasse.- Type Parameters:
T
- der Typ des Plugins.- Parameters:
plugin
- Klasse des Plugins.- Returns:
- Instanz des Plugins oder
null
wenn es nicht installiert ist.
-
getPlugin
public Plugin 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 Plugin 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 mittelsPluginLoader.isInstalled(NeededPlugin.class)
pruefen wollen, ob das benoetigte Plugin installiert ist, dann wuerde bereits dasNeededPlugin.class
vom SystemClassLoader der JVM mit einerClassNotFoundException
aufgeben. Da wir es hier mit dynamisch geladenen Klassen zu tun haben, sind die dem SystemClassLoader nicht bekannt sondern nur unserem eigenen, der viaApplication.getClassLoader()
bezogen werden kann.- Returns:
true
, wenn es installiert und aktiv ist.
-
canUnInstall
public void canUnInstall(Manifest mf) throws de.willuhn.util.ApplicationException
Prueft, ob das Plugin prinzipiell deinstalliert werden kann.- Parameters:
mf
- das zu pruefende Plugin.- Throws:
de.willuhn.util.ApplicationException
- wird geworfen, wenn das Plugin nicht deinstalliert werden kann.
-
unInstall
public void unInstall(Manifest mf, boolean deleteUserData, de.willuhn.util.ProgressMonitor monitor)
Deinstalliert das angegebene Plugin. Die Deinstallation geschieht im Hintergrund. Die Funktion kehrt daher sofort zurueck.- Parameters:
mf
- das zu deinstallierende Plugin.deleteUserData
-monitor
- der Fortschritts-Monitor.
-
getInitErrors
public java.util.Map<Manifest,java.lang.Throwable> getInitErrors()
Liefert die ggf. beim Laden/Initialisieren des Plugins aufgetretenen Fehler.- Returns:
- die aufgetretenen Fehler.
-
markForDelete
public void markForDelete(Manifest manifest) throws de.willuhn.util.ApplicationException
Deinstalliert ein Plugin nicht sofort, sondern markiert es nur zur Loeschung. Das eigentliche Loeschen geschieht dann erst beim naechsten Start.- Parameters:
manifest
- das Plugin, welches zur Loeschung vorgemerkt wird.- Throws:
de.willuhn.util.ApplicationException
-
shutDown
public void shutDown()
Wird beim Beenden der Anwendung ausgefuehrt und beendet alle Plugins.
-
-