org.codehaus.groovy.grails.plugins
Class DefaultGrailsPlugin

java.lang.Object
  extended by groovy.lang.GroovyObjectSupport
      extended by org.codehaus.groovy.grails.plugins.AbstractGrailsPlugin
          extended by org.codehaus.groovy.grails.plugins.DefaultGrailsPlugin
All Implemented Interfaces:
groovy.lang.GroovyObject, Comparable, GrailsPlugin, ParentApplicationContextAware, ApplicationContextAware

public class DefaultGrailsPlugin
extends AbstractGrailsPlugin
implements GrailsPlugin, ParentApplicationContextAware

Implementation of the GrailsPlugin interface that wraps a Groovy plugin class and provides the magic to invoke its various methods from Java

Since:
0.4
Author:
Graeme Rocher

Nested Class Summary
 
Nested classes/interfaces inherited from class org.codehaus.groovy.grails.plugins.AbstractGrailsPlugin
AbstractGrailsPlugin.GrailsPluginClass
 
Field Summary
protected  BeanWrapper pluginBean
           
 
Fields inherited from class org.codehaus.groovy.grails.plugins.AbstractGrailsPlugin
application, applicationContext, dependencies, dependencyNames, evictionList, isBase, manager, pluginClass, version
 
Fields inherited from interface org.codehaus.groovy.grails.plugins.GrailsPlugin
ARTEFACTS, DEPENDS_ON, DO_WITH_APPLICATION_CONTEXT, DO_WITH_DYNAMIC_METHODS, DO_WITH_SPRING, DO_WITH_WEB_DESCRIPTOR, ENVIRONMENTS, EVENT_ON_CHANGE, EVENT_ON_CONFIG_CHANGE, EVENT_ON_SHUTDOWN, EVICT, INFLUENCES, NAME, ON_CHANGE, ON_CONFIG_CHANGE, ON_SHUTDOWN, PLUGIN_EXCLUDES, PLUGIN_LOAD_AFTER_NAMES, PLUGIN_LOAD_BEFORE_NAMES, PLUGINS_PATH, PROVIDED_ARTEFACTS, SCOPES, STATUS, STATUS_DISABLED, STATUS_ENABLED, TRAILING_NAME, TYPE_FILTERS, VERSION, WATCHED_RESOURCES
 
Constructor Summary
DefaultGrailsPlugin(Class pluginClass, GrailsApplication application)
           
DefaultGrailsPlugin(Class pluginClass, Resource resource, GrailsApplication application)
           
 
Method Summary
 BeanBuilder beans(groovy.lang.Closure closure)
           
 boolean checkForChanges()
          Monitors the plugin resources defined in the watchResources property for changes and fires onChange events by calling an onChange closure defined in the plugin (if it exists)
 void doArtefactConfiguration()
          Called prior to the initialisation of the GrailsApplication instance to allow the registration of additonal ArtefactHandlers
 void doc(String text)
          Write some documentation to the DocumentationContext
 void doWithApplicationContext(ApplicationContext applicationContext)
          This method is called to allow the plugin to add BeanDefinitions to the BeanDefinitionRegistry.
 void doWithDynamicMethods(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(groovy.util.slurpersupport.GPathResult webXml)
          Handles processing of web.xml.
protected  void fireModifiedEvent(Resource resource, GrailsPlugin plugin)
           
 String[] getDependencyNames()
           
 String getDependentVersion(String name)
          The version of the specified dependency
 groovy.lang.GroovyObject getInstance()
          Retrieves the wrapped plugin instance for this plugin
 String[] getLoadAfterNames()
          Retrieves the names of plugins that this plugin should be loaded after.
 String[] getLoadBeforeNames()
          Retrieves the names of plugins that this plugin should be loaded before.
 org.apache.commons.logging.Log getLog()
           
 String getName()
           
 String[] getObservedPluginNames()
          Retrieve the plugin names that this plugin is observing for changes
 ApplicationContext getParentCtx()
           
 GrailsPlugin getPlugin()
           
 List<String> getPluginExcludes()
          A list of resources that the plugin should exclude from the packaged distribution
 Class[] getProvidedArtefacts()
          Retrieves an array of provided Artefacts that are pre-compiled additions to the GrailsApplication object but are overridable by the end-user
 PathMatchingResourcePatternResolver getResolver()
           
 Collection<? extends TypeFilter> getTypeFilters()
          Plugin can provide a list of Spring TypeFilters so that annotated components can be scanned into the ApplicationContext
 String getVersion()
           
 Resource[] getWatchedResources()
           
 boolean isEnabled()
           
 Map notifyOfEvent(int eventKind, Object source)
          Notifies the plugin of a specific event for the given event id, which is one of ON_CHANGE, ON_CONFIG_CHANGE
 void notifyOfEvent(Map event)
          Notifies this plugin of the specified Event calling the onChange listener
 void refresh()
          Refreshes this Grails plugin reloading any watched resources as necessary
 void refresh(boolean fireEvent)
           
 void restartContainer()
           
 void setParentApplicationContext(ApplicationContext parent)
           
 void setWatchedResources(Resource[] watchedResources)
           
 boolean supportsCurrentScopeAndEnvironment()
           
 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
 String toString()
           
 
Methods inherited from class org.codehaus.groovy.grails.plugins.AbstractGrailsPlugin
compareTo, equals, getEvictionNames, getFileSystemName, getFileSystemShortName, getManager, getPluginClass, getPluginPath, hashCode, isBasePlugin, setApplication, setApplicationContext, setBasePlugin, setManager
 
Methods inherited from class groovy.lang.GroovyObjectSupport
getMetaClass, getProperty, invokeMethod, setMetaClass, setProperty
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.codehaus.groovy.grails.plugins.GrailsPlugin
getEvictionNames, getFileSystemName, getFileSystemShortName, getManager, getPluginClass, getPluginPath, isBasePlugin, setApplication, setBasePlugin, setManager
 
Methods inherited from interface org.springframework.context.ApplicationContextAware
setApplicationContext
 
Methods inherited from interface java.lang.Comparable
compareTo
 

Field Detail

pluginBean

protected BeanWrapper pluginBean
Constructor Detail

DefaultGrailsPlugin

public DefaultGrailsPlugin(Class pluginClass,
                           Resource resource,
                           GrailsApplication application)

DefaultGrailsPlugin

public DefaultGrailsPlugin(Class pluginClass,
                           GrailsApplication application)
Method Detail

getLoadAfterNames

public String[] getLoadAfterNames()
Description copied from interface: GrailsPlugin
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

Specified by:
getLoadAfterNames in interface GrailsPlugin
Overrides:
getLoadAfterNames in class AbstractGrailsPlugin
Returns:
The names of the plugins that this plugin should be loaded after

getLoadBeforeNames

public String[] getLoadBeforeNames()
Description copied from interface: GrailsPlugin
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

Specified by:
getLoadBeforeNames in interface GrailsPlugin
Overrides:
getLoadBeforeNames in class AbstractGrailsPlugin
Returns:
The names of the plugins that this plugin should load before

getResolver

public PathMatchingResourcePatternResolver getResolver()
Returns:
the resolver

getParentCtx

public ApplicationContext getParentCtx()

beans

public BeanBuilder beans(groovy.lang.Closure closure)

doWithApplicationContext

public void doWithApplicationContext(ApplicationContext applicationContext)
Description copied from interface: GrailsPlugin

This method is called to allow the plugin to add BeanDefinitions to the BeanDefinitionRegistry.

Specified by:
doWithApplicationContext in interface GrailsPlugin
Specified by:
doWithApplicationContext in class AbstractGrailsPlugin
Parameters:
applicationContext - The Spring ApplicationContext instance

doWithRuntimeConfiguration

public void doWithRuntimeConfiguration(RuntimeSpringConfiguration springConfig)
Description copied from interface: GrailsPlugin
Executes the plugin code that performs runtime configuration as defined in the doWithSpring closure

Specified by:
doWithRuntimeConfiguration in interface GrailsPlugin
Specified by:
doWithRuntimeConfiguration in class AbstractGrailsPlugin
Parameters:
springConfig - The RuntimeSpringConfiguration instance

getName

public String getName()
Specified by:
getName in interface GrailsPlugin
Overrides:
getName in class AbstractGrailsPlugin
Returns:
The name of the plug-in

supportsScope

public boolean supportsScope(BuildScope buildScope)
Description copied from interface: GrailsPlugin
Return whether this plugin supports the given PluginScope

Specified by:
supportsScope in interface GrailsPlugin
Parameters:
buildScope - The PluginScope
Returns:
True if it does

supportsEnvironment

public boolean supportsEnvironment(Environment environment)
Description copied from interface: GrailsPlugin
Returns whether this plugin supports the given environment name

Specified by:
supportsEnvironment in interface GrailsPlugin
Parameters:
environment - The environment name
Returns:
True if it does

supportsCurrentScopeAndEnvironment

public boolean supportsCurrentScopeAndEnvironment()
Specified by:
supportsCurrentScopeAndEnvironment in interface GrailsPlugin
Returns:
True if the current plugin supports the current BuildScope and Environment

getVersion

public String getVersion()
Specified by:
getVersion in interface GrailsPlugin
Overrides:
getVersion in class AbstractGrailsPlugin
Returns:
The version of the plug-in

doc

public void doc(String text)
Description copied from interface: GrailsPlugin
Write some documentation to the DocumentationContext

Specified by:
doc in interface GrailsPlugin

getDependencyNames

public String[] getDependencyNames()
Specified by:
getDependencyNames in interface GrailsPlugin
Overrides:
getDependencyNames in class AbstractGrailsPlugin
Returns:
The names of the plugins this plugin is dependant on

getWatchedResources

public Resource[] getWatchedResources()
Returns:
the watchedResources

getDependentVersion

public String getDependentVersion(String name)
Description copied from interface: GrailsPlugin
The version of the specified dependency

Specified by:
getDependentVersion in interface GrailsPlugin
Overrides:
getDependentVersion in class AbstractGrailsPlugin
Parameters:
name - the name of the dependency
Returns:
The version

toString

public String toString()
Overrides:
toString in class Object

doWithWebDescriptor

public void doWithWebDescriptor(groovy.util.slurpersupport.GPathResult webXml)
Description copied from interface: GrailsPlugin
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

Specified by:
doWithWebDescriptor in interface GrailsPlugin
Overrides:
doWithWebDescriptor in class AbstractGrailsPlugin
Parameters:
webXml - The GPathResult representing web.xml

checkForChanges

public boolean checkForChanges()
Monitors the plugin resources defined in the watchResources property for changes and fires onChange events by calling an onChange closure defined in the plugin (if it exists)

Specified by:
checkForChanges in interface GrailsPlugin
Overrides:
checkForChanges in class AbstractGrailsPlugin
Returns:
Returns true when the plug-in itself changes in some way, as oppose to plug-in resources

fireModifiedEvent

protected void fireModifiedEvent(Resource resource,
                                 GrailsPlugin plugin)

restartContainer

public void restartContainer()

setWatchedResources

public void setWatchedResources(Resource[] watchedResources)
                         throws IOException
Throws:
IOException

getLog

public org.apache.commons.logging.Log getLog()

getPlugin

public GrailsPlugin getPlugin()

setParentApplicationContext

public void setParentApplicationContext(ApplicationContext parent)
Specified by:
setParentApplicationContext in interface ParentApplicationContextAware

refresh

public void refresh()
Description copied from interface: GrailsPlugin
Refreshes this Grails plugin reloading any watched resources as necessary

Specified by:
refresh in interface GrailsPlugin
Overrides:
refresh in class AbstractGrailsPlugin

refresh

public void refresh(boolean fireEvent)

getInstance

public groovy.lang.GroovyObject getInstance()
Description copied from interface: GrailsPlugin
Retrieves the wrapped plugin instance for this plugin

Specified by:
getInstance in interface GrailsPlugin
Returns:
The plugin instance

doWithDynamicMethods

public void doWithDynamicMethods(ApplicationContext applicationContext)
Description copied from interface: GrailsPlugin
Calls a "doWithDynamicMethods" closure that allows a plugin to register dynamic methods at runtime

Specified by:
doWithDynamicMethods in interface GrailsPlugin
Parameters:
applicationContext - The Spring ApplicationContext instance

isEnabled

public boolean isEnabled()
Specified by:
isEnabled in interface GrailsPlugin
Returns:
Whether the plugin is enabled or not

getObservedPluginNames

public String[] getObservedPluginNames()
Description copied from interface: GrailsPlugin
Retrieve the plugin names that this plugin is observing for changes

Specified by:
getObservedPluginNames in interface GrailsPlugin
Returns:
The names of the observed plugins

notifyOfEvent

public void notifyOfEvent(Map event)
Description copied from interface: GrailsPlugin
Notifies this plugin of the specified Event calling the onChange listener

Specified by:
notifyOfEvent in interface GrailsPlugin
Parameters:
event - The event to listen for

notifyOfEvent

public Map notifyOfEvent(int eventKind,
                         Object source)
Description copied from interface: GrailsPlugin
Notifies the plugin of a specific event for the given event id, which is one of ON_CHANGE, ON_CONFIG_CHANGE

Specified by:
notifyOfEvent in interface GrailsPlugin
Parameters:
eventKind - The event kind
source - The source of the event
Returns:
a Map that represents the event

doArtefactConfiguration

public void doArtefactConfiguration()
Description copied from interface: GrailsPlugin
Called prior to the initialisation of the GrailsApplication instance to allow the registration of additonal ArtefactHandlers

Specified by:
doArtefactConfiguration in interface GrailsPlugin
Specified by:
doArtefactConfiguration in class AbstractGrailsPlugin
See Also:
ArtefactHandler

getProvidedArtefacts

public Class[] getProvidedArtefacts()
Description copied from interface: GrailsPlugin
Retrieves an array of provided Artefacts that are pre-compiled additions to the GrailsApplication object but are overridable by the end-user

Specified by:
getProvidedArtefacts in interface GrailsPlugin
Returns:
A list of provided artefacts

getPluginExcludes

public List<String> getPluginExcludes()
Description copied from interface: GrailsPlugin
A list of resources that the plugin should exclude from the packaged distribution

Specified by:
getPluginExcludes in interface GrailsPlugin
Returns:
a List of resources

getTypeFilters

public Collection<? extends TypeFilter> getTypeFilters()
Description copied from interface: GrailsPlugin
Plugin can provide a list of Spring TypeFilters so that annotated components can be scanned into the ApplicationContext

Specified by:
getTypeFilters in interface GrailsPlugin
Returns:
A collection of TypeFilter instance


Copyright (c) 2005-2009 The Grails project