Package org.springframework.core.io.buffer

# Class NettyDataBufferFactory

java.lang.Object
org.springframework.core.io.buffer.NettyDataBufferFactory

All Implemented Interfaces:
  `DataBufferFactory`

public class NettyDataBufferFactory extends Object implements DataBufferFactory
Implementation of the `DataBufferFactory` interface based on a Netty 4 `ByteBufAllocator`.

Since:
  5.0
Author:
  Arjen Poutsma, Juergen Hoeller
See Also:
  - `PooledByteBufAllocator`
  - `UnpooledByteBufAllocator`

## Constructor Summary

Constructors
Constructor
Description
`NettyDataBufferFactory(io.netty.buffer.ByteBufAllocator byteBufAllocator)`
Create a new `NettyDataBufferFactory` based on the given factory.

## Method Summary

Modifier and Type
Method
Description
`NettyDataBuffer`
`allocateBuffer()`
Deprecated.
`NettyDataBuffer`
`allocateBuffer(int initialCapacity)`
Allocate a data buffer of the given initial capacity.
`io.netty.buffer.ByteBufAllocator`
`getByteBufAllocator()`
Return the `ByteBufAllocator` used by this factory.
`boolean`
`isDirect()`
Indicates whether this factory allocates direct buffers (i.e.
`DataBuffer`
`join(List<? extends DataBuffer> dataBuffers)`
Return a new `DataBuffer` composed of the `dataBuffers` elements joined together.
`static io.netty.buffer.ByteBuf`
`toByteBuf(DataBuffer dataBuffer)`
Return the given Netty `DataBuffer` as a `ByteBuf`.
`String`
`toString()`
`DataBuffer`
`wrap(byte[] bytes)`
Wrap the given `byte` array in a `DataBuffer`.
`NettyDataBuffer`
`wrap(io.netty.buffer.ByteBuf byteBuf)`
Wrap the given Netty `ByteBuf` in a `NettyDataBuffer`.
`NettyDataBuffer`
`wrap(ByteBuffer byteBuffer)`
Wrap the given `ByteBuffer` in a `DataBuffer`.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Constructor Details

### NettyDataBufferFactory

public NettyDataBufferFactory(io.netty.buffer.ByteBufAllocator byteBufAllocator)
Create a new `NettyDataBufferFactory` based on the given factory.

Parameters:
  `byteBufAllocator` - the factory to use
See Also:
  - `PooledByteBufAllocator`
  - `UnpooledByteBufAllocator`

## Method Details

### getByteBufAllocator

public io.netty.buffer.ByteBufAllocator getByteBufAllocator()
Return the `ByteBufAllocator` used by this factory.

### allocateBuffer

@Deprecated public NettyDataBuffer allocateBuffer()
Deprecated.
Description copied from interface: `DataBufferFactory`
Allocate a data buffer of a default initial capacity. Depending on the underlying implementation and its configuration, this will be heap-based or direct buffer.

Specified by:
  `allocateBuffer` in interface `DataBufferFactory`
Returns:
  the allocated buffer

### allocateBuffer

public NettyDataBuffer allocateBuffer(int initialCapacity)
Description copied from interface: `DataBufferFactory`
Allocate a data buffer of the given initial capacity. Depending on the underlying implementation and its configuration, this will be heap-based or direct buffer.

Specified by:
  `allocateBuffer` in interface `DataBufferFactory`
Parameters:
  `initialCapacity` - the initial capacity of the buffer to allocate
Returns:
  the allocated buffer

### wrap

public NettyDataBuffer wrap(ByteBuffer byteBuffer)
Description copied from interface: `DataBufferFactory`
Wrap the given `ByteBuffer` in a `DataBuffer`. Unlike allocating, wrapping does not use new memory.

Specified by:
  `wrap` in interface `DataBufferFactory`
Parameters:
  `byteBuffer` - the NIO byte buffer to wrap
Returns:
  the wrapped buffer

### wrap

public DataBuffer wrap(byte[] bytes)
Description copied from interface: `DataBufferFactory`
Wrap the given `byte` array in a `DataBuffer`. Unlike allocating, wrapping does not use new memory.

Specified by:
  `wrap` in interface `DataBufferFactory`
Parameters:
  `bytes` - the byte array to wrap
Returns:
  the wrapped buffer

### wrap

public NettyDataBuffer wrap(io.netty.buffer.ByteBuf byteBuf)
Wrap the given Netty `ByteBuf` in a `NettyDataBuffer`.

Parameters:
  `byteBuf` - the Netty byte buffer to wrap
Returns:
  the wrapped buffer

### join

public DataBuffer join(List<? extends DataBuffer> dataBuffers)
Return a new `DataBuffer` composed of the `dataBuffers` elements joined together. Depending on the implementation, the returned buffer may be a single buffer containing all data of the provided buffers, or it may be a true composite that contains references to the buffers.

Note that the given data buffers do not have to be released, as they are released as part of the returned composite.

This implementation uses Netty's `CompositeByteBuf`.

Specified by:
  `join` in interface `DataBufferFactory`
Parameters:
  `dataBuffers` - the data buffers to be composed
Returns:
  a buffer that is composed of the `dataBuffers` argument

### isDirect

public boolean isDirect()
Description copied from interface: `DataBufferFactory`
Indicates whether this factory allocates direct buffers (i.e. non-heap, native memory).

Specified by:
  `isDirect` in interface `DataBufferFactory`
Returns:
  `true` if this factory allocates direct buffers; `false` otherwise

### toByteBuf

public static io.netty.buffer.ByteBuf toByteBuf(DataBuffer dataBuffer)
Return the given Netty `DataBuffer` as a `ByteBuf`.

Returns the native buffer if `dataBuffer` is a `NettyDataBuffer`; returns `Unpooled.wrappedBuffer(ByteBuffer)` otherwise.

Parameters:
  `dataBuffer` - the `DataBuffer` to return a `ByteBuf` for
Returns:
  the netty `ByteBuf`

### toString

public String toString()

Overrides:
  `toString` in class `Object`