Jaxb unmarshall enum с абстрактным суперклассом для Java - enum-value не генерируется - PullRequest
0 голосов
/ 28 августа 2018

У меня есть стандарт веб-сервиса, которому я должен следовать, получил 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
{
}

Я также добавил свой собственный complexType для 'MyOwnCountry' со значениями стран, которые отсутствуют в STE_Country, но необходимы в моем приложении. Но сгенерированный класс - это тот же пустой результат, что и STECountryBasic.

Что мне нужно сделать, чтобы сгенерированные значения в STECountryBasic генерировались?

Кроме того, я генерирую через maven с помощью cxf-codegen-plugin

...