سؤال

أنا استخدم تمثيليات ActionScript قوالب إنشاء رمز التي دعنا نأخذ كائن Java وتحويله إلى فئة Actioncript.

يستخدم بشكل أساسي للاشجار جافا للاتصالات الفلاش، لكنني أقوم بتكييفها للعمل مع JSON Webservices باستخدام Xstream / Jettison JSON.

هل من الممكن استخدام قوالب الجرانيت DS Groovy لتفقد التعليقات التوضيحية على فئة Java واستخدامها لتوليد ارتباطات التعليمات البرمجية؟

على سبيل المثال، أقوم بإنشاء @ xstrimalias لتقصير اسم الفصل عند إرساله عبر 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 {

هل هذا ممكن مع قوالب groovy؟

لا يبدو لي أن أجد أي وثائق حول الخصائص المتوفرة في Granites Groovy Template Javatype؟ ينتقل الوثائق المدرجة في موقع الجرانات ل JApatype إلى رابط 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. قالب قمت بتعديله لدعم فئات مستعار 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 {<%
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top