Class PluginLoader

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

public final class PluginLoader extends Object
Kontrolliert alle installierten Plugins.
  • Constructor Details

    • PluginLoader

      public PluginLoader()
  • Method Details

    • init

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

      public boolean isObsolete(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 List<Plugin> getInstalledPlugins()
      Liefert eine Liste mit allen installierten Plugins.
      Returns:
      Liste aller installierten Plugins. Die Elemente sind vom Typ AbstractPlugin.
    • getInstalledManifests

      public List<Manifest> getInstalledManifests()
      Liefert eine Liste mit den Manifesten der installierten Plugins.
      Returns:
      Liste der installierten Manifeste.
    • getManifests

      public List<Manifest> getManifests()
      Liefert eine Liste mit allen gefundenen Manifesten.
      Returns:
      Liste aller Manifeste (unabhaengig ob erfolgreich installiert oder nicht).
    • getManifest

      public Manifest getManifest(Class plugin)
      Liefert das Manifest der angegebenen Plugin-Klasse.
      Parameters:
      plugin - Klasse des Plugins.
      Returns:
      das Manifest.
    • getManifest

      public Manifest getManifest(String pluginClass)
      Liefert das Manifest der angegebenen Plugin-Klasse.
      Parameters:
      pluginClass - Klasse des Plugins.
      Returns:
      das Manifest.
    • getManifestByName

      public Manifest getManifestByName(String name)
      Liefert das Manifest anhand des Plugin-Namens.
      Parameters:
      name - Name des Plugins.
      Returns:
      das Manifest.
    • getPlugin

      public <T extends Plugin> T getPlugin(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(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(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(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.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 Map<Manifest,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.