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