/* (c) 2017 Open Source Geospatial Foundation - all rights reserved * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.rest.converters; import org.apache.commons.io.IOUtils; import org.springframework.http.HttpInputMessage; import org.springframework.http.HttpOutputMessage; import org.springframework.http.MediaType; import org.springframework.http.converter.HttpMessageNotReadableException; import org.springframework.http.converter.HttpMessageNotWritableException; import java.io.IOException; import java.io.InputStream; /** * Convert InputStream directly to provided output. * * @author Torben Barsballe (Boundless) */ public class InputStreamConverter extends BaseMessageConverter<InputStream> { public InputStreamConverter(){ super(MediaType.ALL); } @Override protected boolean canRead(MediaType mediaType) { return false; } @Override protected boolean supports(Class<?> clazz) { return InputStream.class.isAssignableFrom(clazz); } @Override protected InputStream readInternal(Class<? extends InputStream> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException { throw new HttpMessageNotReadableException(getClass().getName() + " does not support deserialization"); } @Override protected void writeInternal(InputStream inputStream, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException { try { IOUtils.copy(inputStream,outputMessage.getBody()); } finally { inputStream.close(); } } }