GrailsApplication (Grails 3.1.1)
Date: 2016-02-04

Package: org.codehaus.groovy.grails.commons

## [Groovy] Interface GrailsApplication

- deprecated:
    Use GrailsApplication instead
  Authors:
    Graeme Rocher

- - ### Properties Summary

    Properties
    Type | Name and description
    --- | ---
    `java.lang.String` | `APPLICATION_ID` The id of the grails application within a bean context
    `java.lang.String` | `CLASS_LOADER_BEAN`
    `java.lang.String` | `CONFIG_CLASS` The name of the class that provides configuration
    `java.lang.String` | `DATA_SOURCE_BEAN`
    `java.lang.String` | `DATA_SOURCE_CLASS` The name of the DataSource class
    `java.lang.String` | `DIALECT_DETECTOR_BEAN`
    `java.lang.String` | `EXCEPTION_HANDLER_BEAN`
    `java.lang.String` | `MESSAGE_SOURCE_BEAN`
    `java.lang.String` | `MULTIPART_RESOLVER_BEAN`
    `java.lang.String` | `OPEN_SESSION_IN_VIEW_INTERCEPTOR_BEAN`
    `java.lang.String` | `PROJECT_META_FILE` The name of the project metadata file
    `java.lang.String` | `SESSION_FACTORY_BEAN`
    `java.lang.String` | `TRANSACTION_MANAGER_BEAN` The name of the transaction manager bean

  - ### Methods Summary

    Methods
    Type | Name and description
    --- | ---
    `GrailsClass` | `addArtefact(java.lang.String artefactType, java.lang.Class artefactClass)`
    `GrailsClass` | `addArtefact(java.lang.String artefactType, GrailsClass artefactGrailsClass)`
    `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.
    `java.lang.Class[]` | `getAllArtefacts()` Retrieves all java.lang.Class instances considered Artefacts loaded by the Grails class loader
    `java.lang.Class[]` | `getAllClasses()` Retrieves all java.lang.Class instances loaded by the Grails class loader
    `GrailsClass` | `getArtefact(java.lang.String artefactType, java.lang.String name)`
    `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)`
    `ArtefactHandler` | `getArtefactHandler(java.lang.String type)` Returns the ArtefactHandler for the given type
    `ArtefactHandler[]` | `getArtefactHandlers()`
    `ArtefactInfo` | `getArtefactInfo(java.lang.String artefactType)`
    `ArtefactHandler` | `getArtefactType(java.lang.Class theClass)` Returns the ArtefactHandler for the given class or null
    `GrailsClass[]` | `getArtefacts(java.lang.String artefactType)`
    `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<java.lang.String, java.lang.Object>` | `getFlatConfig()` Returns the flatten ConfigObject for use from Java classes.
    `org.springframework.context.ApplicationContext` | `getMainContext()` Returns the Spring context for this application.
    `Metadata` | `getMetadata()`
    `org.springframework.context.ApplicationContext` | `getParentContext()` Returns the Spring application context that contains this application instance.
    `org.springframework.core.io.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)`
    `void` | `initialise()` Initialise this GrailsApplication.
    `boolean` | `isArtefact(java.lang.Class theClazz)`
    `boolean` | `isArtefactOfType(java.lang.String artefactType, java.lang.Class theClazz)`
    `boolean` | `isArtefactOfType(java.lang.String artefactType, java.lang.String className)`
    `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)`
    `void` | `setMainContext(org.springframework.context.ApplicationContext context)` Sets the main Spring context for this application.

- - ### Property Detail

    - #### java.lang.String APPLICATION_ID

      The id of the grails application within a bean context

    - #### java.lang.String CLASS_LOADER_BEAN

    - #### java.lang.String CONFIG_CLASS

      The name of the class that provides configuration

    - #### java.lang.String DATA_SOURCE_BEAN

    - #### java.lang.String DATA_SOURCE_CLASS

      The name of the DataSource class

    - #### java.lang.String DIALECT_DETECTOR_BEAN

    - #### java.lang.String EXCEPTION_HANDLER_BEAN

    - #### java.lang.String MESSAGE_SOURCE_BEAN

    - #### java.lang.String MULTIPART_RESOLVER_BEAN

    - #### java.lang.String OPEN_SESSION_IN_VIEW_INTERCEPTOR_BEAN

    - #### java.lang.String PROJECT_META_FILE

      The name of the project metadata file

    - #### java.lang.String SESSION_FACTORY_BEAN

    - #### java.lang.String TRANSACTION_MANAGER_BEAN

      The name of the transaction manager bean

  - ### Method Detail

    - #### @java.lang.SuppressWarnings("rawtypes") 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

    - #### 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

    - #### @java.lang.SuppressWarnings("rawtypes") void addArtefact(java.lang.Class artefact)

      Adds the given artefact, attempting to determine type from

      Parameters:
        `artefact` - The artefact to add

    - #### @java.lang.SuppressWarnings("rawtypes") void addOverridableArtefact(java.lang.Class artefact)

      Adds an artefact that can be overriden by user defined classes

      Parameters:
        `artefact` - An overridable artefact

    - #### void configChanged()

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

    - #### @java.lang.SuppressWarnings("rawtypes") java.lang.Class[] getAllArtefacts()

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

      Returns:
        An array of classes

    - #### @java.lang.SuppressWarnings("rawtypes") java.lang.Class[] getAllClasses()

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

      Returns:
        An array of classes

    - #### 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

    - #### 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

    - #### 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

    - #### ArtefactHandler getArtefactHandler(java.lang.String type)

      Returns the ArtefactHandler for the given type

      Parameters:
        `type` - The artefact handler type
      Returns:
        The artefact handler

    - #### ArtefactHandler[] getArtefactHandlers()

      Obtain a list of all the artefact handlers

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

    - #### 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

    - #### @java.lang.SuppressWarnings("rawtypes") ArtefactHandler getArtefactType(java.lang.Class theClass)

      Returns the ArtefactHandler for the given class or null

      Parameters:
        `theClass` - The class
      Returns:
        The ArtefactHandler

    - #### 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

    - #### @java.lang.SuppressWarnings("rawtypes") 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

    - #### java.lang.ClassLoader getClassLoader()

      Returns the class loader instance for the Grails application.

      Returns:
        The ClassLoader instance

    - #### groovy.util.ConfigObject getConfig()

      Returns the ConfigObject instance.

      Returns:
        The ConfigObject instance

    - #### java.util.Map<java.lang.String, java.lang.Object> getFlatConfig()

      Returns the flatten ConfigObject for use from Java classes.

      Returns:
        The flattened config

    - #### org.springframework.context.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.

    - #### Metadata 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

    - #### org.springframework.context.ApplicationContext getParentContext()

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

    - #### @java.lang.SuppressWarnings("rawtypes") org.springframework.core.io.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

    - #### 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

    - #### void initialise()

      Initialise this GrailsApplication.

    - #### @java.lang.SuppressWarnings("rawtypes") 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

    - #### @java.lang.SuppressWarnings("rawtypes") 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

    - #### 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

    - #### boolean isInitialised()

      Returns whether this GrailsApplication has been initialised or not.

      Returns:
        true if it has been initialised

    - #### boolean isWarDeployed()

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

      Returns:
        true if the application is WAR deployed

    - #### 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

    - #### void refresh()

      This method will refresh the entire application

    - #### void refreshConstraints()

      Rebuilds the constraint definitions. TODO move this out? Why ORM dependencies in here?

    - #### void registerArtefactHandler(ArtefactHandler handler)

      Register a new artefact handler

      Parameters:
        `handler` - The new handler to add

    - #### void setMainContext(org.springframework.context.ApplicationContext context)

      Sets the main Spring context for this application.