23 noviembre 2009

Grails and Vaadin

Vaadin es un exelente framework para hacer aplicaciones web, a mi particularmente me gustó porque tiene una forma de programar muy similar a Swing. Me encontré con algunos inconvenientes para dejarlo funcionando, así que aquí voy a documentar un poco mi experiencia:

Después de pelearme un poco para integrar grails con vaadin, decidí empezar por un ejemplo simple con Vaadin: http://vaadin.com/tutorial
Aquí empezaron los problemas, pero también pude encontrar las soluciones. En primer lugar, en el ejemplo (http://dev.vaadin.com/svn/incubator/SimpleAddressBook) se ve que en el web.xml el servlet-mapping define la url como /* y esto es muy importante para que funcione la aplicación. Yo traté de cambiarlo por /HelloWorld y no funcionaba... Pero encontré la solución (si bien todavía no se el porqué real).
El url pattern debe terminar con /*, es decir, para lo que quería hacer debería quedar como /HelloWorld/* y además hay que agregar un mapping al mismo servlet que mapee /VAADIN/*. Dicho esto, la parte del web.xml que define los servlets mappings quedaría:
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/HelloWorld/*</url-pattern>
</servlet-mapping>
<!-- this is needed to work with vaadin -->
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/VAADIN/*</url-pattern>
</servlet-mapping>

Ahora si, de vuelta a grails... creé una aplicación:
grails create-app test
Luego para poder editar el web.xml (que por defecto no aparece en la aplicación):
grails install-templates
Luego edité el web.xml como en el ejemplo.
Agregué el jar de vaadin a la carpeta lib
Agregué el código de mi aplicación vaadin en src/java

Todo parecía que iba a marchar bien, pero luego de ejecutar grails run-app y al acceder a la aplicación de ejemplo, ocurría un error al tratar de cargar la clase que yo había agregado al src/java. Sin entender por qué, compilé mi aplicación en un jar y lo agregué en la carpeta lib... Y ahora si estaba funcionando!
Luego hice lo siguiente: borré el jar que había creado y generé el war de la aplicación con grails war y esta vez si me compiló la clase que había agregado y pude deployar el war en un tomcat 6 y vi funcionando la aplicación.
Otra opción que encontré que funciona es ejecutar grails run-war en vez de grails run-app. Esto también compila la carpeta src y anda.

En resumidas cuentas, parece que al ejecutar run-app no se compilan los fuentes que están en src/java. Todavía no pude encontrar una explicación o motivo... seguramente alguna configuración que no modifiqué...

Todavía queda pendiente ver como acceder los scaffolding de grails desde vaadin y obtener en poco tiempo una aplicación con una linda interfaz y generada rápidamente con grails

02 septiembre 2009

Gestión de tareas o incidentes con trac y eclipse

Algo que no me gusta de usar trac, bugzilla, mantis u otro sistema de gestión de incidentes es que todos tienen interfaz web, y eso implica loguearse, navegar hasta un incidente y recién entonces editarlo. Muchas veces encontrar el incidente implica realizar muchas veces este proceso. Por estos motivos en general siempre veo que los incidentes terminan siendo monitoreados por los Project Leaders o alguna otra persona que termina invirtiendo su tiempo en averiguar el estado de las tareas e irlo actualizando. Es así que seguí buscando hasta dar con una combinación que me gustó: Mylyn + Trac.

Hace tiempo había escuchado de Mylyn para eclipse, pero nunca había podido probarlo ni tampoco había encontrado mucha documentación. Ahora conseguí hacerlo funcionar con el Trac. Es un proceso muy sencillo y hace que uno se sienta a gusto con su uso.

Lo primero es tener instalado el eclipse (yo tengo la versión 3.4 del eclipse classic) y un trac (http://trac.edgewall.org). Los pasos para instalar el plugin de eclipse son:
  1. Ir a actualizaciones (help -> software updates...)
  2. Ir a Available software
  3. Add site
  4. Agregar: http://download.eclipse.org/tools/mylyn/update/e3.4 y http://download.eclipse.org/tools/mylyn/update/extras (verificar que lo agregue a la lista de Available software, si no, es posible que haya que marcarlo en Manage sites)
  5. Buscar y marcar Mylyn connector: Trac
  6. Install
  7. Si no tenían instalado Mylyn, les va a instalar también las dependencias
Luego de esto habrá que reiniciar el eclipse. La lista de tareas de mylyn hay que habilitarla:
  • window -> show view -> other...
  • Tasks -> task list
La lista de tareas es muy fácil de usar, pero lo que quiero aclarar es como conectarse con trac, y para esto lo primero es agregar un "Task repository" (buscar entre las acciones de la lista de tareas). Seleccionar trac y seguir las instrucciones. Si buscan entre las opciones avanzadas se puede configurar un proxy (es útil si hay que conectarse a una vpn, pero ese es otro asunto). Prueben primero validar la conexión, y si hicieron las cosas bien, ya tendrían disponible sus tareas.

Ahora sólo falta un paso más, que es definir una Query para obtener las tareas. Ahí pueden definir con qué criterios obtener las tareas (por defecto no van a ver ninguna). Se pueden definir tantos queries como sean necesarios. Y eso es todo. Ahora si pueden gestionar sus tareas de trac desde eclipse. Y realmente ahorra mucho tiempo.

Quizás después explique un poco mi experiencia usando la herramienta, pero por ahora sólo publico la guía del usuario que está fácil de seguir y con imágenes: http://wiki.eclipse.org/index.php/Mylyn/User_Guide