Génération de classes AS3 depuis Java pour Flex

Génération de classes AS3 depuis Java pour Flex

Posted on 02. juil, 2009 by admin in Blaze DS, eclipse

Une des tâches les plus ingrate mais nécessaire lorsqu’on écrit une application Flex/Java communiquant en RemoteObject, c’est d’écrire les classes AS3 correspondant aux classes Java.
Cela est nécessaire pour que le mécanisme de mapping automatique de Flex fonctionne, mais c’est fastidieux et nécessite une synchronisation permanente.
Heureusement, il existe un certain nombre d’outil de génération automatique. J’en ai découvert un récemment (merci Adrien) qui m’a semblé particulièrement intéressant.

Je vous propose de vous le présenter rapidement (d’après le doc d’installation fournie).

Installation

Récupérer la doc ici ainsi que les jars nécessaires : plugin et annotations .

Jar du plugin:
Ajouter le jar du plugin dans le répertoire plugins de votre Eclipse.

Jar des annotations:
Créer un projet Flex/Java en comme d’habitude, puis faites un clic-droit sur le projet pour ouvrir ses propriétés. Sélectionnez l’élément “Java Build Path” sur la gauche pour pouvoir ajouter le .jar (utilisez le bouton “Add External Jar…”)
dto2fx-add-jar

Configuration

Nous allons maintenant donnez quelques informations à cet utilitaire pour qu’il sache où générer les classes AS3.

Encore dans cette boîte de dialogue, allez dans Java Compiler->Annotation Processing->Factory Path, pour y cocher la case “Enable project specific settings” puis cliquez sur le bouton Apply.
dto2fx-enable-annotation

Toujours dans cette même boîte de dialogue, revenez sur le menu parent (Annotation Processing) pour y ajouter une nouvelle option pour cette annotation.
Cliquez sur le bouton New…
Dans le champ key entrez l’information suivante:
-Acom.faratasystems.dto2fx.output
Dans le champ value entrez indiquez le chemin du répertoire source de où devront être générés vos classes AS3.
dto2fx-annotation-path

Note: C’est ce qu’indique la doc de configuration pour une application Java classique. Pour une application Web, j’ai du ajouter (glisser/déposer) le jar d’annotation dans le répertoire WebContent/WEB-INF/lib pour qu’il soit pris en compte.

Ouf! c’est fini pour la configuration, on va pouvoir coder.

Utilisation de l’outil

Dans le répertoire des sources Java, créer un package vo, puis dedans une classe User avec les propriétés username et password.
Générez les getters/setters.

Au dessus de la classe, ajoutez l’annotation @FXClass ou @FXClass(”<package.classe.flex.NomClasseAS3>”). Sauvegardez pour lancez la compilation et la génération des classes AS3.

package vo;
import com.farata.dto2fx.annotations.FXClass;
//pour générer une classe AS3 du même nom, dans le même package
//il suffit de mettre @FXClass
@FXClass("dto.UserVO")
public class User 
{
	protected String _username;
	protected String _password;
 
	public String getUsername() {
		return _username;
	}
	public void setUsername(String username) {
		_username = username;
	}
	public String getPassword() {
		return _password;
	}
	public void setPassword(String password) {
		_password = password;
	}
}

Faites un refresh du projet pour voir apparaître les classes dans le répertoire des sources flex.
dto2fx-classes-as3

Deux classes AS3 sont générées pour chaque classe Java : _ClasseAS3.as et ClasseAS3.as (qui hérite de _ClasseAS3.as)
Ne modifier sous aucun prétexte la classe _ClasseAS3. Le générateur de code l’écrase à chaque modification de la classe Java.
Par contre vous pouvez modifier la classe ClasseAS3.as

Il existe une annotation @FXIgnore que l’on peut positionner sur les méthodes Java afin qu’elles ne soient pas générées.
Par exemple, un @FXIgnore sur un setter, entrainera la génération d’un accesseur get (et uniquement) côté AS3, pour protéger la classe AS3 contre l’écriture.

Conclusion

Cet utilitaire de génération de classe AS3 m’a paru très pratique car bien intégré à Eclipse. Du coup, une fois sa configuration effectuée, il travaille pour nous de façon quasi transparente.

Dites-moi ce que vous en pensez et si vous connaissez d’autres outils de génération intéressant.

6 Responses to “Génération de classes AS3 depuis Java pour Flex”

  1. Renaud

    02. juil, 2009

    Bonjour,
    Chez nous c’est XDoclet avec une tache ant dans eclipse.

    Merci pour cette nouvelle solution on va l’essayer!

  2. Renaud Heluin

    08. juil, 2009

    Marche bien, rester à tester ça tout au long d’un projet…

    Il manque la possibilité d’ajouter que les classes générée implémentes une ou des interfaces.

  3. Marine_Tools

    15. sept, 2009

    ce que je cherchais, merci

  4. eric goueffon

    17. sept, 2009

    Bonjour,

    c’est uniquement pour liveCycle ou ca fonctionne aussi pour BlazeDS?

  5. Romain

    29. nov, 2009

    J’ai testé le générateur, son fonctionnement a changé depuis l’écriture de ce post, et l’écriture de la documentation officielle : les classe générées implémentent pour moi la classe mx.data.IManaged.

    Or, cette classe fait partie de la bibliothèque fds.swc, introuvable à part dans LiveCicleDataService, que je n’utilise pas.

    Je recherche une version du plugin qui créer les objets AS3 conformément à la documentation, c’est à dire implémentant mx.core.IUID !

    J’ai eu l’occasion de travailler avec GAS3 de GraniteDS, qui à l’avantage d’être open souce, mais qui n’est pas aussi bien intégré à Eclipse.

  6. admin

    04. fév, 2010

    Je dirais même que ça a été fait pour BlazeDS (gratuit alors que LiveCycle ne l’est pas)

Leave a Reply