Package: grails.plugins

## [Java] Interface GrailsPluginManager

-     public interface GrailsPluginManager
      extends org.springframework.context.ApplicationContextAware

  Handles the loading and management of plug-ins in the Grails system. A plugin a just like a normal Grails application except that it contains a file ending in *Plugin.groovy in the root of the directory.

  A Plugin class is a Groovy class that has a version and optionally closures called doWithSpring, doWithContext and doWithWebDescriptor

  The doWithSpring closure uses the BeanBuilder syntax (

  See Also:
    BeanBuilder<p<p<p<pre>>>>
  Authors:
    Graeme Rocher
  Since:
    0.4

- - ### Field Summary

    Fields
    Modifiers | Name | Description
    --- | --- | ---
    `java.lang.String` | `BEAN_NAME` |

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `public void` | `checkForChanges()` Checks all the plugins to see whether they have any changes
    `` | `public void` | `doArtefactConfiguration()` Called prior to the initialisation of the GrailsApplication object to allow registration of additional ArtefactHandler objects
    `` | `public void` | `doDynamicMethods()` Called on all plugins so that they can add new methods/properties/constructors etc.
    `` | `public void` | `doPostProcessing(org.springframework.context.ApplicationContext applicationContext)` Performs post initialization configuration for each plug-in, passing the built application context
    `` | `public void` | `doRuntimeConfiguration(RuntimeSpringConfiguration springConfig)` Executes the runtime configuration phase of plug-ins
    `` | `public void` | `doRuntimeConfiguration(java.lang.String pluginName, RuntimeSpringConfiguration springConfig)` Executes the runtime configuration for a specific plugin AND all its dependencies
    `` | `public GrailsPlugin[]` | `getAllPlugins()` Returns an array of all the loaded plug-ins
    `` | `public GrailsPlugin[]` | `getFailedLoadPlugins()` Returns: An array of plugins that failed to load due to dependency resolution errors
    `` | `public GrailsPlugin` | `getFailedPlugin(java.lang.String name)` Retrieves a plug-in that failed to load, or null if it doesn't exist
    `` | `public GrailsPlugin` | `getGrailsPlugin(java.lang.String name)` Retrieves a name Grails plugin instance
    `` | `public GrailsPlugin` | `getGrailsPlugin(java.lang.String name, java.lang.Object version)` Retrieves a plug-in for its name and version
    `` | `public GrailsPlugin` | `getGrailsPluginForClassName(java.lang.String name)` Obtains a GrailsPlugin for the given classname
    `` | `public GrailsPlugin` | `getPluginForClass(java.lang.Class<?> theClass)` Obtains the GrailsPlugin for the given class
    `` | `public GrailsPlugin` | `getPluginForInstance(java.lang.Object instance)` Looks up the plugin that defined the given instance.
    `` | `public java.util.Collection` | `getPluginObservers(GrailsPlugin plugin)` Retrieves a collection of plugins that are observing the specified plugin
    `` | `public java.lang.String` | `getPluginPath(java.lang.String name)` Returns the pluginContextPath for the given plugin
    `` | `public java.lang.String` | `getPluginPath(java.lang.String name, boolean forceCamelCase)` Returns the pluginContextPath for the given plugin and will force name to camel case instead of '-' lower case
    `` | `public java.lang.String` | `getPluginPathForClass(java.lang.Class<? extends java.lang.Object> theClass)` Returns the plugin path for the given class
    `` | `public java.lang.String` | `getPluginPathForInstance(java.lang.Object instance)` Returns the pluginContextPath for the given instance
    `` | `public java.lang.String` | `getPluginViewsPathForClass(java.lang.Class<? extends java.lang.Object> theClass)` Returns the plugin views directory path for the given class
    `` | `public java.lang.String` | `getPluginViewsPathForInstance(java.lang.Object instance)` Returns the plugin views directory for the given instance
    `` | `public java.util.List<org.springframework.core.type.filter.TypeFilter>` | `getTypeFilters()` Get all of the TypeFilter definitions defined by the plugins
    `` | `public GrailsPlugin[]` | `getUserPlugins()` Gets plugin installed by the user and not provided by the framework
    `` | `public boolean` | `hasGrailsPlugin(java.lang.String name)` Parameters: `name` - The name of the plugin
    `` | `public void` | `informObservers(java.lang.String pluginName, java.util.Map event)` inform the specified plugins observers of the event specified by the passed Map instance
    `` | `public void` | `informOfClassChange(java.lang.Class<?> aClass)` Method for handling changes to a class and triggering on change events etc.
    `` | `public void` | `informOfClassChange(java.io.File file, java.lang.Class cls)`
    `` | `public void` | `informOfFileChange(java.io.File file)` Fire to inform the PluginManager that a particular file changes
    `` | `public void` | `informPluginsOfConfigChange()` Inform of a change in configuration
    `` | `public boolean` | `isInitialised()` Returns: the initialised
    `` | `public boolean` | `isShutdown()` Indicates whether the manager has been shutdown or not
    `` | `public void` | `loadPlugins()` Performs the initial load of plug-ins throwing an exception if any dependencies don't resolve
    `` | `public void` | `onStartup(java.util.Map<java.lang.String, java.lang.Object> event)` Executes the Plugin.onStartup hook for all plugins
    `` | `public void` | `refreshPlugin(java.lang.String name)` Refreshes the specified plugin.
    `` | `public void` | `registerProvidedArtefacts(GrailsApplication application)` Registers pre-compiled artefacts with the GrailsApplication instance, only overriding if the application doesn't already provide an artefact of the same name.
    `` | `public void` | `setApplication(GrailsApplication application)` Sets the GrailsApplication used be this plugin manager
    `` | `public void` | `setLoadCorePlugins(boolean shouldLoadCorePlugins)` Set whether the core plugins should be loaded
    `` | `public void` | `setPluginFilter(PluginFilter pluginFilter)` Sets the filter to use to filter for plugins
    `` | `public void` | `shutdown()` Shuts down the PluginManager

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `interface org.springframework.context.ApplicationContextAware` | `org.springframework.context.ApplicationContextAware#setApplicationContext(org.springframework.context.ApplicationContext)`

- - ### Field Detail

    - #### java.lang.String BEAN_NAME

  - ### Method Detail

    - #### @java.lang.Deprecated public void checkForChanges()

      Checks all the plugins to see whether they have any changes

    - #### public void doArtefactConfiguration()

      Called prior to the initialisation of the GrailsApplication object to allow registration of additional ArtefactHandler objects

      See Also:
        ArtefactHandler

    - #### public void doDynamicMethods()

      Called on all plugins so that they can add new methods/properties/constructors etc.

    - #### public void doPostProcessing(org.springframework.context.ApplicationContext applicationContext)

      Performs post initialization configuration for each plug-in, passing the built application context

      Parameters:
        `applicationContext` - The ApplicationContext instance

    - #### public void doRuntimeConfiguration(RuntimeSpringConfiguration springConfig)

      Executes the runtime configuration phase of plug-ins

      Parameters:
        `springConfig` - The RuntimeSpringConfiguration instance

    - #### public void doRuntimeConfiguration(java.lang.String pluginName, RuntimeSpringConfiguration springConfig)

      Executes the runtime configuration for a specific plugin AND all its dependencies

      Parameters:
        `pluginName` - The name of he plugin
        `springConfig` - The runtime spring config instance

    - #### public GrailsPlugin[] getAllPlugins()

      Returns an array of all the loaded plug-ins

      Returns:
        An array of plug-ins

    - #### public GrailsPlugin[] getFailedLoadPlugins()

      Returns:
        An array of plugins that failed to load due to dependency resolution errors

    - #### public GrailsPlugin getFailedPlugin(java.lang.String name)

      Retrieves a plug-in that failed to load, or null if it doesn't exist

      Parameters:
        `name` - The name of the plugin
      Returns:
        A GrailsPlugin or null

    - #### public GrailsPlugin getGrailsPlugin(java.lang.String name)

      Retrieves a name Grails plugin instance

      Parameters:
        `name` - The name of the plugin
      Returns:
        The GrailsPlugin instance or null if it doesn't exist

    - #### public GrailsPlugin getGrailsPlugin(java.lang.String name, java.lang.Object version)

      Retrieves a plug-in for its name and version

      Parameters:
        `name` - The name of the plugin
        `version` - The version of the plugin
      Returns:
        The GrailsPlugin instance or null if it doesn't exist

    - #### public GrailsPlugin getGrailsPluginForClassName(java.lang.String name)

      Obtains a GrailsPlugin for the given classname

      Parameters:
        `name` - The name of the plugin
      Returns:
        The instance

    - #### public GrailsPlugin getPluginForClass(java.lang.Class<?> theClass)

      Obtains the GrailsPlugin for the given class

      Parameters:
        `theClass` - The class
      Returns:
        The GrailsPlugin for the given class or null if not related to any plugin

    - #### public GrailsPlugin getPluginForInstance(java.lang.Object instance)

      Looks up the plugin that defined the given instance. If no plugin defined the instance then null is returned.

      Parameters:
        `instance` - The instance
      Returns:
        The plugin that defined the instance or null

    - #### @java.lang.SuppressWarnings("rawtypes") public java.util.Collection getPluginObservers(GrailsPlugin plugin)

      Retrieves a collection of plugins that are observing the specified plugin

      Parameters:
        `plugin` - The plugin to retrieve observers for
      Returns:
        A collection of observers

    - #### public java.lang.String getPluginPath(java.lang.String name)

      Returns the pluginContextPath for the given plugin

      Parameters:
        `name` - The plugin name
      Returns:
        the context path

    - #### public java.lang.String getPluginPath(java.lang.String name, boolean forceCamelCase)

      Returns the pluginContextPath for the given plugin and will force name to camel case instead of '-' lower case my-plug-web would resolve to myPlugWeb if forceCamelCase is true.

      Parameters:
        `name` - The plugin name
        `forceCamelCase` - Force camel case for name
      Returns:
        the context path

    - #### public java.lang.String getPluginPathForClass(java.lang.Class<? extends java.lang.Object> theClass)

      Returns the plugin path for the given class

      Parameters:
        `theClass` - The class
      Returns:
        The pluginContextPath

    - #### public java.lang.String getPluginPathForInstance(java.lang.Object instance)

      Returns the pluginContextPath for the given instance

      Parameters:
        `instance` - The instance
      Returns:
        The pluginContextPath

    - #### public java.lang.String getPluginViewsPathForClass(java.lang.Class<? extends java.lang.Object> theClass)

      Returns the plugin views directory path for the given class

      Parameters:
        `theClass` - The class
      Returns:
        The pluginContextPath

    - #### public java.lang.String getPluginViewsPathForInstance(java.lang.Object instance)

      Returns the plugin views directory for the given instance

      Parameters:
        `instance` - The instance
      Returns:
        The pluginContextPath

    - #### public java.util.List<org.springframework.core.type.filter.TypeFilter> getTypeFilters()

      Get all of the TypeFilter definitions defined by the plugins

      Returns:
        A list of TypeFilter definitions

    - #### public GrailsPlugin[] getUserPlugins()

      Gets plugin installed by the user and not provided by the framework

      Returns:
        A list of user plugins

    - #### public boolean hasGrailsPlugin(java.lang.String name)

      Parameters:
        `name` - The name of the plugin
      Returns:
        true if the the manager has a loaded plugin with the given name

    - #### @java.lang.SuppressWarnings("rawtypes") public void informObservers(java.lang.String pluginName, java.util.Map event)

      inform the specified plugins observers of the event specified by the passed Map instance

      Parameters:
        `pluginName` - The name of the plugin
        `event` - The event

    - #### public void informOfClassChange(java.lang.Class<?> aClass)

      Method for handling changes to a class and triggering on change events etc.

      Parameters:
        `aClass` - The class

    - #### public void informOfClassChange(java.io.File file, @java.lang.SuppressWarnings("rawtypes") java.lang.Class cls)

    - #### public void informOfFileChange(java.io.File file)

      Fire to inform the PluginManager that a particular file changes

      Parameters:
        `file` - The file that changed
      Since:
        2.0

    - #### public void informPluginsOfConfigChange()

      Inform of a change in configuration

    - #### public boolean isInitialised()

      Returns:
        the initialised

    - #### public boolean isShutdown()

      Indicates whether the manager has been shutdown or not

      Returns:
        True if it was shutdown

    - #### public void loadPlugins()

      Performs the initial load of plug-ins throwing an exception if any dependencies don't resolve

      throws:
        PluginException Thrown when an error occurs loading the plugins

    - #### public void onStartup(java.util.Map<java.lang.String, java.lang.Object> event)

      Executes the Plugin.onStartup hook for all plugins

      Parameters:
        `event` - the Event

    - #### public void refreshPlugin(java.lang.String name)

      Refreshes the specified plugin. A refresh will force to plugin to "touch" each of its watched resources and fire modified events for each

      Parameters:
        `name` - The name of the plugin to refresh

    - #### public void registerProvidedArtefacts(GrailsApplication application)

      Registers pre-compiled artefacts with the GrailsApplication instance, only overriding if the application doesn't already provide an artefact of the same name.

      Parameters:
        `application` - The GrailsApplication object

    - #### public void setApplication(GrailsApplication application)

      Sets the GrailsApplication used be this plugin manager

      Parameters:
        `application` - The GrailsApplication instance

    - #### public void setLoadCorePlugins(boolean shouldLoadCorePlugins)

      Set whether the core plugins should be loaded

      Parameters:
        `shouldLoadCorePlugins` - True if they should

    - #### public void setPluginFilter(PluginFilter pluginFilter)

      Sets the filter to use to filter for plugins

      Parameters:
        `pluginFilter` - The plugin filter

    - #### public void shutdown()

      Shuts down the PluginManager