Имея XSD, я могу генерировать из него Java-классы (используя cxf-codegen-plugin и org.jvnet.jaxb2_commons.jaxb2-basics-annotate)
wsdl / фрагмент Service.xsd
<xs:element name="ImportujZpravuRequest">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="Oznameni" nillable="false">
<xs:complexType>
<xs:sequence>
<xs:any minOccurs="1" maxOccurs="1" processContents="lax"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
Генерируемый класс Java
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {"oznameni"})
@XmlRootElement(name = "ImportujZpravuRequest")
public class ImportujZpravuRequest {
@XmlElement(name = "Oznameni", required = true)
protected Oznameni oznameni;
//getters&setters
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {"any"})
public static class Oznameni {
@XmlAnyElement(lax = true)
protected Object any;
//getters&setters
}
Вопрос - как я могу аннотировать поле объекта (xs: any в XSD / Oznameni.любой в классе Java), например, с аннотацией @Deprecated.Я пытался с
<jaxb:bindings schemaLocation="wsdl/Service.xsd">
<jaxb:bindings node="//xs:any">
<annox:annotate target="field">@java.lang.Deprecated</annox:annotate>
</jaxb:bindings>
</jaxb:bindings>
Я могу аннотировать eq Oznameni объект (с измененным определением селектора узла), поэтому конфигурации плагинов должны быть в порядке.И в XSD-файле есть только один, так что XPATH selector тоже должен быть в порядке.Но я получаю следующую ошибку
[ERROR] C:\makro\proj\CZLih\czlih-java\src\main\resources\bindings.xml [11:44]: compiler was unable to honor this annotate customization. It is attached to a wrong place, or its inconsistent with other bindings.
com.sun.istack.SAXParseException2; systemId: file:/C:/makro/proj/CZLih/czlih-java/src/main/resources/bindings.xml; lineNumber: 11; columnNumber: 44; compiler was unable to honor this annotate customization. It is attached to a wrong place, or its inconsistent with other bindings.
...
Любая помощь будет оценена.