Groovy Documentation

org.codehaus.groovy.grails.plugins
[Java] Interface GrailsPlugin

org.codehaus.groovy.grails.plugins.GrailsPlugin
  org.codehaus.groovy.grails.plugins.GrailsPluginInfo
      org.springframework.beans.factory.Aware
All Superinterfaces:
GrailsPluginInfo, org.springframework.beans.factory.Aware

@SuppressWarnings("rawtypes")
public interface GrailsPlugin
extends org.springframework.context.ApplicationContextAware, java.lang.Comparable, GrailsPluginInfo

Plugin interface that adds Spring org.springframework.beans.factory.config.BeanDefinitions to a registry based on a GrailsApplication object. After all GrailsPlugin classes have been processed the org.springframework.beans.factory.config.BeanDefinitions in the registry are loaded in a Spring org.springframework.context.ApplicationContext that's the singular configuration unit of Grails applications.

It's up to implementation classes to determine where GrailsPlugin instances are loaded from.

Authors:
Steven Devijver
Graeme Rocher
See Also:
org.springframework.beans.factory.support.BeanDefinitionRegistry
Since:
0.2


Field Summary
java.lang.String ARTEFACTS

Define the list of ArtefactHandlers supporting by the plugin

java.lang.String DEPENDS_ON

Defines the name of the property that specifies which plugins this plugin depends on

java.lang.String DO_WITH_APPLICATION_CONTEXT

Defines the name of the property that defines a closure that will be invoked after intialisation and when the application context has been built

java.lang.String DO_WITH_DYNAMIC_METHODS

java.lang.String DO_WITH_SPRING

Defines the name of the property that defines the closure that will be invoked during runtime spring configuration

java.lang.String DO_WITH_WEB_DESCRIPTOR

Defines the name of the property that defines the closure that will be invoked when the web.xml is being generated

java.lang.String ENVIRONMENTS

The environments to which this plugin applies

int EVENT_ON_CHANGE

int EVENT_ON_CONFIG_CHANGE

int EVENT_ON_SHUTDOWN

java.lang.String EVICT

Defines the name of the property that specifies a List or plugins that this plugin evicts Eviction occurs when the PluginManager loads

java.lang.String OBSERVE

The field that represents the plugin names that this plugin is observing for changes.

java.lang.String ON_CHANGE

Defines the name of the property that defines the closure that will be invoked when a watched resource changes

java.lang.String ON_CONFIG_CHANGE

Defines the name of the property that defines the closure that will be invoked when a the Grails configuration object changes

java.lang.String ON_SHUTDOWN

Defines the name of the property that holds a closure to be invoked when shutdown is called

java.lang.String PLUGINS_PATH

The prefix used in plug-ins paths

java.lang.String PLUGIN_EXCLUDES

The field that represents the list of resources to exclude from plugin packaging

java.lang.String PLUGIN_LOAD_AFTER_NAMES

The name of the property that provides a list of plugins this plugin should after before

java.lang.String PLUGIN_LOAD_BEFORE_NAMES

The name of the property that provides a list of plugins this plugin should load before

java.lang.String PROVIDED_ARTEFACTS

The name of the property that provides a list of shipped, but overridable artefacts

java.lang.String SCOPES

The scopes to which this plugin applies

java.lang.String STATUS

The status of the plugin.

java.lang.String STATUS_DISABLED

When a plugin is "disabled" it will not be loaded

java.lang.String STATUS_ENABLED

When a plugin is "enabled" it will be loaded as usual.

java.lang.String TYPE_FILTERS

The field that represents the list of type filters a plugin provides

java.lang.String WATCHED_RESOURCES

Defines the name of the property that specifies resources which this plugin monitors for changes in the format a Ant-style path

 
Fields inherited from interface GrailsPluginInfo
NAME, TRAILING_NAME, VERSION
 
Method Summary
void addExclude(BuildScope buildScope)

Makes the plugin excluded for a particular BuildScope

void addExclude(Environment env)

Makes the plugin excluded for a particular Environment

boolean checkForChanges()

When called this method checks for any changes to the plug-ins watched resources and reloads appropriately

void doArtefactConfiguration()

Called prior to the initialisation of the GrailsApplication instance to allow the registration of additonal ArtefactHandlers

void doWithApplicationContext(org.springframework.context.ApplicationContext applicationContext)

void doWithDynamicMethods(org.springframework.context.ApplicationContext applicationContext)

Calls a "doWithDynamicMethods" closure that allows a plugin to register dynamic methods at runtime

void doWithRuntimeConfiguration(RuntimeSpringConfiguration springConfig)

Executes the plugin code that performs runtime configuration as defined in the doWithSpring closure

void doWithWebDescriptor(org.w3c.dom.Element webXml)

Handles processing of web.xml.

void doc(java.lang.String text)

Write some documentation to the DocumentationContext

java.lang.String[] getDependencyNames()

@return The names of the plugins this plugin is dependant on

java.lang.String getDependentVersion(java.lang.String name)

The version of the specified dependency

java.lang.String[] getEvictionNames()

@return The names of the plugins this plugin should evict onload

java.lang.String getFileSystemName()

Returns the name of the plugin as represented in the file system including the version.

java.lang.String getFileSystemShortName()

Returns the name of the plugin as represented on the file system without the version.

groovy.lang.GroovyObject getInstance()

Retrieves the wrapped plugin instance for this plugin

java.lang.String[] getLoadAfterNames()

Retrieves the names of plugins that this plugin should be loaded after.

java.lang.String[] getLoadBeforeNames()

Retrieves the names of plugins that this plugin should be loaded before.

GrailsPluginManager getManager()

Retrieves the plugin manager if known, otherwise returns null

java.lang.String[] getObservedPluginNames()

Retrieve the plugin names that this plugin is observing for changes

java.lang.Class getPluginClass()

Returns the underlying class that represents this plugin

java.util.List getPluginExcludes()

A list of resources that the plugin should exclude from the packaged distribution

java.lang.String getPluginPath()

Returns the path of the plug-in

java.lang.Class[] getProvidedArtefacts()

Retrieves an array of provided Artefacts that are pre-compiled additions to the GrailsApplication object but are overridable by the end-user

java.util.Collection getTypeFilters()

Plugin can provide a list of Spring TypeFilters so that annotated components can be scanned into the ApplicationContext

java.util.List getWatchedResourcePatterns()

Resources that this plugin watches

boolean hasInterestInChange(java.lang.String path)

Whether the plugin is interested in a particular change

boolean isBasePlugin()

Returns whether this plugin is loaded from the current plugin.

boolean isEnabled()

@return Whether the plugin is enabled or not

void notifyOfEvent(java.util.Map event)

Notifies this plugin of the specified Event calling the onChange listener

java.util.Map notifyOfEvent(int eventKind, java.lang.Object source)

Notifies the plugin of a specific event for the given event id, which is one of ON_CHANGE, ON_CONFIG_CHANGE

void refresh()

Refreshes this Grails plugin reloading any watched resources as necessary

void setApplication(GrailsApplication application)

void setBasePlugin(boolean isBase)

Sets whether this plugin is the base plugin

void setDescriptor(org.springframework.core.io.Resource descriptor)

Sets the plugin descriptor for this plugin

void setManager(GrailsPluginManager manager)

Sets the plugin manager for this plugin

boolean supportsCurrentScopeAndEnvironment()

@return True if the current plugin supports the current BuildScope and Environment

boolean supportsEnvironment(Environment environment)

Returns whether this plugin supports the given environment name

boolean supportsScope(BuildScope buildScope)

Return whether this plugin supports the given PluginScope

 
Methods inherited from interface GrailsPluginInfo
getDescriptor, getFullName, getName, getPluginDir, getProperties, getVersion
 
Methods inherited from interface java.lang.Comparable
java.lang.Comparable#compareTo(java.lang.Object)
 
Methods inherited from interface org.springframework.context.ApplicationContextAware
org.springframework.context.ApplicationContextAware#setApplicationContext(org.springframework.context.ApplicationContext)
 

Field Detail

ARTEFACTS

public java.lang.String ARTEFACTS
Define the list of ArtefactHandlers supporting by the plugin


DEPENDS_ON

public java.lang.String DEPENDS_ON
Defines the name of the property that specifies which plugins this plugin depends on


DO_WITH_APPLICATION_CONTEXT

public java.lang.String DO_WITH_APPLICATION_CONTEXT
Defines the name of the property that defines a closure that will be invoked after intialisation and when the application context has been built


DO_WITH_DYNAMIC_METHODS

public java.lang.String DO_WITH_DYNAMIC_METHODS


DO_WITH_SPRING

public java.lang.String DO_WITH_SPRING
Defines the name of the property that defines the closure that will be invoked during runtime spring configuration


DO_WITH_WEB_DESCRIPTOR

public java.lang.String DO_WITH_WEB_DESCRIPTOR
Defines the name of the property that defines the closure that will be invoked when the web.xml is being generated


ENVIRONMENTS

public java.lang.String ENVIRONMENTS
The environments to which this plugin applies


EVENT_ON_CHANGE

public int EVENT_ON_CHANGE


EVENT_ON_CONFIG_CHANGE

public int EVENT_ON_CONFIG_CHANGE


EVENT_ON_SHUTDOWN

public int EVENT_ON_SHUTDOWN


EVICT

public java.lang.String EVICT
Defines the name of the property that specifies a List or plugins that this plugin evicts Eviction occurs when the PluginManager loads


OBSERVE

public java.lang.String OBSERVE
The field that represents the plugin names that this plugin is observing for changes.


ON_CHANGE

public java.lang.String ON_CHANGE
Defines the name of the property that defines the closure that will be invoked when a watched resource changes


ON_CONFIG_CHANGE

public java.lang.String ON_CONFIG_CHANGE
Defines the name of the property that defines the closure that will be invoked when a the Grails configuration object changes


ON_SHUTDOWN

public java.lang.String ON_SHUTDOWN
Defines the name of the property that holds a closure to be invoked when shutdown is called


PLUGINS_PATH

public java.lang.String PLUGINS_PATH
The prefix used in plug-ins paths


PLUGIN_EXCLUDES

public java.lang.String PLUGIN_EXCLUDES
The field that represents the list of resources to exclude from plugin packaging


PLUGIN_LOAD_AFTER_NAMES

public java.lang.String PLUGIN_LOAD_AFTER_NAMES
The name of the property that provides a list of plugins this plugin should after before


PLUGIN_LOAD_BEFORE_NAMES

public java.lang.String PLUGIN_LOAD_BEFORE_NAMES
The name of the property that provides a list of plugins this plugin should load before


PROVIDED_ARTEFACTS

public java.lang.String PROVIDED_ARTEFACTS
The name of the property that provides a list of shipped, but overridable artefacts


SCOPES

public java.lang.String SCOPES
The scopes to which this plugin applies


STATUS

public java.lang.String STATUS
The status of the plugin.


STATUS_DISABLED

public java.lang.String STATUS_DISABLED
When a plugin is "disabled" it will not be loaded


STATUS_ENABLED

public java.lang.String STATUS_ENABLED
When a plugin is "enabled" it will be loaded as usual.


TYPE_FILTERS

public java.lang.String TYPE_FILTERS
The field that represents the list of type filters a plugin provides


WATCHED_RESOURCES

public java.lang.String WATCHED_RESOURCES
Defines the name of the property that specifies resources which this plugin monitors for changes in the format a Ant-style path


 
Method Detail

addExclude

public void addExclude(BuildScope buildScope)
Makes the plugin excluded for a particular BuildScope
Parameters:
buildScope - The BuildScope


addExclude

public void addExclude(Environment env)
Makes the plugin excluded for a particular Environment
Parameters:
env - The Environment


checkForChanges

@Deprecated
public boolean checkForChanges()
When called this method checks for any changes to the plug-ins watched resources and reloads appropriately
deprecated:
Plugins themselves no longer check for changes
Returns:
Returns true when the plug-in itself changes in some way, as oppose to plug-in resources


doArtefactConfiguration

public void doArtefactConfiguration()
Called prior to the initialisation of the GrailsApplication instance to allow the registration of additonal ArtefactHandlers
See Also:
ArtefactHandler


doWithApplicationContext

public void doWithApplicationContext(org.springframework.context.ApplicationContext applicationContext)

This method is called to allow the plugin to add org.springframework.beans.factory.config.BeanDefinitions to the org.springframework.beans.factory.support.BeanDefinitionRegistry.

Parameters:
applicationContext - The Spring ApplicationContext instance


doWithDynamicMethods

public void doWithDynamicMethods(org.springframework.context.ApplicationContext applicationContext)
Calls a "doWithDynamicMethods" closure that allows a plugin to register dynamic methods at runtime
Parameters:
applicationContext - The Spring ApplicationContext instance


doWithRuntimeConfiguration

public void doWithRuntimeConfiguration(RuntimeSpringConfiguration springConfig)
Executes the plugin code that performs runtime configuration as defined in the doWithSpring closure
Parameters:
springConfig - The RuntimeSpringConfiguration instance


doWithWebDescriptor

public void doWithWebDescriptor(org.w3c.dom.Element webXml)
Handles processing of web.xml. The method is passed a GPathResult which is parsed by groovy.util.XmlSlurper. A plug-in can then manipulate the in-memory XML however it chooses Once all plug-ins have been processed the web.xml is then written to disk based on its in-memory form
Parameters:
webXml - The GPathResult representing web.xml


doc

public void doc(java.lang.String text)
Write some documentation to the DocumentationContext


getDependencyNames

public java.lang.String[] getDependencyNames()
Returns:
The names of the plugins this plugin is dependant on


getDependentVersion

public java.lang.String getDependentVersion(java.lang.String name)
The version of the specified dependency
Parameters:
name - the name of the dependency
Returns:
The version


getEvictionNames

public java.lang.String[] getEvictionNames()
Returns:
The names of the plugins this plugin should evict onload


getFileSystemName

public java.lang.String getFileSystemName()
Returns the name of the plugin as represented in the file system including the version. For example TagLibGrailsPlugin would result in "tag-lib-0.1"
Returns:
The file system representation of the plugin name


getFileSystemShortName

public java.lang.String getFileSystemShortName()
Returns the name of the plugin as represented on the file system without the version. For example TagLibGrailsPlugin would result in "tag-lib"
Returns:
The file system name


getInstance

public groovy.lang.GroovyObject getInstance()
Retrieves the wrapped plugin instance for this plugin
Returns:
The plugin instance


getLoadAfterNames

public java.lang.String[] getLoadAfterNames()
Retrieves the names of plugins that this plugin should be loaded after. This differs from dependencies in that if that plugin doesn't exist this plugin will still be loaded. It is a way of enforcing plugins are loaded before, but not necessarily needed
Returns:
The names of the plugins that this plugin should be loaded after


getLoadBeforeNames

public java.lang.String[] getLoadBeforeNames()
Retrieves the names of plugins that this plugin should be loaded before. As with getLoadAfterNames() it is not a requirement that the specified plugins exist
Returns:
The names of the plugins that this plugin should load before


getManager

public GrailsPluginManager getManager()
Retrieves the plugin manager if known, otherwise returns null
Returns:
The PluginManager or null


getObservedPluginNames

public java.lang.String[] getObservedPluginNames()
Retrieve the plugin names that this plugin is observing for changes
Returns:
The names of the observed plugins


getPluginClass

public java.lang.Class getPluginClass()
Returns the underlying class that represents this plugin
Returns:
The plugin class


getPluginExcludes

public java.util.List getPluginExcludes()
A list of resources that the plugin should exclude from the packaged distribution
Returns:
a List of resources


getPluginPath

public java.lang.String getPluginPath()
Returns the path of the plug-in
Returns:
A String that makes up the path to the plug-in in the format /plugins/PLUGIN_NAME-PLUGIN_VERSION


getProvidedArtefacts

public java.lang.Class[] getProvidedArtefacts()
Retrieves an array of provided Artefacts that are pre-compiled additions to the GrailsApplication object but are overridable by the end-user
Returns:
A list of provided artefacts


getTypeFilters

public java.util.Collection getTypeFilters()
Plugin can provide a list of Spring TypeFilters so that annotated components can be scanned into the ApplicationContext
Returns:
A collection of TypeFilter instance


getWatchedResourcePatterns

public java.util.List getWatchedResourcePatterns()
Resources that this plugin watches
Returns:
The watch resource patterns


hasInterestInChange

public boolean hasInterestInChange(java.lang.String path)
Whether the plugin is interested in a particular change
Parameters:
path - The path to the resource that changed
Returns:
True if it is


isBasePlugin

public boolean isBasePlugin()
Returns whether this plugin is loaded from the current plugin. In other words when you execute grails run-app from a plugin project the plugin project's *GrailsPlugin.groovy file represents the base plugin and this method will return true for this plugin
Returns:
True if it is the base plugin


isEnabled

public boolean isEnabled()
Returns:
Whether the plugin is enabled or not


notifyOfEvent

public void notifyOfEvent(java.util.Map event)
Notifies this plugin of the specified Event calling the onChange listener
Parameters:
event - The event to listen for


notifyOfEvent

public java.util.Map notifyOfEvent(int eventKind, java.lang.Object source)
Notifies the plugin of a specific event for the given event id, which is one of ON_CHANGE, ON_CONFIG_CHANGE
Parameters:
eventKind - The event kind
source - The source of the event
Returns:
a Map that represents the event


refresh

public void refresh()
Refreshes this Grails plugin reloading any watched resources as necessary


setApplication

public void setApplication(GrailsApplication application)


setBasePlugin

public void setBasePlugin(boolean isBase)
Sets whether this plugin is the base plugin
Parameters:
isBase - True if is
See Also:
isBasePlugin()


setDescriptor

public void setDescriptor(org.springframework.core.io.Resource descriptor)
Sets the plugin descriptor for this plugin
Parameters:
descriptor - The descriptor


setManager

public void setManager(GrailsPluginManager manager)
Sets the plugin manager for this plugin
Parameters:
manager - A GrailsPluginManager instance


supportsCurrentScopeAndEnvironment

public boolean supportsCurrentScopeAndEnvironment()
Returns:
True if the current plugin supports the current BuildScope and Environment


supportsEnvironment

public boolean supportsEnvironment(Environment environment)
Returns whether this plugin supports the given environment name
Parameters:
environment - The environment name
Returns:
True if it does


supportsScope

public boolean supportsScope(BuildScope buildScope)
Return whether this plugin supports the given PluginScope
Parameters:
buildScope - The PluginScope
Returns:
True if it does


 

Groovy Documentation