Jaxb解组具有Java超抽象类的枚举-未生成枚举值

时间:2018-08-28 08:55:44

标签: java xml xsd jaxb

我有一个必须遵循的Web服务标准,有一个xsd并想生成Java类。某些带有枚举的类是正确生成的,但有些是空的并且没有值。

例如这个

<xsd:simpleType name="ST_Month">
  <xsd:restriction base="xsd:string">
     <xsd:enumeration value="01">
        <xsd:annotation>
           <xsd:documentation xml:lang="de">January</xsd:documentation>
        </xsd:annotation>
     </xsd:enumeration>
     <xsd:enumeration value="02">
        <xsd:annotation>
           <xsd:documentation xml:lang="de">February</xsd:documentation>
        </xsd:annotation>
     </xsd:enumeration>
     ...
  </xsd:restriction>
</xsd:simpleType>

正确生成为

@XmlType(name = "ST_Month")
@XmlEnum
public enum STMonth {
   /**January */
   @XmlEnumValue("01")
   VALUE_1("01"),

   /** February */
   @XmlEnumValue("02")
   VALUE_2("02"),
    ...
 }

但是某些枚举具有这样的抽象超类:

<xsd:complexType name="STE_Country" abstract="true">
   <xsd:simpleContent>
      <xsd:extension base="xsd:string"/>
   </xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="STE_CountryBasic" final="#all">
   <xsd:simpleContent>
      <xsd:restriction base="dt:STE_Country">
         <xsd:enumeration value="01">
            <xsd:annotation>
               <xsd:documentation>USA</xsd:documentation>
            </xsd:annotation>
         </xsd:enumeration>
         <xsd:enumeration value="02">
            <xsd:annotation>
               <xsd:documentation>GERMANY</xsd:documentation>
            </xsd:annotation>
         </xsd:enumeration>
      </xsd:restriction>
   </xsd:simpleContent>
</xsd:complexType>

生成的结果是这样的:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "STE_CountryBasic")
public class STECountryBasic extends STECountry
{
}

我还为自己的'MyOwnCountry'添加了自己的complexType,其中包含STE_Country中缺少但应用程序需要的国家/地区值。但是生成的类与STECountryBasic的空结果相同。

我该怎么办才能生成STECountryBasic中的枚举值?

另外,我正在使用cxf-codegen-plugin通过maven生成

0 个答案:

没有答案