Enums 如何使用jaxb2基础注释对枚举进行注释?

Enums 如何使用jaxb2基础注释对枚举进行注释?,enums,jaxb,maven-jaxb2-plugin,jaxb2-basics,jaxb2-annotate-plugin,Enums,Jaxb,Maven Jaxb2 Plugin,Jaxb2 Basics,Jaxb2 Annotate Plugin,我使用maven-jaxb2-plugin和jaxb2基础注释插件从我的xsd自动生成pojo。我已经成功地在POJO中生成了注释。我需要对枚举中的方法应用注释,但无法确定如何进行 xsd已经 <xsd:simpleType name="DeliveryStatus"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="DeliveredToTerminal" /&

我使用maven-jaxb2-plugin和jaxb2基础注释插件从我的xsd自动生成pojo。我已经成功地在POJO中生成了注释。我需要对枚举中的方法应用注释,但无法确定如何进行

xsd已经

    <xsd:simpleType name="DeliveryStatus">
    <xsd:restriction base="xsd:string">
        <xsd:enumeration value="DeliveredToTerminal" />
        <xsd:enumeration value="DeliveryUncertain" />
        <xsd:enumeration value="DeliveryImpossible" />
        <xsd:enumeration value="DeliveredToNetwork" />
        <xsd:enumeration value="MessageWaiting" />
        <xsd:enumeration value="DeliveryNotificationNotSupported" />
    </xsd:restriction>
    </xsd:simpleType>
我需要的是向上面的value方法添加JsonValue注释

我尝试了以下和其他一些调整,但在binding.xjb中没有任何效果

<jaxb:bindings node="xs:simpleType[@name='DeliveryStatus']">
    <annox:annotate target="field">
     <annox:annotateEnum annox:class="org.codehaus.jackson.annotate.JsonValue"/>
    </annox:annotate>
</jaxb:bindings> 

有一种叫做annotateEnum的东西吗?它能工作吗?如果能,怎么工作


请帮助。

免责声明:我是本书的作者

是的,有一个
annotateEnum
自定义元素(请参阅)。但它仅将注释应用于enum类本身,即应用于
公共enum DeliveryStatus{…}
。因此,这并不能解决
value()
的问题,目前无法对其进行注释

请在此处提交问题:

在这里有一个测试模式会很好(请给我一个PR):

不幸的是,我不能保证任何到期日。我认为快速获得结果的方法是尝试自己实现它。请参阅代码的这一部分:

您基本上需要添加
annotateEnumValueMethod
处理程序,类似于
annotateEnum
的操作方式。唯一棘手的部分是,您需要注释的不是类而是
value()
方法,但这并不困难。我在这里对PRs开放


希望能有所帮助。

@lexicore希望您能提供帮助谢谢您的快速回复。这是一个模拟器代码,所以我只想做一个小的改动,而不是花很多时间在上面。噢,谢谢你的出色工作!继续:)@KalhariLiyanagama,但请务必提交一个问题。也许我什么时候能找到。感谢您的反馈。:)到目前为止,
annotateEnumValueMethod
已经实现(谢谢@lexicore!),但我无法让它在这个问题中描述的用例中工作。我试过:
@JsonValue@org.codehaus.jackson.annotate.JsonValue@com.fasterxml.jackson.core.annotate.JsonValue
,但没有效果@lexicore,你能给我一个建议吗?谢谢大家!@PavelA请在此处向我发送一份带有复制项目的PR:as
e/enumValue
。我来看看。谢谢你的快速回复。这是一个封闭源代码的项目,所以我将尝试创建一个简单的项目来说明这个问题,然后发送一个PR。
<jaxb:bindings node="xs:simpleType[@name='DeliveryStatus']">
    <annox:annotate target="field">
     <annox:annotateEnum annox:class="org.codehaus.jackson.annotate.JsonValue"/>
    </annox:annotate>
</jaxb:bindings>