Ejemplos y comentarios del Barcelona Startup Weekend Bootcamp

El pasado sábado tuve la suerte de poder impartir el Bootcamp del Barcelona Startup Wekeend. Durante esta sesión, vimos una introducción al servicio de GAE para montar un servidor rest y como utilizar la libreria AndroidAnnotations para hacer aplicaciones Android de forma rápida.

Por razones que no acababa de entender, no conseguimos hacer funcionar la libreria AndroidAnnotations como cliente rest, y como sospechaba que era un tema de librerias, prometí mirarlo con calma y postear un proyecto que funcionase.

Después de mucho investigar he encontrado la causa de los problemas y he podido solucionarlos.

Relato un poco de donde se originaron.

Spring for Android

La librería Spring for Android alcanzó su “mayoría de edad” recientemente, publicando la versión 1.0.

¿A que uno espera que no haya grandes cambios entre una RC1 y la versión final? pues resulta que sí, que esta versión incluye un gran cambio, y es que, por motivos de rendimiento, ya no se incluye ningún MessageConverter predeterminado. Los MessageConverter son los encargados de traducir el formato recibido y deserializarlo.

Cito de https://github.com/excilys/androidannotations/wiki/Rest%20API:

Prior to the Spring Android 1.0 release, some MessageConverters were included by default when creating a new RestTemplate instance. It is not the case any more, for performance reasons. This means that you need to add those manually.

Y más info en https://github.com/excilys/androidannotations/issues/206

Mientras los chicos de AndroidAnnotations lo arreglan, mi consejo es volver a la Spring for Android RC1.

Jackson

Y por si fuera poco, los amigos de Jackson suben de la 1.9.x a la versión 2. Y después de algunos cabezazos contra la pared leo esto (http://stackoverflow.com/a/10114164):

The problem is that Spring doesn’t work with Jackson 2.0

Vamos, peor imposible.

El código

Como tanto cambio reciente nos pilla a todos un poco a traspiés, el código de ejemplo que he puesto utiliza Spring for Android RC1 y Jackson 1.9.7 que son las versiones que funcionan bien.

Para casos como estos es para los que va bien Maven, ya que os hubiese pasado las dependencias de otro proyecto, y hubiese funcionado a la primera.

Que le vamos a hacer, meses trabajando con unas librerias, y el día que las vuelves a descargar, ha cambiado todo. Ya es verdad que uno nunca va lo suficientemente preparado.

Ah! que no se me olvide, también he subido el código a un repositorio de Google Code, lo podréis encontrar en http://code.google.com/p/bsw-catdroid-bootcamp-2012/. Este simplemente implementa una llamada GET y muestra un Toast por registro. Os dejo como ejercicio hacer el PUT. Cualquier duda, este mismo post puede servirnos de discusión.

Saludos

Leave a Reply