public final class PluginLoader
extends java.lang.Object
Constructor | Description |
---|---|
PluginLoader() |
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> |
getPlugin(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.
|
public void init()
public boolean isObsolete(java.lang.String name)
name
- der Name des Plugins.public java.util.List<Plugin> getInstalledPlugins()
AbstractPlugin
.public java.util.List<Manifest> getInstalledManifests()
public java.util.List<Manifest> getManifests()
public Manifest getManifest(java.lang.Class plugin)
plugin
- Klasse des Plugins.public Manifest getManifest(java.lang.String pluginClass)
pluginClass
- Klasse des Plugins.public Manifest getManifestByName(java.lang.String name)
name
- Name des Plugins.public <T extends Plugin> T getPlugin(java.lang.Class<? extends Plugin> plugin)
T
- der Typ des Plugins.plugin
- Klasse des Plugins.null
wenn es nicht
installiert ist.public Plugin getPlugin(java.lang.String pluginClass)
pluginClass
- Klassenname des Plugins.null
wenn es nicht
installiert ist.public Plugin findByClass(java.lang.Class c)
c
- die zu testende Klasse.null
, wenn es nicht ermittelbar ist
oder zu einem Fehler fuehrte. Der Fehler wird im Jameica-Log protokolliert.public boolean isInstalled(java.lang.String pluginClass)
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.public void canUnInstall(Manifest mf) throws de.willuhn.util.ApplicationException
mf
- das zu pruefende Plugin.de.willuhn.util.ApplicationException
- wird geworfen, wenn das Plugin nicht deinstalliert werden kann.public void unInstall(Manifest mf, boolean deleteUserData, de.willuhn.util.ProgressMonitor monitor)
mf
- das zu deinstallierende Plugin.deleteUserData
- monitor
- der Fortschritts-Monitor.public java.util.Map<Manifest,java.lang.Throwable> getInitErrors()
public void markForDelete(Manifest manifest) throws de.willuhn.util.ApplicationException
manifest
- das Plugin, welches zur Loeschung vorgemerkt wird.de.willuhn.util.ApplicationException
public void shutDown()