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 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(org.springframework.context.ApplicationContext applicationContext)
Performs post initialization configuration for each plug-in, passing
the built application context
|
void |
doRuntimeConfiguration(org.codehaus.groovy.grails.commons.spring.RuntimeSpringConfiguration springConfig)
Executes the runtime configuration phase of plug-ins
|
void |
doRuntimeConfiguration(java.lang.String pluginName,
org.codehaus.groovy.grails.commons.spring.RuntimeSpringConfiguration springConfig)
Executes the runtime configuration for a specific plugin AND all its dependencies
|
void |
doWebDescriptor(java.io.File descriptor,
java.io.Writer target) |
void |
doWebDescriptor(org.springframework.core.io.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<org.springframework.core.type.filter.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() |
boolean |
isShutdown()
Indicates whether the manager has been shutdown or not
|
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 org.codehaus.groovy.grails.plugins.exceptions.PluginException
org.codehaus.groovy.grails.plugins.exceptions.PluginException - Thrown when an error occurs loading the pluginsvoid doRuntimeConfiguration(org.codehaus.groovy.grails.commons.spring.RuntimeSpringConfiguration springConfig)
springConfig - The RuntimeSpringConfiguration instancevoid doPostProcessing(org.springframework.context.ApplicationContext applicationContext)
applicationContext - The ApplicationContext instancevoid doWebDescriptor(org.springframework.core.io.Resource descriptor,
java.io.Writer target)
descriptor - The Resource of the descriptortarget - The Writer to write the result tovoid doWebDescriptor(java.io.File descriptor,
java.io.Writer target)
descriptor - The File of the descriptortarget - The target to write the changes todoWebDescriptor(Resource, Writer)void 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,
org.codehaus.groovy.grails.commons.spring.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()
ArtefactHandlervoid registerProvidedArtefacts(GrailsApplication application)
application - The GrailsApplication objectvoid shutdown()
boolean supportsCurrentBuildScope(java.lang.String pluginName)
pluginName - The name of the pluginBuildScope.getCurrent()void setLoadCorePlugins(boolean shouldLoadCorePlugins)
shouldLoadCorePlugins - True if they shouldvoid informOfClassChange(java.lang.Class<?> aClass)
aClass - The classjava.util.List<org.springframework.core.type.filter.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)
boolean isShutdown()