Groovy Documentation

org.codehaus.groovy.grails.commons
[Java] Interface GrailsApplication

org.springframework.context.ApplicationContextAware
  org.codehaus.groovy.grails.commons.GrailsApplication
All Superinterfaces:
ApplicationContextAware

public interface GrailsApplication
extends ApplicationContextAware

The main interface representing a running Grails application. This interface's main purpose is to provide a mechanism for analysing the conventions within a Grails application as well as providing metadata and information about the execution environment.

The GrailsApplication interface interfacts with ArtefactHandler instances which are capable of analysing different artefact types (controllers, domain classes etc.) and introspecting the artefact conventions

Implementors of this inteface should be aware that a GrailsApplication is only initialised when the initialise() method is called. In other words GrailsApplication instances are lazily initialised by the Grails runtime.

Authors:
Graeme Rocher
Steven Devijver
See Also:
initialise()
ArtefactHandler
Since:
0.1


Field Summary
java.lang.String APPLICATION_ID

The id of the grails application within a bean context

java.lang.String CONFIG_CLASS

The name of the class that provides configuration

java.lang.String DATA_SOURCE_CLASS

java.lang.String ENVIRONMENT

Constant used to resolve the environment via System.getProperty(ENVIRONMENT)

java.lang.String ENVIRONMENT_DEFAULT

Constants that indicates whether this GrailsApplication is running in the default environment

java.lang.String ENV_APPLICATION

Constant for the application data source, primarly for backward compatability for those applications that use ApplicationDataSource.groovy

java.lang.String ENV_DEVELOPMENT

Constant for the development environment

java.lang.String ENV_PRODUCTION

Constant for the production environment.

java.lang.String ENV_TEST

Constant for the test environment.

java.lang.String GLOBAL_PLUGINS_DIR

The path to the global plug-ins directory for the application

java.lang.String PLUGINS_DIR

The path to the plug-ins directory for the application

java.lang.String PROJECT_CLASSES_DIR

The name of the system property whose value contains the location, during development, of the current Grails projects resources directory

java.lang.String PROJECT_META_FILE

java.lang.String PROJECT_RESOURCES_DIR

The name of the system property whose value contains the location, during development, of the current Grails projects resources directory

java.lang.String PROJECT_TEST_CLASSES_DIR

The name of the system property whose value contains the location, during development, of the current Grails projects resources directory

java.lang.String PROJECT_WORK_DIR

The directory where temporary project resources and plug-ins are kept

java.lang.String WORK_DIR

The name of the system property whose value contains the location, during development, of the Grails working directory where temporary files are generated to

 
Method Summary
GrailsClass addArtefact(java.lang.String artefactType, java.lang.Class artefactClass)

Registers a new artefact

GrailsClass addArtefact(java.lang.String artefactType, GrailsClass artefactGrailsClass)

Registers a new artefact

void addArtefact(java.lang.Class artefact)

Adds the given artefact, attempting to determine type from

void addOverridableArtefact(java.lang.Class artefact)

Adds an artefact that can be overriden by user defined classes

void configChanged()

Fired to inform the application when the Config.groovy file changes.

Class[] getAllArtefacts()

Retrieves all java.lang.Class instances considered Artefacts loaded by the Grails class loader

Class[] getAllClasses()

Retrieves all java.lang.Class instances loaded by the Grails class loader

GrailsClass getArtefact(java.lang.String artefactType, java.lang.String name)

Gets the GrailsClass associated with the named artefact class

i.e. to get the GrailsClass for controller called "BookController" you pass the name "BookController"

GrailsClass getArtefactByLogicalPropertyName(java.lang.String type, java.lang.String logicalName)

Retrieves an artefact by its logical property name.

GrailsClass getArtefactForFeature(java.lang.String artefactType, java.lang.Object featureID)

Get an artefact GrailsClass by a "feature" which depending on the artefact may be a URI or tag name for example

ArtefactHandler getArtefactHandler(java.lang.String type)

Returns the ArtefactHandler for the given type

ArtefactHandler[] getArtefactHandlers()

Obtain a list of all the artefact handlers

ArtefactInfo getArtefactInfo(java.lang.String artefactType)

Obtain all the class information about the artefactType specified

ArtefactHandler getArtefactType(java.lang.Class theClass)

Returns the ArtefactHandler for the given class or null

GrailsClass[] getArtefacts(java.lang.String artefactType)

Get an array of all the GrailsClass instances relating to artefacts of the specified type.

java.lang.Class getClassForName(java.lang.String className)

Retrieves a class for the given name within the GrailsApplication or returns null

java.lang.ClassLoader getClassLoader()

Returns the class loader instance for the Grails application.

groovy.util.ConfigObject getConfig()

Returns the ConfigObject instance.

java.util.Map getFlatConfig()

Returns the flatten ConfigObject for use from Java classes.

ApplicationContext getMainContext()

Returns the Spring context for this application.

java.util.Map getMetadata()

Get access to the project's metadata, specified in application.properties

This provides access to information like required grails version, application name, version etc but NOT general application settings.

ApplicationContext getParentContext()

Returns the Spring application context that contains this application instance.

Resource getResourceForClass(java.lang.Class theClazz)

Retrieves a Resource instance for the given Grails class or null it doesn't exist.

boolean hasArtefactHandler(java.lang.String type)

Test whether an artefact handler exists for a given type

void initialise()

Initialise this GrailsApplication.

boolean isArtefact(java.lang.Class theClazz)

Call this to find out if the class you have is an artefact loaded by grails.

boolean isArtefactOfType(java.lang.String artefactType, java.lang.Class theClazz)

Check if the specified artefact Class has been loaded by Grails already AND is of the type expected

boolean isArtefactOfType(java.lang.String artefactType, java.lang.String className)

Check if the artefact Class with the name specified is of the type expected

boolean isInitialised()

Returns whether this GrailsApplication has been initialised or not.

boolean isWarDeployed()

Returns true if this application has been deployed as a WAR file

void rebuild()

Rebuilds this Application throwing away the class loader and re-constructing it from the loaded resources again.

void refresh()

This method will refresh the entire application

void refreshConstraints()

Rebuilds the constraint definitions.

void registerArtefactHandler(ArtefactHandler handler)

Register a new artefact handler

void setMainContext(ApplicationContext context)

Sets the main Spring context for this application.

 

Field Detail

APPLICATION_ID

public java.lang.String APPLICATION_ID
The id of the grails application within a bean context


CONFIG_CLASS

public java.lang.String CONFIG_CLASS
The name of the class that provides configuration


DATA_SOURCE_CLASS

public java.lang.String DATA_SOURCE_CLASS


ENVIRONMENT

@Deprecated
public java.lang.String ENVIRONMENT
Constant used to resolve the environment via System.getProperty(ENVIRONMENT)
deprecated:
Use Environment.KEY instead.


ENVIRONMENT_DEFAULT

@Deprecated
public java.lang.String ENVIRONMENT_DEFAULT
Constants that indicates whether this GrailsApplication is running in the default environment
deprecated:
Use Environment.DEFAULT instead.


ENV_APPLICATION

@Deprecated
public java.lang.String ENV_APPLICATION
Constant for the application data source, primarly for backward compatability for those applications that use ApplicationDataSource.groovy
deprecated:
Use Environment.APPLICATION instead.


ENV_DEVELOPMENT

@Deprecated
public java.lang.String ENV_DEVELOPMENT
Constant for the development environment
deprecated:
Use Environment.DEVELOPMENT instead.


ENV_PRODUCTION

@Deprecated
public java.lang.String ENV_PRODUCTION
Constant for the production environment.
deprecated:
Use Environment.PRODUCTION instead.


ENV_TEST

@Deprecated
public java.lang.String ENV_TEST
Constant for the test environment.
deprecated:
Use Environment.TEST instead.


GLOBAL_PLUGINS_DIR

@Deprecated
public java.lang.String GLOBAL_PLUGINS_DIR
The path to the global plug-ins directory for the application
deprecated:
Use BuildSettings.GLOBAL_PLUGINS_DIR instead.


PLUGINS_DIR

@Deprecated
public java.lang.String PLUGINS_DIR
The path to the plug-ins directory for the application
deprecated:
Use BuildSettings.PLUGINS_DIR instead.


PROJECT_CLASSES_DIR

@Deprecated
public java.lang.String PROJECT_CLASSES_DIR
The name of the system property whose value contains the location, during development, of the current Grails projects resources directory
deprecated:
Use BuildSettings.PROJECT_CLASSES_DIR instead.


PROJECT_META_FILE

public java.lang.String PROJECT_META_FILE


PROJECT_RESOURCES_DIR

@Deprecated
public java.lang.String PROJECT_RESOURCES_DIR
The name of the system property whose value contains the location, during development, of the current Grails projects resources directory
deprecated:
Use BuildSettings.PROJECT_RESOURCES_DIR instead.


PROJECT_TEST_CLASSES_DIR

@Deprecated
public java.lang.String PROJECT_TEST_CLASSES_DIR
The name of the system property whose value contains the location, during development, of the current Grails projects resources directory
deprecated:
Use BuildSettings.PROJECT_TEST_CLASSES_DIR instead.


PROJECT_WORK_DIR

@Deprecated
public java.lang.String PROJECT_WORK_DIR
The directory where temporary project resources and plug-ins are kept
deprecated:
Use BuildSettings.PROJECT_WORK_DIR instead.


WORK_DIR

@Deprecated
public java.lang.String WORK_DIR
The name of the system property whose value contains the location, during development, of the Grails working directory where temporary files are generated to
deprecated:
Use BuildSettings.WORK_DIR instead.


 
Method Detail

addArtefact

@SuppressWarnings("rawtypes")
public GrailsClass addArtefact(java.lang.String artefactType, java.lang.Class artefactClass)

Registers a new artefact

Parameters:
artefactType - The type ID of the artefact, i.e. "TagLib"
artefactClass - The class of the artefact. A new GrailsClass will be created automatically and added to internal structures, using the appropriate ArtefactHandler
Returns:
The new grails class for the artefact class
Since:
0.5


addArtefact

public GrailsClass addArtefact(java.lang.String artefactType, GrailsClass artefactGrailsClass)

Registers a new artefact

Parameters:
artefactType - The type ID of the artefact, i.e. "TagLib"
artefactGrailsClass - The GrailsClass of the artefact.
Returns:
The supplied grails class for the artefact class
Since:
0.5


addArtefact

@SuppressWarnings("rawtypes")
public void addArtefact(java.lang.Class artefact)
Adds the given artefact, attempting to determine type from
Parameters:
artefact - The artefact to add


addOverridableArtefact

@SuppressWarnings("rawtypes")
public void addOverridableArtefact(java.lang.Class artefact)
Adds an artefact that can be overriden by user defined classes
Parameters:
artefact - An overridable artefact


configChanged

public void configChanged()
Fired to inform the application when the Config.groovy file changes.


getAllArtefacts

@SuppressWarnings("rawtypes")
public Class[] getAllArtefacts()
Retrieves all java.lang.Class instances considered Artefacts loaded by the Grails class loader
Returns:
An array of classes


getAllClasses

@SuppressWarnings("rawtypes")
public Class[] getAllClasses()
Retrieves all java.lang.Class instances loaded by the Grails class loader
Returns:
An array of classes


getArtefact

public GrailsClass getArtefact(java.lang.String artefactType, java.lang.String name)

Gets the GrailsClass associated with the named artefact class

i.e. to get the GrailsClass for controller called "BookController" you pass the name "BookController"

Parameters:
artefactType - The type of artefact to retrieve, i.e. "Controller"
name - The name of an artefact such as "BookController"
Returns:
The associated GrailsClass or null
Since:
0.5


getArtefactByLogicalPropertyName

public GrailsClass getArtefactByLogicalPropertyName(java.lang.String type, java.lang.String logicalName)
Retrieves an artefact by its logical property name. For example the logical property name of BookController would be book.
Parameters:
type - The artefact type
logicalName - The logical name
Returns:
The GrailsClass or null if it doesn't exist


getArtefactForFeature

public GrailsClass getArtefactForFeature(java.lang.String artefactType, java.lang.Object featureID)

Get an artefact GrailsClass by a "feature" which depending on the artefact may be a URI or tag name for example

Parameters:
artefactType - The type ID of the artefact, i.e. "TagLib"
featureID - The "feature" ID, say a URL or tag name
Returns:
The grails class or null if none is found
Since:
0.5


getArtefactHandler

public ArtefactHandler getArtefactHandler(java.lang.String type)
Returns the ArtefactHandler for the given type
Parameters:
type - The artefact handler type
Returns:
The artefact handler


getArtefactHandlers

public ArtefactHandler[] getArtefactHandlers()

Obtain a list of all the artefact handlers

Returns:
The list, possible empty but not null, of all currently registered handlers


getArtefactInfo

public ArtefactInfo getArtefactInfo(java.lang.String artefactType)

Obtain all the class information about the artefactType specified

Parameters:
artefactType - An artefact type identifier i.e. "Domain"
Returns:
The artefact info or null if the artefactType is not recognized
Since:
0.5


getArtefactType

@SuppressWarnings("rawtypes")
public ArtefactHandler getArtefactType(java.lang.Class theClass)
Returns the ArtefactHandler for the given class or null
Parameters:
theClass - The class
Returns:
The ArtefactHandler


getArtefacts

public GrailsClass[] getArtefacts(java.lang.String artefactType)

Get an array of all the GrailsClass instances relating to artefacts of the specified type.

Parameters:
artefactType - The type of artefact to retrieve, i.e. "Controller"
Returns:
An array of GrailsClasses which may empty by not null
Since:
0.5


getClassForName

@SuppressWarnings("rawtypes")
public java.lang.Class getClassForName(java.lang.String className)
Retrieves a class for the given name within the GrailsApplication or returns null
Parameters:
className - The name of the class
Returns:
The class or null


getClassLoader

public java.lang.ClassLoader getClassLoader()
Returns the class loader instance for the Grails application.
Returns:
The ClassLoader instance


getConfig

public groovy.util.ConfigObject getConfig()
Returns the ConfigObject instance.
Returns:
The ConfigObject instance


getFlatConfig

@SuppressWarnings("rawtypes")
public java.util.Map getFlatConfig()
Returns the flatten ConfigObject for use from Java classes.
Returns:
The flattened config


getMainContext

public ApplicationContext getMainContext()
Returns the Spring context for this application. Note that this will return null until the application is fully initialised. This context contains all the application artifacts, plugin beans, the works.


getMetadata

@SuppressWarnings("rawtypes")
public java.util.Map getMetadata()

Get access to the project's metadata, specified in application.properties

This provides access to information like required grails version, application name, version etc but NOT general application settings.

Returns:
A read-only Map of data about the application, not environment specific


getParentContext

public ApplicationContext getParentContext()
Returns the Spring application context that contains this application instance. It is the parent of the context returned by getMainContext().


getResourceForClass

@SuppressWarnings("rawtypes")
public Resource getResourceForClass(java.lang.Class theClazz)
Retrieves a Resource instance for the given Grails class or null it doesn't exist.
Parameters:
theClazz - The Grails class
Returns:
A Resource or null


hasArtefactHandler

public boolean hasArtefactHandler(java.lang.String type)

Test whether an artefact handler exists for a given type

Parameters:
type - The type of the handler
Returns:
True if it does


initialise

public void initialise()
Initialise this GrailsApplication.


isArtefact

@SuppressWarnings("rawtypes")
public boolean isArtefact(java.lang.Class theClazz)

Call this to find out if the class you have is an artefact loaded by grails.

Parameters:
theClazz - A class to test
Returns:
True if and only if the class was loaded from grails-app/
Since:
0.5


isArtefactOfType

@SuppressWarnings("rawtypes")
public boolean isArtefactOfType(java.lang.String artefactType, java.lang.Class theClazz)

Check if the specified artefact Class has been loaded by Grails already AND is of the type expected

Parameters:
artefactType - A string identifying the artefact type to check for
theClazz - The class to check
Returns:
True if Grails considers the class to be managed as an artefact of the type specified.
Since:
0.5


isArtefactOfType

public boolean isArtefactOfType(java.lang.String artefactType, java.lang.String className)

Check if the artefact Class with the name specified is of the type expected

Parameters:
artefactType - A string identifying the artefact type to check for
className - The name of a class to check
Returns:
True if Grails considers the class to be managed as an artefact of the type specified.
Since:
0.5


isInitialised

public boolean isInitialised()
Returns whether this GrailsApplication has been initialised or not.
Returns:
True if it has been initialised


isWarDeployed

public boolean isWarDeployed()
Returns true if this application has been deployed as a WAR file
Returns:
True if the application is WAR deployed


rebuild

public void rebuild()
Rebuilds this Application throwing away the class loader and re-constructing it from the loaded resources again. Can only be called in development mode and an error will be thrown if called in a different enivronment


refresh

public void refresh()
This method will refresh the entire application


refreshConstraints

public void refreshConstraints()
Rebuilds the constraint definitions.
todo:
move this out? Why ORM dependencies in here?


registerArtefactHandler

public void registerArtefactHandler(ArtefactHandler handler)

Register a new artefact handler

Parameters:
handler - The new handler to add


setMainContext

public void setMainContext(ApplicationContext context)
Sets the main Spring context for this application.


 

Groovy Documentation