## org.codehaus.groovy.grails.plugins
Class DefaultGrailsPluginManager

    java.lang.Object
      org.codehaus.groovy.grails.plugins.AbstractGrailsPluginManager
          org.codehaus.groovy.grails.plugins.DefaultGrailsPluginManager

All Implemented Interfaces:
  GrailsPluginManager, ApplicationContextAware, ServletContextAware

    public class DefaultGrailsPluginManager

extends AbstractGrailsPluginManager
implements GrailsPluginManager

A class that 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 grails.spring.BeanBuilder) to provide runtime configuration of Grails via Spring

The doWithContext closure is called after the Spring ApplicationContext is built and accepts a single argument (the ApplicationContext)

The doWithWebDescriptor uses mark-up building to provide additional functionality to the web.xml file

Example:

     class ClassEditorGrailsPlugin {
          def version = 1.1
          def doWithSpring = { application ->
              classEditor(org.springframework.beans.propertyeditors.ClassEditor, application.classLoader)
          }
     }

A plugin can also define "dependsOn" and "evict" properties that specify what plugins the plugin depends on and which ones it is incompatable with and should evict

Since:
  0.4
Author:
  Graeme Rocher

Field Summary

Fields inherited from class org.codehaus.groovy.grails.plugins.AbstractGrailsPluginManager
`application, applicationContext, classNameToPluginMap, failedPlugins, initialised, loadCorePlugins, pluginClasses, pluginList, pluginResources, plugins`

Fields inherited from interface org.codehaus.groovy.grails.plugins.GrailsPluginManager
`BEAN_NAME`

Constructor Summary
`DefaultGrailsPluginManager(Class[] plugins, GrailsApplication application)`
`DefaultGrailsPluginManager(Resource[] pluginFiles, GrailsApplication application)`
`DefaultGrailsPluginManager(String[] pluginResources, GrailsApplication application)`
`DefaultGrailsPluginManager(String resourcePath, GrailsApplication application)`

Method Summary
`protected boolean` `canRegisterPlugin(GrailsPlugin plugin)`
`void` `checkForChanges()` Checks all the plugins to see whether they have any changes
`void` `doDynamicMethods()` This is called on all plugins so that they can add new methods/properties/constructors etc.
`void` `doWebDescriptor(File descriptor, Writer target)`
`void` `doWebDescriptor(Resource descriptor, Writer target)` Takes the specified web descriptor reference and configures it with all the plugins outputting the result to the target Writer instance
`protected void` `evictPlugin(GrailsPlugin evictor, String evicteeName)`
`(package private) List` `getPluginList()`
`Collection` `getPluginObservers(GrailsPlugin plugin)` Retrieves a collection of plugins that are observing the specified plugin
`ServletContext` `getServletContext()`
`static String` `getWeb23DTD()`
`void` `informObservers(String pluginName, Map event)` inform the specified plugins observers of the event specified by the passsed Map instance
`void` `loadPlugins()` Performs the initial load of plug-ins throwing an exception if any dependencies don't resolve
`void` `refreshPlugin(String name)` Refreshes the specified plugin.
`void` `setApplication(GrailsApplication application)` Sets the GrailsApplication used be this plugin manager
`void` `setApplicationContext(ApplicationContext applicationContext)`
`void` `setParentApplicationContext(ApplicationContext parent)`
`(package private) void` `setPluginFilter(PluginFilter pluginFilter)`
`void` `setServletContext(ServletContext servletContext)`
`void` `startPluginChangeScanner()`
`void` `stopPluginChangeScanner()`

Methods inherited from class org.codehaus.groovy.grails.plugins.AbstractGrailsPluginManager
`checkInitialised, doArtefactConfiguration, doPostProcessing, doRuntimeConfiguration, doRuntimeConfiguration, getAllPlugins, getFailedLoadPlugins, getFailedPlugin, getGrailsPlugin, getGrailsPlugin, getGrailsPluginForClassName, getPluginResources, hasGrailsPlugin, isInitialised, registerProvidedArtefacts, setLoadCorePlugins, shutdown, supportsCurrentBuildScope`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface org.codehaus.groovy.grails.plugins.GrailsPluginManager
`doArtefactConfiguration, doPostProcessing, doRuntimeConfiguration, doRuntimeConfiguration, getAllPlugins, getFailedLoadPlugins, getFailedPlugin, getGrailsPlugin, getGrailsPlugin, getGrailsPluginForClassName, hasGrailsPlugin, isInitialised, registerProvidedArtefacts, setLoadCorePlugins, shutdown, supportsCurrentBuildScope`

Constructor Detail

### DefaultGrailsPluginManager

    public DefaultGrailsPluginManager(String resourcePath,
                                      GrailsApplication application)
                               throws IOException

Throws:
  `IOException`

### DefaultGrailsPluginManager

    public DefaultGrailsPluginManager(String[] pluginResources,
                                      GrailsApplication application)

### DefaultGrailsPluginManager

    public DefaultGrailsPluginManager(Class[] plugins,
                                      GrailsApplication application)
                               throws IOException

Throws:
  `IOException`

### DefaultGrailsPluginManager

    public DefaultGrailsPluginManager(Resource[] pluginFiles,
                                      GrailsApplication application)

Method Detail

### startPluginChangeScanner

    public void startPluginChangeScanner()

### stopPluginChangeScanner

    public void stopPluginChangeScanner()

### refreshPlugin

    public void refreshPlugin(String name)

  Description copied from interface: `GrailsPluginManager`
  Refreshes the specified plugin. A refresh will force to plugin to "touch" each of its watched resources and fire modified events for each

  Specified by:
    `refreshPlugin` in interface `GrailsPluginManager`
  Parameters:
    `name` - The name of the plugin to refresh

### getPluginObservers

    public Collection getPluginObservers(GrailsPlugin plugin)

  Description copied from interface: `GrailsPluginManager`
  Retrieves a collection of plugins that are observing the specified plugin

  Specified by:
    `getPluginObservers` in interface `GrailsPluginManager`
  Parameters:
    `plugin` - The plugin to retrieve observers for
  Returns:
    A collection of observers

### informObservers

    public void informObservers(String pluginName,
                                Map event)

  Description copied from interface: `GrailsPluginManager`
  inform the specified plugins observers of the event specified by the passsed Map instance

  Specified by:
    `informObservers` in interface `GrailsPluginManager`
  Parameters:
    `pluginName` - The name of the plugin
    `event` - The event

### loadPlugins

    public void loadPlugins()
                     throws PluginException

  Description copied from interface: `GrailsPluginManager`
  Performs the initial load of plug-ins throwing an exception if any dependencies don't resolve

  Specified by:
    `loadPlugins` in interface `GrailsPluginManager`
  Throws:
    `PluginException` - Thrown when an error occurs loading the plugins

### canRegisterPlugin

    protected boolean canRegisterPlugin(GrailsPlugin plugin)

### evictPlugin

    protected void evictPlugin(GrailsPlugin evictor,
                               String evicteeName)

### setApplicationContext

    public void setApplicationContext(ApplicationContext applicationContext)
                               throws BeansException

  Specified by:
    `setApplicationContext` in interface `ApplicationContextAware`
  Overrides:
    `setApplicationContext` in class `AbstractGrailsPluginManager`
  Throws:
    `BeansException`

### setParentApplicationContext

    public void setParentApplicationContext(ApplicationContext parent)

### checkForChanges

    public void checkForChanges()

  Description copied from interface: `GrailsPluginManager`
  Checks all the plugins to see whether they have any changes

  Specified by:
    `checkForChanges` in interface `GrailsPluginManager`

### doWebDescriptor

    public void doWebDescriptor(Resource descriptor,
                                Writer target)

  Description copied from interface: `GrailsPluginManager`
  Takes the specified web descriptor reference and configures it with all the plugins outputting the result to the target Writer instance

  Specified by:
    `doWebDescriptor` in interface `GrailsPluginManager`
  Parameters:
    `descriptor` - The Resource of the descriptor
    `target` - The Writer to write the result to

### doWebDescriptor

    public void doWebDescriptor(File descriptor,
                                Writer target)

  Specified by:
    `doWebDescriptor` in interface `GrailsPluginManager`
  Parameters:
    `descriptor` - The File of the descriptor
    `target` - The target to write the changes to
  See Also:
    `GrailsPluginManager.doWebDescriptor(Resource, Writer)`

### setApplication

    public void setApplication(GrailsApplication application)

  Description copied from interface: `GrailsPluginManager`
  Sets the GrailsApplication used be this plugin manager

  Specified by:
    `setApplication` in interface `GrailsPluginManager`
  Overrides:
    `setApplication` in class `AbstractGrailsPluginManager`
  Parameters:
    `application` - The GrailsApplication instance

### doDynamicMethods

    public void doDynamicMethods()

  Description copied from interface: `GrailsPluginManager`
  This is called on all plugins so that they can add new methods/properties/constructors etc.

  Specified by:
    `doDynamicMethods` in interface `GrailsPluginManager`
  Overrides:
    `doDynamicMethods` in class `AbstractGrailsPluginManager`

### setServletContext

    public void setServletContext(ServletContext servletContext)

  Specified by:
    `setServletContext` in interface `ServletContextAware`

### getServletContext

    public ServletContext getServletContext()

### setPluginFilter

    void setPluginFilter(PluginFilter pluginFilter)

### getPluginList

    List getPluginList()

### getWeb23DTD

    public static String getWeb23DTD()

Copyright (c) 2005-2009 The Grails project