2015-01-06 2 views
2

Я использую службу обмена сообщениями, которая возвращает мне ByteBuffer, который содержит некоторые XML, которые я хочу использовать JAXB для десериализации.Использование ByteBuffer с JAXB

Есть ли прямой способ (с помощью JAXBs Unmarshaller) десериализовать ByteBuffer или преобразовать это в строку, а затем десериализовать это единственным способом?

+1

Вы можете найти следующую полезную: http://stackoverflow.com/questions/4332264/оберточной-а-ByteBuffer-с-ан-InputStream –

ответ

1

Это должно быть довольно тривиально, чтобы обернуть ByteBuffer в InputStream, который JAXB должен быть в состоянии принять в качестве входных данных:

public class ByteBufferInputStream extends InputStream { 
    private ByteBuffer byteBuffer; 

    public ByteBufferInputStream(ByteBuffer byteBuffer) { 
     this.byteBuffer = byteBuffer; 
    } 


    @Override 
    public int read() throws IOException { 
     if(byteBuffer.hasRemaining()) { 
      return byteBuffer.get(); 
     } else { 
      return -1; 
     } 
    } 
} 
Смежные вопросы