public interface GrailsPluginManager
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
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
BEAN_NAME |
Modifier and Type | Method and Description |
---|---|
void |
checkForChanges()
Checks all the plugins to see whether they have any changes
|
void |
doArtefactConfiguration()
Called prior to the initialisation of the GrailsApplication object to allow registration of additional ArtefactHandler objects
|
void |
doDynamicMethods()
Called on all plugins so that they can add new methods/properties/constructors etc.
|
void |
doPostProcessing(ApplicationContext applicationContext)
Performs post initialization configuration for each plug-in, passing
the built application context
|
void |
doRuntimeConfiguration(RuntimeSpringConfiguration springConfig)
Executes the runtime configuration phase of plug-ins
|
void |
doRuntimeConfiguration(java.lang.String pluginName,
RuntimeSpringConfiguration springConfig)
Executes the runtime configuration for a specific plugin AND all its dependencies
|
void |
doWebDescriptor(Resource descriptor,
java.io.Writer target)
Takes the specified web descriptor reference and configures it with all the plugins outputting
the result to the target Writer instance
|
GrailsPlugin[] |
getAllPlugins()
Returns an array of all the loaded plug-ins
|
GrailsPlugin[] |
getFailedLoadPlugins() |
GrailsPlugin |
getFailedPlugin(java.lang.String name)
Retrieves a plug-in that failed to load, or null if it doesn't exist
|
GrailsPlugin |
getGrailsPlugin(java.lang.String name)
Retrieves a name Grails plugin instance
|
GrailsPlugin |
getGrailsPlugin(java.lang.String name,
java.lang.Object version)
Retrieves a plug-in for its name and version
|
GrailsPlugin |
getGrailsPluginForClassName(java.lang.String name)
Obtains a GrailsPlugin for the given classname
|
GrailsPlugin |
getPluginForClass(java.lang.Class<?> theClass)
Obtains the GrailsPlugin for the given class
|
GrailsPlugin |
getPluginForInstance(java.lang.Object instance)
Looks up the plugin that defined the given instance.
|
java.util.Collection |
getPluginObservers(GrailsPlugin plugin)
Retrieves a collection of plugins that are observing the specified plugin
|
java.lang.String |
getPluginPath(java.lang.String name)
Returns the pluginContextPath for the given plugin
|
java.lang.String |
getPluginPathForClass(java.lang.Class<? extends java.lang.Object> theClass)
Returns the plugin path for the given class
|
java.lang.String |
getPluginPathForInstance(java.lang.Object instance)
Returns the pluginContextPath for the given instance
|
java.lang.String |
getPluginViewsPathForClass(java.lang.Class<? extends java.lang.Object> theClass)
Returns the plugin views directory path for the given class
|
java.lang.String |
getPluginViewsPathForInstance(java.lang.Object instance)
Returns the plugin views directory for the given instance
|
java.util.List<TypeFilter> |
getTypeFilters()
Get all of the TypeFilter definitions defined by the plugins
|
GrailsPlugin[] |
getUserPlugins()
Gets plugin installed by the user and not provided by the framework
|
boolean |
hasGrailsPlugin(java.lang.String name) |
void |
informObservers(java.lang.String pluginName,
java.util.Map event)
inform the specified plugins observers of the event specified by the passed Map instance
|
void |
informOfClassChange(java.lang.Class<?> aClass)
Method for handling changes to a class and triggering on change events etc.
|
void |
informOfClassChange(java.io.File file,
java.lang.Class cls) |
void |
informOfFileChange(java.io.File file)
Fire to inform the PluginManager that a particular file changes
|
boolean |
isInitialised() |
void |
loadPlugins()
Performs the initial load of plug-ins throwing an exception if any dependencies
don't resolve
|
void |
refreshPlugin(java.lang.String name)
Refreshes the specified plugin.
|
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.
|
void |
setApplication(GrailsApplication application)
Sets the GrailsApplication used be this plugin manager
|
void |
setLoadCorePlugins(boolean shouldLoadCorePlugins)
Set whether the core plugins should be loaded
|
void |
shutdown()
Shuts down the PluginManager
|
boolean |
supportsCurrentBuildScope(java.lang.String pluginName)
Returns true if the given plugin supports the current BuildScope
|
static final java.lang.String BEAN_NAME
GrailsPlugin[] getAllPlugins()
GrailsPlugin[] getUserPlugins()
GrailsPlugin[] getFailedLoadPlugins()
void loadPlugins() throws PluginException
PluginException
- Thrown when an error occurs loading the pluginsvoid doRuntimeConfiguration(RuntimeSpringConfiguration springConfig)
springConfig
- The RuntimeSpringConfiguration instancevoid doPostProcessing(ApplicationContext applicationContext)
applicationContext
- The ApplicationContext instancevoid doWebDescriptor(Resource descriptor, java.io.Writer target)
descriptor
- The Resource of the descriptortarget
- The Writer to write the result tovoid doDynamicMethods()
GrailsPlugin getGrailsPlugin(java.lang.String name)
name
- The name of the pluginGrailsPlugin getGrailsPluginForClassName(java.lang.String name)
name
- The name of the pluginboolean hasGrailsPlugin(java.lang.String name)
name
- The name of the pluginGrailsPlugin getFailedPlugin(java.lang.String name)
name
- The name of the pluginGrailsPlugin getGrailsPlugin(java.lang.String name, java.lang.Object version)
name
- The name of the pluginversion
- The version of the pluginvoid doRuntimeConfiguration(java.lang.String pluginName, RuntimeSpringConfiguration springConfig)
pluginName
- The name of he pluginspringConfig
- The runtime spring config instancevoid checkForChanges()
void setApplication(GrailsApplication application)
application
- The GrailsApplication instanceboolean isInitialised()
void refreshPlugin(java.lang.String name)
name
- The name of the plugin to refreshjava.util.Collection getPluginObservers(GrailsPlugin plugin)
plugin
- The plugin to retrieve observers forvoid informObservers(java.lang.String pluginName, java.util.Map event)
pluginName
- The name of the pluginevent
- The eventvoid doArtefactConfiguration()
ArtefactHandler
void registerProvidedArtefacts(GrailsApplication application)
application
- The GrailsApplication objectvoid shutdown()
boolean supportsCurrentBuildScope(java.lang.String pluginName)
pluginName
- The name of the plugingrails.util.BuildScope#getCurrent()
void setLoadCorePlugins(boolean shouldLoadCorePlugins)
shouldLoadCorePlugins
- True if they shouldvoid informOfClassChange(java.lang.Class<?> aClass)
aClass
- The classjava.util.List<TypeFilter> getTypeFilters()
java.lang.String getPluginPath(java.lang.String name)
name
- The plugin nameGrailsPlugin getPluginForInstance(java.lang.Object instance)
instance
- The instancejava.lang.String getPluginPathForInstance(java.lang.Object instance)
instance
- The instancejava.lang.String getPluginPathForClass(java.lang.Class<? extends java.lang.Object> theClass)
theClass
- The classjava.lang.String getPluginViewsPathForInstance(java.lang.Object instance)
instance
- The instancejava.lang.String getPluginViewsPathForClass(java.lang.Class<? extends java.lang.Object> theClass)
theClass
- The classGrailsPlugin getPluginForClass(java.lang.Class<?> theClass)
theClass
- The classvoid informOfFileChange(java.io.File file)
file
- The file that changedvoid informOfClassChange(java.io.File file, java.lang.Class cls)