Java 클래스에서 Granite DS ActionScript 코드 생성을 사용자 정의합니다
-
18-09-2019 - |
문제
사용 중입니다 Graniteds ActionScript 코드 생성 템플릿 Java 객체를 가져 와서 Actionscript 클래스로 변환하겠습니다.
주로 Blazeds Java to Flash Communication에 사용되지만 XStream/Jettison JSON을 사용하여 JSON 웹 서비스와 함께 작동하도록 조정하고 있습니다.
Granite DS Groovy 템플릿을 사용하여 Java 클래스에서 주석을 검사하고 코드 바인딩을 생성하는 데 사용할 수 있습니까?
예를 들어 @xstreamalias를 작성하여 JSON을 통해 보낸 클래스 이름을 단축 시키지만이를 지원하려면 ActionScript 생성 클래스가 필요합니다.
package com.webwars.game;
@XStreamAlias("UnitStack")
public class UnitStack implements Serializable {
내 액션 스크립트가 생성 된 코드가되기를 원합니다.
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 {<%
해결책
Javabean.java >>의 소스 코드를 발견했습니다 javaabstracttype.java 수업을받는 메소드가 포함되어 있습니다.
public abstract class JavaAbstractType implements JavaType {
public Class<?> getType() {
return type;
}
그래서 그루비에서 bean.gsp 템플릿 I Xstream Aliased 클래스를 지원하도록 수정했습니다.
<%
//////////////////////////////////
/// 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 {<%
제휴하지 않습니다 StackOverflow