문제

사용 중입니다 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 {<%
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top