Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Spring Boot (RestController) - support for application/octet-stream using InputStream
/**
* Adds support for application/octet-stream through a RestController using streams.
*/
@Configuration
class WebConfig extends WebMvcConfigurationSupport {
@Override
protected void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(new AbstractHttpMessageConverter<InputStream>(MediaType.APPLICATION_OCTET_STREAM) {
protected boolean supports(Class<?> clazz) {
return InputStream.isAssignableFrom(clazz)
}
protected InputStream readInternal(Class<? extends InputStream> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException {
return inputMessage.body
}
protected void writeInternal(InputStream inputStream, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {
IOUtils.copy(inputStream, outputMessage.body)
}
})
super.configureMessageConverters(converters);
}
}
@benoitdevos
Copy link

benoitdevos commented Oct 30, 2017

Thanks for this, really useful. Note that I made a Java version from the groovy one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment