Отредактируйте сгенерированную JAXB аннотацию с помощью annox и добавьте пространство имен в param
У меня есть следующая аннотация в сгенерированном классе JAXB
@XmlType(name = "MessageInfoType", propOrder = {
"debugTraceBoolean",
"clientHostnameString",
"endUserIPAddress"
})
Необходимо создать следующую аннотацию в классе JAXB с пользовательским связыванием. То есть необходимо отредактировать вышеупомянутую аннотацию и добавить пространство имен, используя annox, как показано ниже.
@XmlType(name = "MessageInfoType", propOrder = {
"debugTraceBoolean",
"clientHostnameString",
"endUserIPAddress"
}, namespace="urn:expedia:e3:data:messagetypes:defn:v4")
мой файл xjb:
<jaxb:bindings schemaLocation="../../serviceDescription/atlantis/common/com.expedia.e3.data.messagetypes.v4.xsd">
<jaxb:bindings node="//xs:complexType[@name='MessageInfoType']">
<annox:annotate target="field">
<annox:annotate annox:class="javax.xml.bind.annotation.XmlType"
namespace="urn:expedia:e3:data:messagetypes:defn:v4"/>
</annox:annotate>
</jaxb:bindings>
</jaxb:bindings>
1 ответ
Отказ от ответственности: я являюсь автором плагина Annotate.
Если вы попытаетесь добавить аннотацию, которая уже существует (то же местоположение, тот же класс аннотаций), это изменит существующую аннотацию, а не добавит вторую. Я не уверен на данный момент, переопределит ли это все атрибуты или объединит новые, но это определенно стоит попробовать.
Обновить:
Я перепроверил это. Действительно, он реализован (должен быть версии 0.6.4, я только что проверил с 0.6.5-SNAPSHOT).
Проверьте этот образец:
Вот привязка:
<jaxb:bindings node="xs:complexType[@name='issueJIIB39CType']/xs:attribute[@name='test']">
<annox:annotate target="field">
<annox:annotate annox:class="javax.xml.bind.annotation.XmlAttribute" required="false"/>
</annox:annotate>
</jaxb:bindings>
Если эта привязка присутствует, вы получите:
@XmlAttribute(name = "test", required = false)
protected String test;
Если нет, то это будет так:
@XmlAttribute(name = "test", required = true)
protected String test;
Итак, как я сказал, если вы добавите аннотацию в том же месте и в том же классе, они будут объединены.