## org.codehaus.groovy.grails.commons
Interface ArtefactHandler

All Known Implementing Classes:
  AnnotationDomainClassArtefactHandler, ArtefactHandlerAdapter, BootstrapArtefactHandler, CodecArtefactHandler, ControllerArtefactHandler, DomainClassArtefactHandler, ServiceArtefactHandler, TagLibArtefactHandler, UrlMappingsArtefactHandler

    public interface ArtefactHandler

The ArtefactHandler interface's purpose is to allow the analysis of conventions within a Grails application. An artefact is represented by the GrailsClass interface and this interface provides methods that allow artefacts to be identified, created and initialized.

Artefacts need to provide info about themselves, and some callbacks are required to verify whether or not a class is that kind of artefact/p>

Author:
  Graeme Rocher, Marc Palmer (marc@anyware.co.uk)
See Also:
  `GrailsApplication.registerArtefactHandler(ArtefactHandler)`

Method Summary
`GrailsClass` `getArtefactForFeature(Object feature)` Called to retrieve an artefact relating to some other key for example a URI or tag name Handlers are responsible for caching the appropriate information using the data passed to them in calls to initialize()
`String` `getType()` Implementations must return a name such as "Domain" to indicate the type of artefact they represent
`void` `initialize(ArtefactInfo artefacts)` Called whenever the list of artefacts has changed or been reloaded.
`boolean` `isArtefact(Class aClass)` This method will be called by the GrailsApplication whenever it needs to know if a given class is considered to be the kind of artefact represented by this handler.
`boolean` `isArtefactGrailsClass(GrailsClass artefactGrailsClass)` Called to check if the specified GrailsClass is one managed by this artefact handler
`GrailsClass` `newArtefactClass(Class artefactClass)` Called by GrailsApplication when a new class is found and a GrailsClass wrapping it is required

Method Detail

### getType

    String getType()

  Implementations must return a name such as "Domain" to indicate the type of artefact they represent

  Returns:
    The aretfact type, as a String

### isArtefact

    boolean isArtefact(Class aClass)

  This method will be called by the GrailsApplication whenever it needs to know if a given class is considered to be the kind of artefact represented by this handler.

  Typically you will check the name of the class and some other properties to see if it is of the correct artefact type

  Parameters:
    `aClass` - A class to test
  Returns:
    True if the class looks like one of your artefacts

### newArtefactClass

    GrailsClass newArtefactClass(Class artefactClass)

  Called by GrailsApplication when a new class is found and a GrailsClass wrapping it is required

  Parameters:
    `artefactClass` - The new class that has been loaded
  Returns:
    A new custom GrailsClass wrapper containing any extra information your artefact type requires

### initialize

    void initialize(ArtefactInfo artefacts)

  Called whenever the list of artefacts has changed or been reloaded.

  It must be safe to call this method multiple times and have any internal data structures reset.

  Parameters:
    `artefacts` - The collection of artefact classes for this handler

### getArtefactForFeature

    GrailsClass getArtefactForFeature(Object feature)

  Called to retrieve an artefact relating to some other key for example a URI or tag name

  Handlers are responsible for caching the appropriate information using the data passed to them in calls to initialize()

  Parameters:
    `feature` - Any object that acts as a key
  Returns:
    A matching artefact GrailsClass or null if there is no match for this feature ID

### isArtefactGrailsClass

    boolean isArtefactGrailsClass(GrailsClass artefactGrailsClass)

  Called to check if the specified GrailsClass is one managed by this artefact handler

  Parameters:
    `artefactGrailsClass` - A GrailsClass instance
  Returns:
    True if this handler manages the specified GrailsClass

Copyright (c) 2005-2009 The Grails project