tapestry-routing 0.0.1 released!

Here comes yet another beautiful little module called tapestry-routing.

In a nutshell, tapestry-routing allows you to provide your own custom mapping between Tapestry pages and URLs.

Did you ever wanted to change the order of the path params in an URL? now you can!

Let's say you have a page: pages.projects.Members which have 2 parameters in its activation context: (Long projectId, Long memberId) and you want the URL for that page to look like /projects/1/members/1 Just add the @At annotation to you page, like this:

package ...pages.projects;
@At(" /projects/{0}/members/{1}")
public class Members {
void onActivate(Long projectId, Long memberId)

That's it!
tapestry-routing Dispatcher will take care of recognizing incoming requests and dispatching the proper render request
tapestry-routing PageRenderLinkTransformer will do the rest of the work, it will transform every Link for a page render request formatting it according to your route rule.

We really need some feedback, so please give it a try:http://tynamo.org/tapestry-routing+guide

Enjoy!

Tynamo, viejas novedades.

Estoy preparando el anuncio de un nuevo módulo de Tynamo  y esto me da un buen pie para hablar del estado de Tynamo en general.

Desde hace un tiempo ya que Tynamo ha dejado de ser solamente un framework orientado a CRUD, de a poco hemos ido incoporando pequeños módulos orientados principalmente a integrar Tapestry5 con otras librerías de terceros o a proveerlo de pequeñas funcionalidades extra. Todo esto con el fin de armar nuestro propio full stack web framework, pero siempre manteniendo la independencia y simplicidad de los módulos por si se quieren usar por separado.

Al día de hoy nuestros módulos son:

  • tapestry-conversations
  • tapestry-exceptionpage
  • tapestry-hibernate-seedentity
  • tapestry-jbpm
  • tapestry-jpa
  • tapestry-jpa-seedentity
  • tapestry-model
  • tapestry-resteasy
  • tapestry-security
  • tapestry-watchdog
  • tynamo-federatedaccounts

tapestry-model es el módulo principal de Tynamo, ya vamos por la segunda versión y está en producción desde hace un tiempo. De la mano de la Tapestry 5.2 han llegado muchas nuevas features, una de las principales es la validación usando el estandar JSR303, gracias a este estandar la integración de otros proveedores JPA distintos de Hibernate se hace mucho más fácil. Pierce T. Wetter, el autor original de tapestry-jpa se ha unido al equipo de Tynamo y junto con Piero Sartini, quien se ha encargado del módulo tapestry-model-jpa, han logrado que finalmente Tynamo sea completamente independiente de Hibernate.

tapestry-security era el módulo más esperado y en poco tiempo se ha convertido en el más popular. tapestry-security es una integración de Tapestry5 con Shiro. Venimos trabajando en un módulo de seguridad que sea independiente de Spring desde la época de Trails 1.2 cuando Shiro era conocido como JSecurity, hemos acompañado la evolución y los cambios de nombre de Shiro (Jsecurity, Ki , Shiro) y hemos ido madurando el código con ellos. Nuestra primera implementación era un port de tapestry-acegi, basicamente era el mismo código pero en lugar de usar Acegi usábamos Shiro. La solución era muy básica con una sola anotación de seguridad (@Secured) y una estructura de contribuciones a los filtros no muy simple (aunque aún así muy dinámica y flexible) que imitaba las funcionalidades de Acegi sin aportar nada nuevo. Gracias a la contribución de Valentin Erastov (aka: xibyte), rápidamente ampliamos la cantidad y variedad de las anotaciones de seguridad manteniendo esa potente simplicidad que diferencia a Shiro de Acegi. Con lo aprendido en el desarrollo de tapestry-security fuimos a hablar con la gente Shiro. Nos recibieron con los brazos abiertos, Kalle (mi co-lead) se hizo commiter de Shiro y las anotaciones que habíamos creado para tapestry-security pasaron a formar parte del core de Shiro.

Además, Kalle también ha sido nombrado commiter en Tapestry, así que ahora tenemos una pata dentro de Tapestry y otra dentro de Shiro lo que nos deja en una excelente posición para continuar mejorando nuestros módulos.

 

 

 

 

tynamo-federatedaccounts 0.0.1 released!

Para aquellos utilizando el módulo de Tynamo tapestry-security hay un nuevo add-on, llamado tynamo-federatedaccounts, que permite autentificación de usuarios via proveedores externos como Facebook, Twitter, Google, etc...

Esta primera versión de tynamo-federatedaccounts solo incluye la integración con Facebook, pero Google y Twitter están en camino.

A principios de 2010 sufrí en carne propia la pesadilla de la integración con lo que en aquel entonces se llamaba Facebook Connect. Era mi primera aproximación a Facebook (de hecho no tenía ni cuenta de usuario) y pasamos varios meses sufriendo la documentación, los casos extremos y la integración con nuestro modulo de seguridad. Toda esa sangre, sudor y lágrimas hoy se ve resumida en este nuevo add-on, que es tan pero tan fácil de usar que yo no quería liberarlo.

Más información:

 

Espero que les sea útil.

PD:- He estado un poco negligente con el anuncio de los releases de tynamo aquí en el blog. Tenemos varios módulos nuevos e incluso tapestry-security está por sobrepasar en popularidad a nuestro módulo principal. En breve haré un post resumen para ponerme al día.

Barcelona Mobile Open Space

El sábado 19 de Marzo se celebrará en el Citilab un Open Space dedicado al agilismo y al desarrollo de aplicaciones para móviles. Es una iniciativa conjunta entre Agile Barcelona y Catdroid, dos comunidades siempre muy bien dispuestas a esparcir conocimiento y fomentar el encuentro. Otras comunidades de desarrolladores de plataformas móviles han sido convocadas para que sea un evento "muy" heterogéneo. Yo me he postulado (humildemente) para representar a webOS y TabletOS. Además de las oportunidades de networking y aprendizaje, para mi es una excelente oportunidad para experimentar y observar los efectos de la polinización cruzada entre comunidades.

La inscripción ya está abierta y pueden ver más detalles del evento (y el formulario de registro) en la página de Eventbrite!