Polishing external contribution
Change position and limit on duplicate, rather than source. See gh-30967 Closes gh-32009
This commit is contained in:
parent
969d0bd08b
commit
70004e9ad0
|
@ -37,7 +37,6 @@ import org.springframework.util.ObjectUtils;
|
|||
* @author Arjen Poutsma
|
||||
* @author Juergen Hoeller
|
||||
* @author Brian Clozel
|
||||
* @author Injae Kim
|
||||
* @since 5.0
|
||||
* @see DefaultDataBufferFactory
|
||||
*/
|
||||
|
@ -81,14 +80,16 @@ public class DefaultDataBuffer implements DataBuffer {
|
|||
|
||||
/**
|
||||
* Directly exposes the native {@code ByteBuffer} that this buffer is based
|
||||
* on also updating the {@code ByteBuffer's} position and limit to match
|
||||
* the current {@link #readPosition()} and {@link #writePosition()}.
|
||||
* on. The {@linkplain ByteBuffer#position() position} of the returned
|
||||
* {@code ByteBuffer} is set to the {@linkplain #readPosition() read
|
||||
* position}, and the {@linkplain ByteBuffer#limit()} to the
|
||||
* {@linkplain #writePosition() write position}.
|
||||
* @return the wrapped byte buffer
|
||||
*/
|
||||
public ByteBuffer getNativeBuffer() {
|
||||
this.byteBuffer.position(this.readPosition);
|
||||
this.byteBuffer.limit(this.writePosition);
|
||||
return this.byteBuffer;
|
||||
return this.byteBuffer.duplicate()
|
||||
.position(this.readPosition)
|
||||
.limit(this.writePosition);
|
||||
}
|
||||
|
||||
private void setNativeBuffer(ByteBuffer byteBuffer) {
|
||||
|
|
|
@ -36,20 +36,23 @@ class DefaultDataBufferTests {
|
|||
|
||||
@Test // gh-30967
|
||||
void getNativeBuffer() {
|
||||
DefaultDataBuffer buffer = bufferFactory.allocateBuffer(256);
|
||||
buffer.write("0123456789", StandardCharsets.UTF_8);
|
||||
DefaultDataBuffer dataBuffer = this.bufferFactory.allocateBuffer(256);
|
||||
dataBuffer.write("0123456789", StandardCharsets.UTF_8);
|
||||
|
||||
byte[] result = new byte[7];
|
||||
buffer.read(result);
|
||||
dataBuffer.read(result);
|
||||
assertThat(result).isEqualTo("0123456".getBytes(StandardCharsets.UTF_8));
|
||||
|
||||
ByteBuffer nativeBuffer = buffer.getNativeBuffer();
|
||||
ByteBuffer nativeBuffer = dataBuffer.getNativeBuffer();
|
||||
assertThat(nativeBuffer.position()).isEqualTo(7);
|
||||
assertThat(buffer.readPosition()).isEqualTo(7);
|
||||
assertThat(dataBuffer.readPosition()).isEqualTo(7);
|
||||
assertThat(nativeBuffer.limit()).isEqualTo(10);
|
||||
assertThat(buffer.writePosition()).isEqualTo(10);
|
||||
assertThat(dataBuffer.writePosition()).isEqualTo(10);
|
||||
assertThat(nativeBuffer.capacity()).isEqualTo(256);
|
||||
assertThat(dataBuffer.capacity()).isEqualTo(256);
|
||||
|
||||
release(buffer);
|
||||
|
||||
release(dataBuffer);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue