Question

Je suis à l'aide d' GraniteDS code Actionscript modèles de génération pour que laissez-moi prendre un objet Java et de le convertir à une classe Actionscript.

Il est principalement utilisé pour BlazeDS Java Flash de communication mais je suis en l'adaptant à travailler avec les webservices JSON à l'aide de XStream/LARGUER JSON.

Est-il possible d'utiliser le Granit DS Groovy modèles d'inspecter des annotations sur une classe Java et l'utiliser pour générer le code de liaisons?

Par exemple, j'ai créer un @XStreamAlias de raccourcir le nom de la classe si elle est envoyée via JSON, mais j'ai besoin de mon code Actionscript classes générées à l'appui de ce que bien.

package com.webwars.game;
@XStreamAlias("UnitStack")
public class UnitStack implements Serializable {

Je veux que mon Actionscript code généré à:

package com.webwars.gameplatform.combat.pvp {

    [Bindable]
    [RemoteClass(alias="UnitStack")]
    public class UnitStack extends UnitStackBase {

Est-ce possible avec le groovy modèles?

Je n'arrive pas à trouver toute la documentation sur quelles propriétés sont disponibles dans la GraniteDS Groovy Modèle JavaType?Les documents énumérés sur le GraniteDS site pour JavaType va à une fracture de la Javadoc lien.

Par exemple dans mon haricot.gsp puis-je faire quelque chose comme:

<%

    ///////////////////////////////////////////////////////////////////////////
    // Use the XStreamAlias annotation as the classname

    def alias = jClass.qualifiedName;
    if (jClass.hasAnnotation("XStreamAlias)) {
      alias = jClass.getAnnotation("XStreamAlias");    
    } 

%>

[Bindable]
[RemoteClass(alias="${alias}")]
public class ${jClass.as3Type.name} extends ${jClass.as3Type.name}Base {<%
Était-ce utile?

La solution

J'ai découvert le code source pour le JavaBean.java >> JavaAbstractType.java qui contient une méthode pour obtenir la Classe:

public abstract class JavaAbstractType implements JavaType {
    public Class<?> getType() {
        return type;
    }

Ainsi, dans le Groovy haricot.spg modèle je l'ai modifié pour soutenir XStream alias classes:

<%
    //////////////////////////////////
    /// Check if class has been Aliased by XStream
    def alias = jClass.qualifiedName;
    def actualClass = jClass.type;

    if (jClass.isAnnotationPresent(
                        com.thoughtworks.xstream.annotations.XStreamAlias.class)) {
        com.thoughtworks.xstream.annotations.XStreamAlias xstreamAlias = actualClass.getAnnotation(com.thoughtworks.xstream.annotations.XStreamAlias.class);
        alias = xstreamAlias.value();
    }
%>
[Bindable]
[RemoteClass(alias="${alias}")]
public class ${jClass.as3Type.name} extends ${jClass.as3Type.name}Base {<%
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top