Неправильная аннотация, сгенерированная XJC для расширенного элемента base64Binary - PullRequest
0 голосов
/ 30 мая 2019

У меня есть веб-сервис для экспорта файлов изображений. Сущности веб-службы определены в схеме XSD, и с помощью xjc мы генерируем классы java, используемые в ответе службы.

В XSD изображение определяется как complexType, расширяющий простой тип base64Binary.


<xsd:complexType name="image">
        <xsd:simpleContent>
            <xsd:extension base="xsd:base64Binary">
                <xsd:attribute name="nil" type="xsd:boolean" use="optional"/>
                <xsd:attribute name="overwrite" type="xsd:boolean"
                               use="optional"/>
                <xsd:attribute name="origin" type="xsd:string" use="optional"/>
            </xsd:extension>
        </xsd:simpleContent>
    </xsd:complexType>

С помощью xjc мы генерируем классы java, и я получаю следующее:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "image", propOrder = {
    "value"
})
public class Image {

    @XmlValue
    protected byte[] value;
    @XmlAttribute(name = "nil")
    protected Boolean nil;
    @XmlAttribute(name = "overwrite")
    protected Boolean overwrite;
    @XmlAttribute(name = "origin")
    protected String origin;

Свойство value имеет аннотацию @XMlValue вместо @XmlSchemaType (name = "base64Binary").

При тестировании веб-службы с использованием SoapUI вместо получения строки base64 с изображением я получаю результат toString () изображения байтового массива.

[B @ 11a0f47b

Но если я вручную изменю аннотацию @XmlValue на @XmlSchemaType (name = "base64Binary"), результат будет правильным.

<ns1:value>LzlqLzRBQVFTa1pKUmdBQkFnQUFBUU....</ns1:value>

1 Ответ

0 голосов
/ 30 мая 2019

Попробуйте удалить

<xsd:simpleContent>

в определении типа.

, если не работает, заменить на <xsd:complexContent>

...