public class ResourceHttpMessageWriter extends java.lang.Object implements HttpMessageWriter<Resource>
HttpMessageWriter
that can write a Resource
.
Also an implementation of HttpMessageWriter
with support
for writing one or more ResourceRegion
's based on the HTTP ranges
specified in the request.
For reading to a Resource, use ResourceDecoder
wrapped with
DecoderHttpMessageReader
.
ResourceEncoder
,
ResourceRegionEncoder
,
HttpRange
Modifier and Type | Field and Description |
---|---|
private ResourceEncoder |
encoder |
private java.util.List<MediaType> |
mediaTypes |
private static ResolvableType |
REGION_TYPE |
private ResourceRegionEncoder |
regionEncoder |
Constructor and Description |
---|
ResourceHttpMessageWriter() |
ResourceHttpMessageWriter(int bufferSize) |
Modifier and Type | Method and Description |
---|---|
boolean |
canWrite(ResolvableType elementType,
MediaType mediaType)
Whether the given object type is supported by this writer.
|
private <any> |
encodeAndWriteRegions(<any> publisher,
MediaType mediaType,
ReactiveHttpOutputMessage message,
java.util.Map<java.lang.String,java.lang.Object> hints) |
private static MediaType |
getResourceMediaType(MediaType mediaType,
Resource resource) |
java.util.List<MediaType> |
getWritableMediaTypes()
Return the
MediaType 's that this writer supports. |
private static long |
lengthOf(Resource resource) |
<any> |
write(<any> inputStream,
ResolvableType elementType,
MediaType mediaType,
ReactiveHttpOutputMessage message,
java.util.Map<java.lang.String,java.lang.Object> hints)
Write an given stream of object to the output message.
|
<any> |
write(<any> inputStream,
ResolvableType actualType,
ResolvableType elementType,
MediaType mediaType,
ServerHttpRequest request,
ServerHttpResponse response,
java.util.Map<java.lang.String,java.lang.Object> hints)
Server-side only alternative to
#write(Publisher, ResolvableType, MediaType, ReactiveHttpOutputMessage, Map)
with additional context available. |
private <any> |
writeResource(Resource resource,
ResolvableType type,
MediaType mediaType,
ReactiveHttpOutputMessage message,
java.util.Map<java.lang.String,java.lang.Object> hints) |
private <any> |
writeSingleRegion(ResourceRegion region,
ReactiveHttpOutputMessage message) |
private static java.util.Optional<<any>> |
zeroCopy(Resource resource,
ResourceRegion region,
ReactiveHttpOutputMessage message) |
private static final ResolvableType REGION_TYPE
private final ResourceEncoder encoder
private final ResourceRegionEncoder regionEncoder
private final java.util.List<MediaType> mediaTypes
public ResourceHttpMessageWriter()
public ResourceHttpMessageWriter(int bufferSize)
public boolean canWrite(ResolvableType elementType, @Nullable MediaType mediaType)
HttpMessageWriter
canWrite
in interface HttpMessageWriter<Resource>
elementType
- the type of object to checkmediaType
- the media type for the write, possibly null
true
if writable, false
otherwisepublic java.util.List<MediaType> getWritableMediaTypes()
HttpMessageWriter
MediaType
's that this writer supports.getWritableMediaTypes
in interface HttpMessageWriter<Resource>
public <any> write(<any> inputStream, ResolvableType elementType, @Nullable MediaType mediaType, ReactiveHttpOutputMessage message, java.util.Map<java.lang.String,java.lang.Object> hints)
HttpMessageWriter
write
in interface HttpMessageWriter<Resource>
inputStream
- the objects to writeelementType
- the type of objects in the stream which must have been
previously checked via HttpMessageWriter.canWrite(ResolvableType, MediaType)
mediaType
- the content type for the write, possibly null
to
indicate that the default content type of the writer must be used.message
- the message to write tohints
- additional information about how to encode and writeprivate <any> writeResource(Resource resource, ResolvableType type, @Nullable MediaType mediaType, ReactiveHttpOutputMessage message, java.util.Map<java.lang.String,java.lang.Object> hints)
private static MediaType getResourceMediaType(@Nullable MediaType mediaType, Resource resource)
private static long lengthOf(Resource resource)
private static java.util.Optional<<any>> zeroCopy(Resource resource, @Nullable ResourceRegion region, ReactiveHttpOutputMessage message)
public <any> write(<any> inputStream, @Nullable ResolvableType actualType, ResolvableType elementType, @Nullable MediaType mediaType, ServerHttpRequest request, ServerHttpResponse response, java.util.Map<java.lang.String,java.lang.Object> hints)
HttpMessageWriter
#write(Publisher, ResolvableType, MediaType, ReactiveHttpOutputMessage, Map)
with additional context available.write
in interface HttpMessageWriter<Resource>
actualType
- the actual return type of the method that returned the
value; for annotated controllers, the MethodParameter
can be
accessed via ResolvableType.getSource()
.elementType
- the type of Objects in the input streammediaType
- the content type to use, possibly null
indicating
the default content type of the writer should be used.request
- the current requestresponse
- the current responseMono
that indicates completion of writing or errorprivate <any> writeSingleRegion(ResourceRegion region, ReactiveHttpOutputMessage message)
private <any> encodeAndWriteRegions(<any> publisher, @Nullable MediaType mediaType, ReactiveHttpOutputMessage message, java.util.Map<java.lang.String,java.lang.Object> hints)