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
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 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:
application que es una instancia de la interfaz GrailsApplicationLa interfaz GrailsApplication provee métodos para evaluar las convenciones en el proyecto y que almacena internamente referencias a todos los artefactos de la aplicaciónLos 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:
Las convenciones sobre los métodos dinámicos son las siguientes:
*Classes- Retrieves all the classes for a particular artefact name. For exampleapplication.controllerClasses.get*Class- Retrieves a named class for a particular artefact. For exampleapplication.getControllerClass("PersonController")is*Class- Returnstrueif the given class is of the given artefact type. For exampleapplication.isControllerClass(PersonController)
*Classes- Devuelve todas las clases con el nombre de artefacto indicado. Un ejemplo esapplication.controllerClasses.get*Class- Devuelve la clase con el nombre y tipo de artefacto indicado. Un ejemplo esapplication.getControllerClass("PersonController")is*Class- Devuelvetruesi la clase es del tipo de artefacto indicado. Un ejemplo esapplication.isControllerClass(PersonController)
The
La interfaz 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 classhasProperty- Returnstrueif the class has the specified propertynewInstance- Creates a new instance of this class.getName- Returns the logical name of the class in the application without the trailing convention part if applicablegetShortName- Returns the short name of the class without package prefixgetFullName- Returns the full name of the class in the application with the trailing convention part and with the package namegetPropertyName- Returns the name of the class as a property namegetLogicalPropertyName- Returns the logical property name of the class in the application without the trailing convention part if applicablegetNaturalName- Returns the name of the property in natural terms (eg. 'lastName' becomes 'Last Name')getPackageName- Returns the package name
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- Devuelvetruesi 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 propiedadgetLogicalPropertyName- 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

