2010-01-14 6 views
1

J'ai une classe Expando dont j'ai besoin pour inspecter ses propriétés à partir de Java. Groovy:Inspecter les propriétés de l'objet Groovy avec la réflexion Java

def worker = new Expando() 
worker.name = "John" 
worker.surname = "Doe" 

En Java:

Introspector.getBeanInfo(groovyObject.getClass()) 

Est-il possible de compiler à l'exécution de la classe de l'objet en Groovy?

Répondre

0

L'Expando est complètement dynamique. Il ne génère aucun getters ou setters de bytecode et ne peut donc pas être utilisé comme JavaBean. De quoi avez-vous besoin pour utiliser le bean introspector? Vous pourriez être en mesure d'implémenter cette logique en utilisant l'expando directement si vous l'écrivez dans Groovy.

+0

Nous utilisons des liaisons optimales pour que le BeanInfo renvoyé par l'introspection contienne les propriétés expando. Groovy est utilisé embarqué pour les petits scripts, dans ce cas est de charger une ligne (un objet GroovyRowResult), mais le conteneur de cet objet est en Java, le même que les autres objets à lier. – escanda

0

Vous pouvez essayer le moteur JSR 223/Script avec Groovy (example here) si vous utilisez Java 6. Il vous permet d'évaluer le code Groovy à partir de Java.

En fonction de l'emplacement/définition de l'Expando, vous pourrait être en mesure d'obtenir ses propriétés en évaluant getProperties() (à partir de Groovy 1.7). J'en ai besoin pour faire des liaisons sur ses propriétés.

+0

Nous utilisons le GroovyClassLoader, puis en utilisant un objet comme d'habitude en Java, le problème est d'inspecter les propriétés du bean du côté Java pour faire des bindings avec de meilleures bindings. – escanda

Questions connexes