Class PluginManager

java.lang.Object
de.xima.fc.plugin.PluginManager

public class PluginManager extends Object
Class for managing plugins
Author:
XIMA MEDIA GmbH
  • Constructor Details

    • PluginManager

      public PluginManager()
  • Method Details

    • initPlugins

      public static void initPlugins()
      Initialize all plugins stored in the database
    • synchronizePlugin

      public static void synchronizePlugin(boolean isInstall, PluginSyncData pluginData) throws IOException, FCPluginException
      Throws:
      IOException
      FCPluginException
    • registerSystemPlugin

      public static void registerSystemPlugin(Class<? extends IFCPlugin> clazz, String runtimeKey) throws FCPluginException
      Method to register a plugin-class in system-scope
      Parameters:
      clazz - IFCPlugin-class to register
      runtimeKey - Runtime key (UUID) of the plugin to register.
      Throws:
      FCPluginException - When the the plugin could not be registered.
    • registerClientPlugin

      public static <T extends IFCPlugin> void registerClientPlugin(Mandant man, Class<T> clazz, String runtimeKey) throws FCPluginException
      Method to register a plugin-class in scope of the given client
      Type Parameters:
      T - Type of the plugin to register.
      Parameters:
      man - The client for which to register the plugin.
      clazz - The class of the plugin to register.
      runtimeKey - Runtime key (UUID) of the plugin to register.
      Throws:
      FCPluginException - When the the plugin could not be registered.
    • registerPlugin

      public static <T extends IFCPlugin> void registerPlugin(PluginRuntime prtm, Class<T> clazz) throws FCPluginException
      Throws:
      FCPluginException
    • registerPlugin

      public static <T extends IFCPlugin> void registerPlugin(boolean isInstall, PluginRuntime prtm, Class<T> clazz) throws FCPluginException
      Register a plugin to the given key and PluginRuntime
      Type Parameters:
      T - Type of the plugin to register.
      Parameters:
      isInstall - true if the plugin is installed for the first time, false if the plugin configuration is only updated.
      prtm - The runtime of the plugin to register.
      clazz - Class of the plugin to register.
      Throws:
      FCPluginException - When the plugin could not be registered.
    • install

      public static void install(IPluginEntity<?,?,?> pluginEntity) throws IOException, FCPluginException
      Throws:
      IOException
      FCPluginException
    • releasePlugin

      public static void releasePlugin(String scopeKey, String runtimeKey) throws IOException
      Throws:
      IOException
    • releasePlugin

      public static void releasePlugin(boolean isUninstall, String scopeKey, String runtimeKey) throws IOException
      Throws:
      IOException
    • releasePlugin

      public static void releasePlugin(PluginRuntime prtm) throws IOException
      Throws:
      IOException
    • releasePlugin

      public static void releasePlugin(boolean isUninstall, PluginRuntime prtm) throws IOException
      Throws:
      IOException
    • releasePlugins

      public static void releasePlugins()
      Releases all registered plugins
    • uninstallPlugin

      public static void uninstallPlugin(String scopeKey, String runtimeKey) throws IOException
      Parameters:
      scopeKey - the plugin scope key
      runtimeKey - the plugin runtime key
      Throws:
      IOException - on errors while uninstall
    • getClientPlugins

      public static <T extends IFCPlugin> Set<T> getClientPlugins(Mandant client, Class<T> pluginType)
      Get a set of plugins with the given interfaces registered to the given client
      Parameters:
      client - The client-scope to use for retrieving client plugins, if any.
      pluginType - Type of the plugins to retrieve.
      Returns:
      All active plugins for the given client, if any (does not include systm plugins!)
    • getClientPlugins

      public static <T extends IFCPlugin> Set<T> getClientPlugins(UUID clientUuid, Class<T> pluginType)
      Get a set of plugins with the given interfaces registered to the given client
      Parameters:
      clientUuid - The client-scope to use for retrieving client plugins, if any.
      pluginType - Type of the plugins to retrieve.
      Returns:
      All active plugins for the given client, if any (does not include systm plugins!)
    • getClientPluginsWithRuntime

      public static <T extends IFCPlugin> Set<org.apache.commons.lang3.tuple.Pair<PluginRuntime,T>> getClientPluginsWithRuntime(Mandant client, Class<T> clazz)
    • getClientPluginsWithRuntime

      public static <T extends IFCPlugin> Set<org.apache.commons.lang3.tuple.Pair<PluginRuntime,T>> getClientPluginsWithRuntime(UUID clientUuid, Class<T> clazz)
    • getClientPlugins

      public static Set<PluginRuntime> getClientPlugins(Mandant client)
      Gets a list of all plugin runtimes registered to the given client (not including system plugins!)
      Parameters:
      client - A client for which to retrieve the plugins.
      Returns:
      A list of all plugin runtimes corresponding to the plugin installed for the given client
    • getClientPlugins

      public static Set<PluginRuntime> getClientPlugins(UUID clientUuid)
      Gets a list of all plugin runtimes registered to the given client (not including system plugins!)
      Parameters:
      clientUuid - UUID of a client.
      Returns:
      A list of all plugin runtimes corresponding to the plugin installed for the given client
    • getPluginRuntime

      public static PluginRuntime getPluginRuntime(String scopeKey, String runtimeKey)
    • getSystemPlugins

      public static <T extends IFCPlugin> Set<T> getSystemPlugins(Class<T> clazz)
      Get a set of plugins with the given interfaces registered in system-scope
      Type Parameters:
      T - Type of the plugins to retrieve.
      Parameters:
      clazz - IFCPlugin-interface
      Returns:
      Set of IFCPlugin-instances
    • getSystemPluginsWithRuntime

      public static <T extends IFCPlugin> Set<org.apache.commons.lang3.tuple.Pair<PluginRuntime,T>> getSystemPluginsWithRuntime(Class<T> clazz)
    • getSystemPlugins

      public static Set<PluginRuntime> getSystemPlugins()
      Get a List of all PluginRuntimes registered in system-scope
      Returns:
      Set of PluginRuntimes
    • isHasAnyPluginsOfType

      public static boolean isHasAnyPluginsOfType(Mandant client, Class<? extends IFCPlugin> pluginType)
      Checks if any plugins of the given type exist.
      Parameters:
      client - Optional client scope. When given, the client and system scope is searched. Otherwise, only the system scope is searched.
      pluginType - Type of plugin to search for.
      Returns:
      Whether any plugins of the given type exist.
    • getAllPlugins

      public static <T extends IFCPlugin> Set<T> getAllPlugins(Mandant client, Class<T> pluginType)
      Get a set of plugins with the given interface registered in system-scope OR to the given client. (client-scope wins over system-scope)
      Parameters:
      client - Client scope for which to retrieve all plugins.
      pluginType - Type of the plugins to retrieve.
      Returns:
      All plugins from the given client (if any) and from the system scope. A client-scoped plugin overwrites a system-scoped plugin.
    • getAllPlugins

      public static <T extends IFCPlugin> Set<T> getAllPlugins(UUID clientUuid, Class<T> pluginType)
      Get a set of plugins with the given interface registered in system-scope OR to the given client. (client-scope wins over system-scope)
      Parameters:
      clientUuid - UUID of a client.
      pluginType - Type of the plugins to retrieve.
      Returns:
      All plugins from the given client (if any) and from the system scope. A client-scoped plugin overwrites a system-scoped plugin.
    • getAllPluginsWithRuntime

      public static <T extends IFCPlugin> Set<org.apache.commons.lang3.tuple.Pair<PluginRuntime,T>> getAllPluginsWithRuntime(Mandant man, Class<T> clazz)
    • getAllPluginsWithRuntime

      public static <T extends IFCPlugin> Set<org.apache.commons.lang3.tuple.Pair<PluginRuntime,T>> getAllPluginsWithRuntime(UUID clientUuid, Class<T> clazz)
    • getRegisteredPlugins

      public static <T extends IFCPlugin> Set<T> getRegisteredPlugins(Class<T> clazz)
      Get a set with all registered plugins of the given IFCPlugin-interface
      Type Parameters:
      T - Type of the plugins to retrieve.
      Parameters:
      clazz - IFCPlugin-interfaces
      Returns:
      Set of IFCPlugin-instances
    • getPluginByName

      public static <T extends IFCPlugin> T getPluginByName(Mandant man, Class<T> clazz, String pluginName)
      Get a plugin by name and IFCPlugin-interface from client- and system-scope
      Type Parameters:
      T - Type of the plugins to retrieve.
      Parameters:
      man - The client from which to retrieve the plugins.
      clazz - IFCPlugin-interface to search for
      pluginName - String name of the searched plugin
      Returns:
      IFCPlugin-instance or null if no plugin could be found
    • getPluginByNameWithRuntime

      public static <T extends IFCPlugin> org.apache.commons.lang3.tuple.Pair<PluginRuntime,T> getPluginByNameWithRuntime(Mandant man, Class<T> clazz, String pluginName)
    • getSystemPluginByName

      public static <T extends IFCPlugin> T getSystemPluginByName(Class<T> clazz, String pluginName)
      Get a system-plugin by name, IFCPlugin-interface
      Type Parameters:
      T - Type of the plugins to retrieve.
      Parameters:
      clazz - IFCPlugin-interface to search for
      pluginName - String name of the searched plugin
      Returns:
      IFCPlugin-instance or null if no plugin could be found
    • getPluginAuthenticatorType

      public static IPluginAuthenticatorType getPluginAuthenticatorType(IAuthenticator<?> authenticator)
    • getPluginAuthenticatorTypeWithRuntime

      public static org.apache.commons.lang3.tuple.Pair<PluginRuntime,IPluginAuthenticatorType> getPluginAuthenticatorTypeWithRuntime(IAuthenticator<?> authenticator)
    • getPluginNames

      public static <T extends IFCPlugin> Set<String> getPluginNames(Mandant mandant, Class<T> clazz)
      Get a set of all plugin-names with the given IFCPlugin-interface and Mandant
      Type Parameters:
      T - Type of the plugins to retrieve.
      Parameters:
      mandant - Mandant
      clazz - IFCPlugin-interface
      Returns:
      Set of Strings
    • createSystemProtocolEntry

      public static void createSystemProtocolEntry(UserContext uc, String protocolEntry, Object... params)
      Creates a system protocol entry
      Parameters:
      uc - UserContext
      protocolEntry - String protocol-text
      params - Objects parameters
    • createClientProtocolEntry

      public static void createClientProtocolEntry(UserContext uc, Mandant man, String protocolEntry, Object... params)
      Creates a client protocol entry
      Parameters:
      uc - UserContext with the user who uploaded the plugin.
      man - The client for which to create the protocol entry.
      protocolEntry - String protocol-text
      params - Objects parameters
    • isPluginJar

      @Deprecated public static boolean isPluginJar(File file)
      Deprecated.
    • deletePlugin

      @Deprecated public static void deletePlugin(PluginRuntime prtm) throws IOException
      Deprecated.
      Throws:
      IOException
    • deletePlugin

      @Deprecated public static void deletePlugin(String scopeKey, String runtimeKey) throws IOException
      Deprecated.
      Throws:
      IOException
    • getAllPlugins

      @Deprecated public static Set<IFCPlugin> getAllPlugins(Mandant man, EPluginTypes type)
      Parameters:
      man - The client scope from which to retrieve plugins.
      type - The type of the plugins to retrieve.
      Returns:
      A set of all matching plugins.
    • getPluginNameMap

      @Deprecated public static Map<EPluginScope,Set<String>> getPluginNameMap(UserContext uc, Mandant mandant, EPluginTypes type)
      Parameters:
      uc - The current user context, this parameter is not used anymore.
      mandant - The client scope from which to retrieve plugins.
      type - The type of the plugins to retrieve.
      Returns:
      A map with all matching plugins.
    • getPluginNames

      @Deprecated public static Set<String> getPluginNames(UserContext uc, Mandant mandant, EPluginTypes type)
      Parameters:
      uc - The current user context, this parameter is not used anymore.
      mandant - The client scope from which to retrieve plugins.
      type - The type of the plugins to retrieve.
      Returns:
      A set of all matching plugins.
    • getPluginByName

      @Deprecated public static IFCPlugin getPluginByName(Mandant man, EPluginTypes type, String pluginName)
      Parameters:
      man - The client scope from which to retrieve plugins.
      type - The type of the plugins to retrieve.
      pluginName - The name of the plugin to retrieve.
      Returns:
      The plugin or null when no matching plugin was found.
    • getMandantPlugins

      @Deprecated public static SortedSet<IFCPlugin> getMandantPlugins(Mandant man, EPluginTypes type)
      Deprecated.
      will be removed!
      Parameters:
      man - The client scope from which to retrieve plugins.
      type - The type of the plugins to retrieve.
      Returns:
      A set of all matching plugins.
    • getSystemPlugins

      @Deprecated public static SortedSet<IFCPlugin> getSystemPlugins(EPluginTypes type)
      Deprecated.
      Parameters:
      type - The type of the plugins to retrieve.
      Returns:
      A set of all matching plugins.
    • getSystemPluginByName

      @Deprecated public static IFCPlugin getSystemPluginByName(EPluginTypes type, String pluginName)
      Parameters:
      type - The type of the plugins to retrieve.
      pluginName - The name of the plugin to retrieve.
      Returns:
      The plugin or null when no plugin matches.
    • getMandantPluginByName

      @Deprecated public static IFCPlugin getMandantPluginByName(Mandant man, EPluginTypes type, String pluginName)
      Deprecated.
      will be removed!
      Parameters:
      man - The client scope from which to retrieve plugins.
      type - The type of the plugins to retrieve.
      pluginName - The name of the plugin to retrieve.
      Returns:
      The plugin or null when no plugin matches.
    • registerMandantPlugin

      @Deprecated public static void registerMandantPlugin(Mandant man, EPluginTypes typ, Class<? extends IFCPlugin> clazz) throws FCPluginException
      Parameters:
      man - The client scope for which to register a plugin.
      typ - The type of the plugin to register.
      clazz - The class of the plugin to register.
      Throws:
      FCPluginException - When the plugin could not be registered or initialized.
    • registerSystemPlugin

      @Deprecated public static void registerSystemPlugin(EPluginTypes typ, Class<? extends IFCPlugin> clazz) throws FCPluginException
      Parameters:
      typ - The type of the plugin to register.
      clazz - The class of the plugin to register.
      Throws:
      FCPluginException - When the plugin could not be registered or initialized.
    • createMandantProtocolEntry

      @Deprecated public static void createMandantProtocolEntry(IEntityContext ec, Mandant man, String protocolEntry, Object... params)
      Parameters:
      ec - Entity context for accessing the database.
      man - The client scope for which to create a protocol entry.
      protocolEntry - Protocol entry to create.
      params - Additional message params for the protocol message.
    • releaseMandantPlugin

      @Deprecated public static void releaseMandantPlugin(Mandant man, PluginRuntime pluginMeta) throws IOException
      Parameters:
      man - The client scope for which to register a plugin.
      pluginMeta - Runtime of the plugin to release.
      Throws:
      IOException - When the plugin could not be released, such as due to a database error.
    • getMandantPluginJar

      @Deprecated public static File getMandantPluginJar(Mandant man, String jarName) throws IOException
      Parameters:
      man - The client scope for which to register a plugin.
      jarName - Name of the JAR file for which to look for.
      Returns:
      Always null - this method is deprecated!
      Throws:
      IOException - Never thrown.
    • scanForAllPlugins

      @Deprecated public static void scanForAllPlugins()
      Deprecated.
    • scanAndRegisterSystemPlugin

      @Deprecated public static boolean scanAndRegisterSystemPlugin(PluginRuntime pluginMeta, byte[] jarData)
      Deprecated.
      Parameters:
      pluginMeta - Runtime of the plugin to register.
      jarData - Binary content of the JAR file to register.
      Returns:
      Always false - this method is deprecated!
    • scanAndRegisterMandantPlugin

      @Deprecated public static boolean scanAndRegisterMandantPlugin(Mandant man, PluginRuntime pluginMeta, byte[] jarData)
      Parameters:
      man - The client for which to register a plugin.
      pluginMeta - Runtime of the plugin to register.
      jarData - Binary content of the JAR file to register.
      Returns:
      Always false - this method is deprecated!
    • getMandantPlugins

      @Deprecated public static List<PluginRuntime> getMandantPlugins(Mandant man)
      Deprecated.
      Parameters:
      man - The client for which to retrieve a plugin.
      Returns:
      A list of all matching plugins.
    • getPluginNameMap

      @Deprecated public static <T extends IFCPlugin> Map<EPluginScope,Set<String>> getPluginNameMap(Mandant mandant, Class<T> clazz)
      Deprecated.
      Get a map of plugins by client, system and IFCPlugin-interface
      Type Parameters:
      T - Type of the plugins to retrieve.
      Parameters:
      mandant - Mandant
      clazz - IFCPlugin-interface
      Returns:
      Map of plugins
    • initClientPlugin

      @Deprecated public static PluginRuntime initClientPlugin(File pluginJar, Mandant man) throws IOException, FCPluginException
      Deprecated.
      Throws:
      IOException
      FCPluginException
    • initSystemPlugin

      @Deprecated public static PluginRuntime initSystemPlugin(File pluginJar) throws IOException, FCPluginException
      Deprecated.
      Throws:
      IOException
      FCPluginException