JAXB - XJC - التأثير على إنشاء الطبقة التعداد typesafe وأعضاء

StackOverflow https://stackoverflow.com/questions/218067

سؤال

عند تجميع simpleType التالية مع XJC تجميع (من حزمة JAXB) ...

<xs:simpleType name="test">
    <xs:annotation>
        <xs:appinfo>
            <jaxb:typesafeEnumClass/>
        </xs:appinfo>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="4">
        <xs:annotation>
          <xs:appinfo>
            <jaxb:typesafeEnumMember name="FOUR"/>
          </xs:appinfo>
        </xs:annotation>
      </xs:enumeration>      
      <xs:enumeration value="6">
        <xs:annotation>
          <xs:appinfo>
            <jaxb:typesafeEnumMember name="SIX"/>
          </xs:appinfo>
        </xs:annotation>
      </xs:enumeration>
     </xs:restriction>
</xs:simpleType>

وأنا في نهاية المطاف مع التعداد التالية في جافا (بيانات الاستيراد والتعليقات التي تمت إزالتها)

@XmlEnum
public enum Test {

    @XmlEnumValue("4")
    FOUR("4"),
    @XmlEnumValue("6")
    SIX("6");
    private final String value;

    Test(String v) {
        value = v;
    }

    public String value() {
        return value;
    }

    public static Test fromValue(String v) {
        for (Test c: Test.values()) {
            if (c.value.equals(v)) {
                return c;
            }
        }
        throw new IllegalArgumentException(v.toString());
    }

}

وهذا هو بالضبط ما أريد ... إلا للأسلوب public String value(). أتوقع طريقة ليتم استدعاؤها public String getValue() وفقا للاتفاقيات الشمس التسمية. وبهذه الطريقة يمكنني بسهولة استخدامها في JSP الصفحات باستخدام EL. الآن لا بد لي من العمل في طريقي من حوله.

هل لدى أي شخص أي خبرة في مزيد من التغيير والتبديل في تجميع XJC إلى تعداد أكثر فائدة مع طريقة getValue()، بدلا من طريقة value()؟ أم يمكنني إضافة أسلوب أو شيء من هذا؟

وP.S. حدث هذا في V2.0.3 من JAXB. أنا تحميل أحدث نسخة v2.1.8 وانه نفس الشيء هناك ...

هل كانت مفيدة؟

المحلول

لا يوجد شيء في المواصفات JAXB يبدو أن نسمح لهذا التغيير. وأعتقد أن الطريقة الوحيدة للقيام بذلك يكون لكتابة JAXB المساعد.

نصائح أخرى

ويمكنك إنشاء البديل صغيرة من الفئة التي تم إنشاؤها يختلف فقط من واحدة ولدت لاسم هذا الأسلوب. ثم في وقت التشغيل، لديك للتأكد من تحميل الخاص بك البديل بدلا من واحد ولدت، ولعب اللعبة classloader.

وبطبيعة الحال، هذا لا يمكن إلا أن العمل هو XSD الأصلي لا يتغير في كثير من الأحيان.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top