private Mono<DataBuffer> encodeText(CharSequence text, MediaType mediaType, DataBufferFactory bufferFactory) { Assert.notNull(mediaType.getCharset(), "Expected MediaType with charset"); byte[] bytes = text.toString().getBytes(mediaType.getCharset()); return Mono.defer(() -> Mono.just(bufferFactory.allocateBuffer(bytes.length).write(bytes))); }
private Flux<DataBuffer> getRegionPrefix(DataBufferFactory bufferFactory, byte[] startBoundary, byte[] contentType, ResourceRegion region) { return Flux.defer(() -> Flux.just( bufferFactory.allocateBuffer(startBoundary.length).write(startBoundary), bufferFactory.allocateBuffer(contentType.length).write(contentType), bufferFactory.wrap(ByteBuffer.wrap(getContentRangeHeader(region)))) ); }
private DataBuffer stringBuffer(String value) { byte[] bytes = value.getBytes(StandardCharsets.UTF_8); DataBuffer buffer = this.bufferFactory.allocateBuffer(bytes.length); buffer.write(bytes); return buffer; }
private DataBuffer randomBuffer(int size) { byte[] bytes = new byte[size]; rnd.nextBytes(bytes); DataBuffer buffer = dataBufferFactory.allocateBuffer(size); buffer.write(bytes); return buffer; }
protected DataBuffer byteBuffer(byte[] value) { DataBuffer buffer = this.bufferFactory.allocateBuffer(value.length); buffer.write(value); return buffer; }
private Flux<DataBuffer> toDataBuffers(String s, int length, Charset charset) { byte[] bytes = s.getBytes(charset); List<DataBuffer> dataBuffers = new ArrayList<>(); for (int i = 0; i < bytes.length; i += length) { DataBuffer dataBuffer = this.bufferFactory.allocateBuffer(length); dataBuffer.write(bytes, i, length); dataBuffers.add(dataBuffer); } return Flux.fromIterable(dataBuffers); }
private Mono<DataBuffer> stringBuffer(String value) { return Mono.defer(() -> { byte[] bytes = value.getBytes(StandardCharsets.UTF_8); DataBuffer buffer = this.bufferFactory.allocateBuffer(bytes.length); buffer.write(bytes); return Mono.just(buffer); }); }
private Flux<DataBuffer> getRegionSuffix(DataBufferFactory bufferFactory, String boundaryString) { byte[] endBoundary = getAsciiBytes("\r\n--" + boundaryString + "--"); return Flux.defer(() -> Flux.just( bufferFactory.allocateBuffer(endBoundary.length).write(endBoundary))); }
private Mono<DataBuffer> stringBuffer(String value) { return Mono.defer(() -> { byte[] bytes = value.getBytes(StandardCharsets.UTF_8); DataBuffer buffer = this.bufferFactory.allocateBuffer(bytes.length); buffer.write(bytes); return Mono.just(buffer); }); }
/** * Creates a deferred {@link DataBuffer} containing the given bytes. * @param bytes the bytes that are to be stored in the buffer * @return the deferred buffer */ protected Mono<DataBuffer> dataBuffer(byte[] bytes) { return Mono.defer(() -> { DataBuffer dataBuffer = this.bufferFactory.allocateBuffer(bytes.length); dataBuffer.write(bytes); return Mono.just(dataBuffer); }); }
private Mono<DataBuffer> dataBuffer(Msg msg) { return Mono.defer(() -> { byte[] bytes = msg.toByteArray(); DataBuffer buffer = this.bufferFactory.allocateBuffer(bytes.length); buffer.write(bytes); return Mono.just(buffer); }); }
@Override public Mono<Void> handle(ServerHttpRequest request, ServerHttpResponse response) { return response.writeWith(Flux.just("h", "e", "l", "l", "o") .delayElements(Duration.ofMillis(100)) .publishOn(asyncGroup) .collect(dataBufferFactory::allocateBuffer, (buffer, str) -> buffer.write(str.getBytes()))); } }
@Test public void byteBufferContainsDataBufferChanges() { DataBuffer dataBuffer = createDataBuffer(1); ByteBuffer byteBuffer = dataBuffer.asByteBuffer(0, 1); dataBuffer.write((byte) 'a'); assertEquals(1, byteBuffer.limit()); byte b = byteBuffer.get(); assertEquals('a', b); release(dataBuffer); }
@Test public void writeIsoString() { DataBuffer buffer = createDataBuffer(3); buffer.write("\u00A3", StandardCharsets.ISO_8859_1); byte[] result = new byte[1]; buffer.read(result); assertArrayEquals("\u00A3".getBytes(StandardCharsets.ISO_8859_1), result); release(buffer); }
@Test public void writeUtf8String() { DataBuffer buffer = createDataBuffer(6); buffer.write("Spring", StandardCharsets.UTF_8); byte[] result = new byte[6]; buffer.read(result); assertArrayEquals("Spring".getBytes(StandardCharsets.UTF_8), result); release(buffer); }
@Override public Mono<Void> handle(ServerHttpRequest request, ServerHttpResponse response) { DataBuffer buffer = response.bufferFactory().allocateBuffer(body.length); buffer.write(body); return response.writeAndFlushWith(Flux.just(Flux.just(buffer))); } }
@Test public void writeEmptyString() { DataBuffer buffer = createDataBuffer(1); buffer.write("", StandardCharsets.UTF_8); assertEquals(0, buffer.readableByteCount()); release(buffer); }