Eugene

Origine du projet

Eugene est né à la suite d'une recherche de générateur de code basé sur un modèle mémoire simple qui s'est terminée par un échec.

Les projets alors étudiés étaient alors entre autres :

  • Jostraca ;

  • EMF ;

  • ...

Le choix de la génération de code par rapport à l'introspection a été fait car la génération code permet de passer par l'étape compilation et donc de validation du code généré. En effet, si le besoin était initialement porté sur de la génération de code Java, Eugene a été pensé pour générer tout type de code.

Côté technique

Eugene permet l'utilisation d'un ensemble de générateurs. Ces générateurs sont abstraits de toute spécificité permettant ainsi de les adapter en fonction des besoins.

Par défaut, Eugene propose trois implantations de ces générateurs :

  • ObjectModelGenerator (génération à partir d'un modèle objet) ;

  • StateModelGenerator (génération à partir d'un modèle d'états) ;

  • UIModelGenerator (génération à partir d'un modèle graphique).

Chacun de ces modèles a ses propres spécificités liés à sa structure et son mode de fonctionnement...

Cependant, ces générateurs sont inutiles sans des templates de génération. Les templates sont les fichiers qui vont permettre de déterminer quel sera le contenu généré en fonction du modèle initial. Grâce à NuitonProcessor ces templates sont écrit avec une sytaxe proche de la syntaxe JSP en imbriquant les portions de code Java avec les portions de code généré. Le rôle de NuitonProcessor est de transformer ces templates en remplaçant la syntaxe JSP par la syntaxe Java correpondante. Les classes Java obtenues peuvent donc être compilées et deviennent autonomes.

Règle ant

Une tâche ant est disponible à l'adresse suivante http://maven-site.nuiton.org/eugene/ant-eugene-task. Il permet l'utilisation depuis Ant de Eugene.

Plugin maven

Un plugin maven est disponnible à l'adresse suivante http://maven-site.nuiton.org/eugene/maven-eugene-plugin . Il permet l'utilisation depuis maven de Eugene.