domingo, 1 de septiembre de 2013

Retomando Jarhalla.


Si bien ya me lo habían comentado, hace un par de semanas comprobé en carne propia que a Jarhalla-local, le hace falta una feature importante.


Y es que, si bien ahora ya puedo encontrar rápidamente en que jar se encuentra tal o cual clase, no existe manera de saber qué métodos y que constructores tiene la clase que he encontrado.

Y, si, la primera pregunta que te haces es : ¿Para que sería útil esto? ¿En que escenario esto puede ayudar?, seguramente has estado lejos del enterprise .... ¡¡¡suertudote!!!


Cuando se realizan despliegues de aplicaciones empresariales, es común que, por definición, los servidores de aplicaciones traigan ya sus propias versiones de ciertos jars; y, también es común que, mientras tu desarrollas, uses los propios; si bien, maven, gradle y demás herramientas de gestión de ciclo de construcción, intentan evitar conflictos (JA!), a veces... y sólo a veces: las cosas no salen de una manera tan sencilla.

Un escenario común es que, una clase este repetida en varios jars, y, que al menos uno de esos jars sea de un versión inferior a la que tu usas, y en consecuencia, si ese jar se ha cargado primero, el método o constructor que tu usas no se va a poder encontrar y en consecuencia.... alcanzas una bonita excepción.
^.^

Lo que suele hacerse en estos casos es , buscar todos los jars que pueden tener esa clase afortunadamente ya tienes a Jarhalla-local para que te ayude ;)- , y localizando los jars, te quedan dos opciones:

  • Revisas el META-INF, localizas la versión del jar, buscas el javadoc y validas que esa versión tenga el método/constructor que requieres.
  • Dices que lo anterior genera poca testosterona, y prefieres usar un decompilador, recuperas el código de esa clase y ... validas exactamente lo mismo: que esa versión tenga método/constructor que requieres.

Y aquí es donde entra el sentido de este Post, el porqué de estas líneas :)

La idea es que, próximamente puedas hacer esta comparación desde Jarhalla-local :)

Pero, como sé que, algunos de ustedes son impacientes, voy colocando aquí la manera en que pueden realizarlo:

Requerimos.

  • Un bean para almacenar la información.
  • Una clase para extraer la información.
  • Una clase para probar que funcione.


Bean para almacenar la información:
Clase Para extraer la información:
Test:

Esto debe generarnos una salida como la siguiente:
Lograr esto requiere únicamente hacer uso del api de reflexión, qué, como pueden ver, no es tan complicada como solemos creer ^.^

Buen inicio de semana a todos.
---
RuGI

Para saber más de Jarhalla-local:




No hay comentarios:

Publicar un comentario