Pregunta

Estoy usando GraniteDS las plantillas de generación de código Actionscript eso me permite tomar un objeto Java, y convertirlo en una clase de Actionscript.

Se utiliza principalmente para la BlazeDS Java, Flash de la comunicación, pero me estoy adaptando a trabajar con JSON webservices utilizando XStream/DESHACERSE de JSON.

Es posible el uso de Granito DS Groovy plantillas para inspeccionar las anotaciones en una clase de Java y el uso que para generar el código de los enlaces?

Por ejemplo, puedo crear un @XStreamAlias para acortar el nombre de la clase cuando se envían a través de JSON, pero necesito mi Actionscript clases generadas para apoyar eso.

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

Quiero que mi Actionscript código generado a ser:

package com.webwars.gameplatform.combat.pvp {

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

Es esto posible con el groovy plantillas?

Me parece que no puede encontrar ninguna documentación sobre cuáles son las propiedades que están disponibles en el GraniteDS Groovy Plantilla JavaType?La documentación indicada en el GraniteDS sitio para JavaType va a estropear el Javadoc de enlace.

Por ejemplo en mi bean.gsp puedo hacer algo como:

<%

    ///////////////////////////////////////////////////////////////////////////
    // 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 {<%
¿Fue útil?

Solución

descubrí código fuente para el JavaBean.java >> JavaAbstractType.java que contiene un método para obtener la Clase:

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

Así que en el maravilloso bean.gsp Plantilla de lo modifico para apoyar las clases alias XStream:

<%
    //////////////////////////////////
    /// 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 {<%
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top