IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flex Discussion :

Generer ses objets Java en As via GraniteDS


Sujet :

Flex

  1. #1
    Membre régulier
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2004
    Messages : 204
    Points : 103
    Points
    103
    Par défaut Generer ses objets Java en As via GraniteDS
    Bonjour à tous,

    Aujourd'hui je tente de générer mes objets Java en objet Flex (.as) en passant par le générateur de code automatique offert par GraniteDS :
    http://www.graniteds.org/confluence/...Code+Generator

    Comme d'habitude, tout se passe bien SAUF :
    Il laisse les java.util.TimeZone ou encore les java.util.Connection.

    Evidemment, le compilateur Flex n'aime pas trop ça

    Une idée ?

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Points : 1 710
    Points
    1 710
    Par défaut
    Déjà il faut que tes objets soient serializable.
    Tu as toutes les correspondances dans cette doc.
    Par contre je ne comprend pas très bien pourquoi tu envoies un Connection ou un TimeZone ... Tu es censé convertir de simple JavaBean, c'est le but de Gas3.

  3. #3
    Membre régulier
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2004
    Messages : 204
    Points : 103
    Points
    103
    Par défaut
    J'ai raté des trucs dans la compréhension alors.

    Dans mon code Flex, je veux appeler mes services Java spring.
    Donc en Flex, je suis obliger d'écrire "myService.myMethode(mesParametres)" et en parametre, je passe notamment un le timeZone sélectionné par le client.

    Sachant que j'utilise GraniteDS.

    J'y arrive avec le mxml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     <mx:RemoteObject id="srv" destination="helloWorldService" />
     
        <mx:Panel styleName="Panel" title="Hello World Sample">
            <mx:Label text="Enter your name:"/>
            <mx:TextInput id="nameInput" />
            <mx:Button label="Say Hello" click="srv.myMethod(nameInput.text)"/>
        </mx:Panel>
    Sauf que bien sûr, c'est très moche puisqu'on peut écrire n'importe quoi à la place de "myMethod", il ne le signale pas. Et evidement je veux passer des paramètres plus compliqué à mes méthodes.
    Bref, je suis toujours à la recherche du "comment faire"

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Points : 1 710
    Points
    1 710
    Par défaut
    Dans mon code Flex, je veux appeler mes services Java spring.
    Donc en Flex, je suis obliger d'écrire "myService.myMethode(mesParametres)" et en parametre, je passe notamment un le timeZone sélectionné par le client.
    Mais ton TimeZone il est de quel type côté ActionScript ?
    Je n'ai pas trouvé comment sérializer un TimeZone avec AMF mais je ne pense pas qu'il existe un objet TimeZone côté ActionScript non ?

  5. #5
    Membre averti Avatar de samy2525
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 259
    Points : 310
    Points
    310
    Par défaut TimeZone
    Bonjour voila ce que j'ai trouvé sur ce sujet, je pense aussi qu'il n ya pas l'objet TimeZone en As3


    BlazeDS transfers all Date Objects in UTC time zone and Flash player converts the Date object in UTC time zone to local time zone.

  6. #6
    Membre régulier
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2004
    Messages : 204
    Points : 103
    Points
    103
    Par défaut
    ok très bien merci

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Points : 1 710
    Points
    1 710
    Par défaut
    ok très bien merci
    Euh ... mais tu ne répond pas à la question :
    Mais ton TimeZone il est de quel type côté ActionScript ?
    Il y a probablement d'autres solutions.

  8. #8
    Membre régulier
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2004
    Messages : 204
    Points : 103
    Points
    103
    Par défaut
    Je sais pas de quel type il est.

    Ce que je veux faire depuis une semaine, c'est appeler mes services Java à partir de Flex.
    Côte ActionScript, je n'ai rien, je veux justement savoir de quoi j'ai besoin. Je voudrais faire une fenêtre de login où il choisit son fuseau horaire (timezone) et m'en servir dans les appels à mes services. Vu que timezone n'existe pas en Flex, je suis obligé de mettre "NULL" lors de mes appels à mes services.
    Enfin, tout ceci interviendra bien plus tard, la, écoutez, je pense que ce que je veux faire n'est pas possible. Je parcours le Web depuis une semaine sans succès. Pourtant cela me semblait basique ce que je voulais faire. Appeler une méthode Java dans Flex, et ce, de manière propre.

    Je commence à me résigner.

    Comme je vous l'ai dit dans mon deuxième post, j'ai réussi à mettre en place le HelloWorld de GraniteDS pour communiquer avec un service Java. Mais bon, c'est facile, il prend un String en paramètre leur HelloWorld.

    Donc j'ai remplacé le HelloWorld par un de mes services, en configurant le services-config.xml. Cela fonctionne dans le sens où il reconnait bien le service (RemoteObject) mais cela ne fonctionne pas dans le sens où ce que je dois passer en paramètre est bien plus compliqué qu'un String. c'est un ensemble d'objet Java complexe. C'est pour cela que je me suis tourné vers le code generator.
    Mais quand je génère le code, il y a des timeZone en paramètre de mes services, donc ça foire.

  9. #9
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Points : 1 710
    Points
    1 710
    Par défaut
    Ce sont tes services que tu tentes de transformer en ActionScript ?
    Si c'est le cas je crois qu'on ne s'est pas bien compris la
    Gas3 doit être utilisé pour des JavaBeans on dit aussi ValueObject. Des objets simples et pas des services Spring.
    Pour les services Spring tu as le RemoteObject qui te permet d'appeler à distance tes méthodes.

    Un java bean ne contient que des getters et des setters :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    public class Welcome implements Serializable {
     
        private static final long serialVersionUID = 1L;
     
        @Id @GeneratedValue
        private Integer id;
     
        @Basic
        private String name;
     
        public Welcome() {
        }
     
        public Welcome(String name) {
            this.name = name;
        }
     
        public Integer getId() {
            return id;
        }
     
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    }
    Pour le TimeZone, il n'existe pas en Actionscript mais tu peux faire un service qui récupére le String qu'à sélectionner l'utilisateur dans sa combobox par exemple et le convertir en TimeZone côté Java. Puis faire ton traitement derrière.

  10. #10
    Membre régulier
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2004
    Messages : 204
    Points : 103
    Points
    103
    Par défaut
    Très bien, le Gas Generator ne sert que pour les VO.

    Bon, et alors, juste une question assez importante :
    Comment j'appelle mon service ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     <mx:RemoteObject id="srv" destination="helloWorldService" />
     
        <mx:Panel styleName="Panel" title="Hello World Sample">
            <mx:Label text="Enter your name:"/>
            <mx:TextInput id="nameInput" />
            <mx:Button label="Say Hello" click="srv.myMethod(nameInput.text)"/>
        </mx:Panel>
    1. La je l'appelle en passant en paramètre "nameInput.text", moi je veux y passer en paramètre "MyMethodRequest" composé d'un login, d'un pass, d'un timeZone, d'une locale. Il faut bien que je fasse passé le Gas Generator pour convertir "MyMethodRequest" (objet Java que je passe à mon service) afin de pouvoir l'utiliser dans l'appel de ma méthode en Flex. Oui ou je me trompe complétement ?

    2. "srv.myMethod" cela ne me plait vraiment pas ! srv, il le souligne si je me trompe, pourquoi, parce que "helloWorldService" est défini dans le services-config.xml. Mais quant est-il de "myMethod" ??? Je pourrais écrire "toto" il ne dirait rien. Ce n'est pas très propre comme manière de développer. Y a-t-il une solution ?

    Merci pour ton aide en tout cas !

  11. #11
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Points : 1 710
    Points
    1 710
    Par défaut
    C'est l'un des inconvénients de Flex finalement tu peux écrire n'importe quoi.
    Mais ce que tu peux faire par exemple c'est définir dans le RemoteObject les méthodes que tu utilises :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <mx:RemoteObject id="srv" destination="helloWorldService">
         <mx:method name="myMethod" result="resultHandler(event)" fault="faultHandler(event)"/>
    </mx:RemoteObject>
    Pour ta Request il faudra juste remanier ton objet et l'adapter. Au lieu de fournir un TimeZone tu devras fournir un String par exemple et le convertir en TimeZone en Java comme je l'ai dit précédemment.
    Et c'est cette fameuse Request que tu vas utiliser dans Gas3 mais avec un String ou autre chose à la place du TimeZone.

    J'ai été claire j'espère

  12. #12
    Membre régulier
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2004
    Messages : 204
    Points : 103
    Points
    103
    Par défaut
    Merci, donc pour en revenir au sujet initial sur la génération de code, il faut que je génère avec Gas :
    MyMethodRequest (paramètre d'entrée)
    MyMethodResponse (paramètre de sortie)

    C'est ça, ou j'ai rien compris ?

  13. #13
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Points : 1 710
    Points
    1 710
    Par défaut
    Tu as tout bon
    Mais il faudra juste penser à faire quelque modification pour éliminer tous les objets du genre TimeZone par exemple qui n'existe pas côté ActionScript.
    Je te renvoie vers ce tableau pour que tu saches ce qui est serializable :
    C'est la doc de BlazeDS certes mais GraniteDS et BlazeDS utilise tous les deux le protocole AMF3.

  14. #14
    Membre régulier
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2004
    Messages : 204
    Points : 103
    Points
    103
    Par défaut
    Oki

    Quand tu parles de modification, c'est de quel côté ?

    1. Seulement côté AS pour virer les timezone et mettre des String ? Mais dans ce cas, quand je vais appeler mes services Java, cela ne sera pas les bons paramètres, enfin, je veux dire que les objets ne vont pas "matcher"

    2. De mes dizaines d'API Java qui se servent d'un timezone pour le transformer en String ? Et ainsi la génération seront compatible "Match"

  15. #15
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Points : 1 710
    Points
    1 710
    Par défaut
    Je parle bien du côté Java tu auras quelques modifications à faire.

  16. #16
    Membre régulier
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2004
    Messages : 204
    Points : 103
    Points
    103
    Par défaut
    Ok merci, je vais essayer tout ça

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 10/01/2006, 14h14
  2. [Profiling] Mémoire utilisée par objet java
    Par Bicnic dans le forum Général Java
    Réponses: 2
    Dernier message: 05/01/2006, 09h52
  3. Generer des objets aleatoirement sur une carte
    Par K20 dans le forum Langage
    Réponses: 13
    Dernier message: 24/12/2005, 16h19
  4. [Excel][VBA][Java] Appeler un objet java
    Par ay_pepito dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/07/2005, 15h46
  5. [SAX] Passer d'objet java en fichier XML?
    Par spoutyoyo dans le forum Format d'échange (XML, JSON...)
    Réponses: 15
    Dernier message: 05/01/2005, 08h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo