Greach 2011 : Creando Plugins Con Griffon

56
Creando plugins con

description

Creación de plugins en Griffon. Presentación realizada en Greach 2011.

Transcript of Greach 2011 : Creando Plugins Con Griffon

Page 1: Greach 2011 : Creando Plugins Con Griffon

Creando plugins con

Page 2: Greach 2011 : Creando Plugins Con Griffon

Me presento

Mario García Desarrollador Freelance Java/Groovy Commiter de Griffon Otros proyectos en los que me entretengo:

Anibal: http://anibal.sourceforge.net Viewa: http://www.viewaframework.org

Twitter: @marioggar Blog: desmontandojava.blogspot.com

Page 3: Greach 2011 : Creando Plugins Con Griffon

¿Que vamos a ver? ¿Por qué Griffon?

Plataforma de Plugins

Plugins y Addons

Creación de un plugin

Creación de un addon

Creación de un arquetipo con el plugin creado

Page 4: Greach 2011 : Creando Plugins Con Griffon

¿Por qué Griffon?

Page 5: Greach 2011 : Creando Plugins Con Griffon

¿Por qué Griffon ? Lo reconozco, el desarollo de Swing era...

Desestructurado

Practica inexistencia de frameworks Cada aplicación un framework XD

Verboso

Mucho código para realizar las mismas tareas. Hey! Es Java puro ¿Qué esperabais?

Dificíl en el manejo de hilos

Dificultad en el manejo del EventDispatchThread

Page 6: Greach 2011 : Creando Plugins Con Griffon

¿Por qué Griffon ?

Es decir, una pesadilla :<

Page 7: Greach 2011 : Creando Plugins Con Griffon

¿Por qué Griffon ?

Yo quería divertirme y escuche una musica...

Page 8: Greach 2011 : Creando Plugins Con Griffon

¿Por qué Griffon ?

… me tome una copita y asi encontré...

Page 9: Greach 2011 : Creando Plugins Con Griffon

¿Por qué Griffon ?

SWING + GROOVY + GRAILS ~=

Page 10: Greach 2011 : Creando Plugins Con Griffon

¿Por qué Griffon ?

Page 11: Greach 2011 : Creando Plugins Con Griffon

¿Por qué Griffon? Site: http://griffon.codehaus.org

Licencia: Apache 2.0

1er release: (0.0) – 10 Sept. 2008 (Basado en Grails 1.1)

Última distribución: 0.9.4

Sospechosos habituales...

Andres Almiray

Danno Ferrin

Page 12: Greach 2011 : Creando Plugins Con Griffon

Plataforma de Plugins

Page 13: Greach 2011 : Creando Plugins Con Griffon

Plataforma de plugins

Lo que Griffon no hace, lo hacen sus plugins http://griffon.codehaus.org/Plugins Mas de 170 plugins y contando Categorias

Persistencia Componentes Look and Feel Internacionalización Testing Y unas cuantas más

Page 14: Greach 2011 : Creando Plugins Con Griffon

Plugins y Addons

Page 15: Greach 2011 : Creando Plugins Con Griffon

Plugins y Addons

Plugin y Addon Plugins

Agregan nuevas librerias a nuestro proyecto Agregan nuevos scripts (p.e: crear nuevos ficheros) Agregan Addons

Addons Agregan funcionalidad en tiempo de ejecución. Ejemplo: Inyectar un servicio a todos los controladores

cada vez se instancien.

Page 16: Greach 2011 : Creando Plugins Con Griffon

Creación de un plugin

Page 17: Greach 2011 : Creando Plugins Con Griffon

Creación de un plugin

Pasos para crear un plugin (Sin addons) Creación del proyecto del plugin Agregacion de dependencias Agregación/Modificación de scripts Empaquetado plugin Plugin Release

Page 18: Greach 2011 : Creando Plugins Con Griffon

Creación de un plugin

Creación del proyecto* griffon create-plugin nombrePlugin

Se creará la estructura del proyecto

Un plugin tiene la misma estructura que un proyecto Griffon normal

Codigo del ejemplo del plugin y del Addon en:

http://code.google.com/p/griffon-examples/

Page 19: Greach 2011 : Creando Plugins Con Griffon

Creación de un plugin

Creación del proyecto. Partes más importantes

Descriptor Plugin Declaración o agregación

de dependencias Agregación de scripts Agregación de código fuente

Page 20: Greach 2011 : Creando Plugins Con Griffon

Creación de un plugin

Creación del proyecto Partes más importantes: Descriptor Plugin

Metainformación sobre el plugin Versión del plugin (Por si necesitas una versión en concreto) Versión de Griffon compatible Dependencias con otros plugins Tipo de licencia Toolkit compatible (Swing, SWT...) Compatibilidad de plataformas Datos sobre el autor Información sobre la funcionalidad del plugin

Page 21: Greach 2011 : Creando Plugins Con Griffon

Creación de un plugin

Page 22: Greach 2011 : Creando Plugins Con Griffon

Creación de un plugin

Agregación de dependencias Manualmente en el directorio lib Declarativamente en

BuildConfig.groovy

Page 23: Greach 2011 : Creando Plugins Con Griffon

Creación de un plugin

Agregación de dependencias BuildConfig.groovy (fragmento)

Page 24: Greach 2011 : Creando Plugins Con Griffon

Creación de un plugin

Agregación Scripts Podemos agregar scripts que generen código

create-domain-class en el caso de gorm (Grails) que crea una clase que tiene capacidad de persistencia

Podemos modificar/agregar ficheros de configuración a través de los scripts de instalación/desinstalación/actualización del plugin

Por ejemplo, queremos agregar la configuración del servidor Solr al que vamos a consultar.

Page 25: Greach 2011 : Creando Plugins Con Griffon

Creación de un plugin

Agregación de scripts Todos los scripts están en “scripts”

Por defecto existen _Install.groovy _Uninstall.groovy _Upgrade.groovy

Page 26: Greach 2011 : Creando Plugins Con Griffon

Creación de un plugin

Agregación de scripts Creación de fichero de configuración en la instalación a través de

_Install.groovy

Page 27: Greach 2011 : Creando Plugins Con Griffon

Creación de un plugin

Empaquetado del plugin Empaquetamos el plugin para poder testearlo antes de realizar un

release. griffon package-plugin

Importante copiar la ruta de creación del empaquetado del plugin, para poder instalarlo en nuestras aplicaciones locales

Page 28: Greach 2011 : Creando Plugins Con Griffon

Creación de un plugin

Empaquetado del plugin

Page 29: Greach 2011 : Creando Plugins Con Griffon

Creación de un plugin

Empaquetado del plugin Probamos a instalar el plugin

Veremos también como se descargan las dependencias

Page 30: Greach 2011 : Creando Plugins Con Griffon

Creación de un plugin

Empaquetado del plugin Veremos como se ha creado el fichero Solr.groovy

Page 31: Greach 2011 : Creando Plugins Con Griffon

Creación de un Addon

Page 32: Greach 2011 : Creando Plugins Con Griffon

Creación de un Addon

Hasta ahora: Gracias al plugin nuestra aplicación

Puede utilizar el api de Solrj Puede recoger la configuración de un fichero

(Solr.groovy) Pero nos gustaría:

No tener que repetir el codigo de conexión Hacer las consultas mas a-la Gorm

Page 33: Greach 2011 : Creando Plugins Con Griffon

Creación de un Addon

Pasos a seguir: Creación de un nuevo Addon

Vamos a crear un addon dentro de nuestro plugin

Inyectar funcionalidad en tiempo de ejecución En cada instancia de controlador un builder que permita realizar criterias

básicas a-la Gorm.

Page 34: Greach 2011 : Creando Plugins Con Griffon

Creación de un Addon

Creación del Addon* griffon create-addon nombreAddon

Esta ejecución creará un nuevo fichero denominado [NombreDelAddon]GriffonAddon.groovy

Page 35: Greach 2011 : Creando Plugins Con Griffon

Creación de un Addon

Creación del Addon El fichero del Addon por lo general tiene comentados:

Todos los metodos que hacen referencia al ciclo de vida Todos los posibles puntos de inyección en tiempo de ejecución

Page 36: Greach 2011 : Creando Plugins Con Griffon

Creación de un Addon

Inyección de funcionalidad en Runtime Ciclo de vida del Addon

No vamos a deternos aqui, ya que nuestro Addon no depende del ciclo de vida del Addon

Orden de ejecución de metodos addonInit(app) { ... } addonPostInit(app) { ... } addonBuilderInit(app) { ... } addonBuilderPostInit(app) { ... }

Page 37: Greach 2011 : Creando Plugins Con Griffon

Creación de un Addon

Inyección de funcionalidad en Runtime La lista de posibles elementos que puede agregar un addon a

una aplicación en tiempo de ejecución son:

factories: Nodos que pueden ser interpretados en cualquier miembro de un grupo MVC

methods: Metodos adicionales agregados a todos los miembros de un grupo MVC

props: Propiedades agregadas a todos los m. de un g. MVC mvcGroups: Nuevos grupos MVC events: Manejadores de eventos en tiempo de ejecución XXXDelegates: Diferentes estrategias para construcción de

nodos.

Page 38: Greach 2011 : Creando Plugins Con Griffon

Creación de un Addon

Inyección de funcionalidad Vamos a inyectar una propiedad en todos los controladores para

poder realizar consultas de tipo criteria contra una instancia de solr como esta:

Page 39: Greach 2011 : Creando Plugins Con Griffon

Creación de un Addon

Inyección de funcionalidad Inyección de método withSolr

La inyección se produce a través del addon creado (AlaGormGriffonAddon) Vamos a leer el fichero de configuración que crea el plugin al instalarlo. Solo

una vez cuando se inicia la aplicación. Vamos a inyectar el metodo withSolr en cada instancia que se cree de un

controlador. Este metodo withSolr devolverá una instancia de un builder creado por nosotros (SolrjBuilder)

El código fuente que vamos a agregar estará en la carpeta src/main dentro de nuestro plugin (SolrjBuilder/ConstraintsBuilder).

Page 40: Greach 2011 : Creando Plugins Con Griffon

Creación de un addon

Inyección de funcionalidad

Page 41: Greach 2011 : Creando Plugins Con Griffon

Creación de un addon

Probamos el addon Volvemos a empaquetar el plugin

Nota: Podemos empaquetar solamente el addon

Volvemos a instalar el plugin Primero voy a desinstalarlo e instalarlo otra vez

Importante: Al trabajar en local cuidado con la cache de ivy, puede jugar malas pasadas.

Creamos un grupo MVC en nuestra aplicación para probar los criterias contra un servidor Solr

Page 42: Greach 2011 : Creando Plugins Con Griffon

Creación de un addon

Nuevo MVC (Vista)

Page 43: Greach 2011 : Creando Plugins Con Griffon

Creación de un addon

Nuevo MVC (Controlador)

Page 44: Greach 2011 : Creando Plugins Con Griffon

Creación de un addon

Y el resultado sería

Page 45: Greach 2011 : Creando Plugins Con Griffon

Arquetipos

Page 46: Greach 2011 : Creando Plugins Con Griffon

Arquetipos

Caracteristicas Reutilización de estructuras de proyectos

Una serie de grupos MVC comunes (Login) Plugins (P.e. En esta empresa siempre se utiliza

activeJdbc para conexión a base de datos, y ldap para la autenticación)

Lo que se os ocurra compartir.

Page 47: Greach 2011 : Creando Plugins Con Griffon

Arquetipos

Comandos create-archetype

Crea la estructura del arquetipo.

package-archetype Prepara el arquetipo para ser compartido

install-archetype Instala el arquetipo para poder ser utilizado. NO instala el arquetipo en tu

aplicación

Page 48: Greach 2011 : Creando Plugins Con Griffon

Arquetipos

Descriptor application.groovy

En este fichero se define aquello que va a ser instalado, en la aplicación que siga este arquetipo.

Page 49: Greach 2011 : Creando Plugins Con Griffon

Arquetipos

Templates Estos templates se utilizarán para crear nuevos artefactos.

La resolución de estas plantillas sigue este orden: local a la aplicación → $basedir/src/templates/artifacts

Por un plugin → $pluginHome/*/src/templates/artifacts

Arquetipo local → ~/.griffon/<version>/archetypes/<name>/templates/artifacts

Arquetipo global → $griffonHome/archetypes/<name>/templates/artifacts

Page 50: Greach 2011 : Creando Plugins Con Griffon

Arquetipos

Ejemplo simple* Creamos un arquetipo que haga que el proyecto tenga

como dependencias los plugins de viewaswing y ldap Creamos el arquetipo Agregamos en application.groovy los plugins Empaquetamos e instalamos el arquetipo Creamos una aplicación que siga el arquetipo que acabamos de crear

Page 51: Greach 2011 : Creando Plugins Con Griffon

Arquetipos

Creamos el arquetipo

Editamos el fichero application.groovy Descomentamos la linea donde se recupera los metadatos de la aplicación

Agregamos las lineas para nuestros plugins

Page 52: Greach 2011 : Creando Plugins Con Griffon

Arquetipos

Page 53: Greach 2011 : Creando Plugins Con Griffon

Arquetipos

Empaquetamos griffon package-archetype

Nos creara un fichero zip en la carpeta del arquetipo

Instalamos griffon install-archetype URL/ruta del arquetipo

Si lo ejecutamos en la misma carpeta donde esta el fichero zip solamente deberemos ejecutar

griffon install-archetype nombrefichero.zip

Esto lo instalará en el repositorio local

Creamos una aplicacion con el arquetipo

Page 54: Greach 2011 : Creando Plugins Con Griffon

Arquetipos

Page 55: Greach 2011 : Creando Plugins Con Griffon

Un consejo antes de terminar...

http://www.manning.com/almiray/

Page 56: Greach 2011 : Creando Plugins Con Griffon

Q&A