Personalización de Granito DS Actionscript generación de código a partir de las clases de Java
-
18-09-2019 - |
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 {<%
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 {<%