JaxB - установка значений HexBinary - PullRequest
1 голос
/ 04 октября 2011

Я пытаюсь вызвать простой сервис XML через HTTP, используя spring и jaxb. Служба имеет один из своих атрибутов запроса как

JAXB генерирует соответствующий объект-оболочку Java как

/**
 * Gets the value of the version property.
 * 
 * @return
 *     possible object is
 *     {@link String }
 *     
 */
public byte[] getVersion() {
    return version;
}

/**
 * Sets the value of the version property.
 * 
 * @param value
 *     allowed object is
 *     {@link String }
 *     
 */
public void setVersion(byte[] value) {
    this.version = ((byte[]) value);
}

Здесь моя версия на самом деле длинная внутренне, хотя служба определила ее как hexbinary. У меня нет контроля над реализацией службы для преобразования типа из шестнадцатеричного в unsignedint.

При отправке запроса в службу я хотел бы установить номер версии как myBean.setVersion (12 в байтах), где 12 - просто длинное число. Как преобразовать long в byte [], чтобы можно было вызывать setVersion ();

Спасибо, Шив.

1 Ответ

2 голосов
/ 26 июня 2012
byte[] longToBytes(long value) {
    final byte[] bytes = new byte[8];
    for (int i = bytes.length - 1; i >= 0; i--) {
        bytes[i] = (byte)(value & 0xFF);
        value >>>= 8;
    }
}

Связывание по умолчанию для byte[]: xsd:base64Binary.

Вы можете изменить его как

@XmlElement
@XmlSchemaType(name="hexBinary")
public byte[] getVersion() {
    return version;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...