Domanda

Sto utilizzando GraniteDS codice Actionscript generazione di modelli che mi fa prendere un oggetto Java e convertirlo in una classe Actionscript.

E ' utilizzato principalmente per BlazeDS Java e Flash di comunicazione, ma mi sto adattando a lavorare con JSON webservices con XStream/JETTISON JSON.

È possibile utilizzare il Granito DS Groovy modelli di ispezionare le annotazioni in una classe Java da utilizzare per generare il codice di associazioni?

Per esempio, creo un @XStreamAlias per abbreviare il nome della classe quando inviate tramite JSON, ma ho bisogno dei miei Actionscript classi generate per sostenere che.

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

Voglio che il mio Actionscript codice generato:

package com.webwars.gameplatform.combat.pvp {

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

Questo è possibile con il groovy modelli?

Io non riesco a trovare alcuna documentazione su ciò che le proprietà sono disponibili in GraniteDS Groovy Modello JavaType?La documentazione elencati sul GraniteDS sito per JavaType va rotto Javadoc link.

Per esempio nel mio fagiolo.gsp posso fare qualcosa di simile:

<%

    ///////////////////////////////////////////////////////////////////////////
    // 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 {<%
È stato utile?

Soluzione

Ho scoperto il codice sorgente per il JavaBean.java >> JavaAbstractType.java che contiene un metodo per ottenere la Classe:

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

Così nel Groovy bean.gsp il modello l'ho modificata per supportare XStream alias classi:

<%
    //////////////////////////////////
    /// 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 {<%
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top