私は、GraniteDS Actionscript コード生成テンプレートを使用しています。これにより、Java オブジェクトを受け取り、それを Actionscript クラスに変換できます。
主に BlazeDS Java から Flash への通信に使用されますが、XStream/JETTISON JSON を使用して JSON Web サービスで動作するように調整しています。
Granite DS Groovy テンプレートを使用して Java クラスのアノテーションを検査し、それを使用してコード バインディングを生成することはできますか?
たとえば、@XStreamAlias を作成して、JSON 経由で送信されるときにクラス名を短縮しますが、それをサポートするために Actionscript で生成されたクラスも必要です。
package com.webwars.game;
@XStreamAlias("UnitStack")
public class UnitStack implements Serializable {
Actionscript で生成されたコードを次のようにしたい:
package com.webwars.gameplatform.combat.pvp {
[Bindable]
[RemoteClass(alias="UnitStack")]
public class UnitStack extends UnitStackBase {
これはグルーヴィーなテンプレートで可能ですか?
GraniteDS Groovy Template JavaType で使用できるプロパティに関するドキュメントが見つからないようです。JavaType の GraniteDS サイトにリストされているドキュメントは、壊れた Javadoc リンクに移動します。
たとえば、私の bean.gsp では次のようなことができます:
<%
///////////////////////////////////////////////////////////////////////////
// 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 {<%