(Quick Reference)

12.5 Evaluating Conventions - Reference Documentation

Authors: Graeme Rocher, Peter Ledbrook, Marc Palmer, Jeff Brown, Luke Daley, Burt Beckwith

Version: null

12.5 Evaluating Conventions

Before looking at providing runtime configuration based on conventions you first need to understand how to evaluate those conventions from a plugin. Every plugin has an implicit application variable which is an instance of the GrailsApplication interface.

The GrailsApplication interface provides methods to evaluate the conventions within the project and internally stores references to all artifact classes within your application.

Artifacts implement the GrailsClass interface, which represents a Grails resource such as a controller or a tag library. For example to get all GrailsClass instances you can do:

Como se ha comentado anteriormente, Grails se basa en el paradigma de "Convención sobre la Configuración". Antes de examinar como preparar nuestros plugins para fúncionar usando este paradigma tenemos que entender cómo se evaluan las convenciones dentro plugin. Todos los plugins tienen una variable implicita llamada application que es una instancia de la interfaz GrailsApplication

La interfaz GrailsApplication provee métodos para evaluar las convenciones en el proyecto y que almacena internamente referencias a todos los artefactos de la aplicación

Los artefactos implementen la interfaz GrailsClass que representa un recurso de Grails, como un controlador o una librería de tags. Por ejemplo, para obtener todas las instancias de GrailsClass podemos hacer:

for (grailsClass in application.allClasses) {
    println grailsClass.name
}

GrailsApplication has a few "magic" properties to narrow the type of artefact you are interested in. For example to access controllers you can use:

GrailsApplication tienne algunas propiedades "mágicas" que permiten restringirse al tipo de artefactos en los que se esta interesado. Por ejmplo, para acceder a los controladores se puede usar:

for (controllerClass in application.controllerClasses) {
    println controllerClass.name
}

The dynamic method conventions are as follows:
  • *Classes - Retrieves all the classes for a particular artefact name. For example application.controllerClasses.
  • get*Class - Retrieves a named class for a particular artefact. For example application.getControllerClass("PersonController")
  • is*Class - Returns true if the given class is of the given artefact type. For example application.isControllerClass(PersonController)

Las convenciones sobre los métodos dinámicos son las siguientes:

  • *Classes - Devuelve todas las clases con el nombre de artefacto indicado. Un ejemplo es application.controllerClasses.
  • get*Class - Devuelve la clase con el nombre y tipo de artefacto indicado. Un ejemplo es application.getControllerClass("PersonController")
  • is*Class - Devuelve true si la clase es del tipo de artefacto indicado. Un ejemplo es application.isControllerClass(PersonController)

The GrailsClass interface has a number of useful methods that let you further evaluate and work with the conventions. These include:
  • getPropertyValue - Gets the initial value of the given property on the class
  • hasProperty - Returns true if the class has the specified property
  • newInstance - Creates a new instance of this class.
  • getName - Returns the logical name of the class in the application without the trailing convention part if applicable
  • getShortName - Returns the short name of the class without package prefix
  • getFullName - Returns the full name of the class in the application with the trailing convention part and with the package name
  • getPropertyName - Returns the name of the class as a property name
  • getLogicalPropertyName - Returns the logical property name of the class in the application without the trailing convention part if applicable
  • getNaturalName - Returns the name of the property in natural terms (eg. 'lastName' becomes 'Last Name')
  • getPackageName - Returns the package name

For a full reference refer to the javadoc API.

La interfaz GrailsClass tiene una serie de métodos que permiten evaluar y trabajar conlas convenciones. Entre estos se incluyen:

  • getPropertyValue - Obtiene el valor inicial de la propiedad en la clase.
  • hasProperty - Devuelve true si la clase tiene la propiedad especificada.
  • newInstance - Crea una nueva instancia de la clase.
  • getName - Devuelve el nombre lógico de una clase en la aplicación pero sin el sufijo de la convención (si es que lo tiene).
  • getShortName - Devuelve el nombre corto de la clase sin prefijarla con el paquete.
  • getFullName - Devuelve el nombre completo de la clase en la aplicación con el sufijo de la convención y prefijandola con el nombre del paquete.
  • getPropertyName - Devuelve el nombre de la clase como nombre de propiedad
  • getLogicalPropertyName - Devuelve el nombre lógico de la pripiedad de la clase en la aplicación sin el sufijo de la convención (si es que lo tiene).
  • getNaturalName - Devuelve el nombre de la propiedad en "lenguage naturales", esto es, 'lastName' se convierte en 'Last Name'
  • getPackageName - Devuelve el nombre del paquete

Para una referencia completa ir a javadoc API.