Skip to content

Instantly share code, notes, and snippets.

@bendem
Created November 23, 2017 20:52
Show Gist options
  • Save bendem/8675b7ca856cdab6c208ff6528850f7f to your computer and use it in GitHub Desktop.
Save bendem/8675b7ca856cdab6c208ff6528850f7f to your computer and use it in GitHub Desktop.
package be.bendem.kek.spring;
import com.fizzed.rocker.RockerModel;
import com.fizzed.rocker.runtime.OutputStreamOutput;
import org.springframework.http.HttpInputMessage;
import org.springframework.http.HttpOutputMessage;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.http.converter.HttpMessageNotWritableException;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Collections;
import java.util.List;
public class RockerMessageConverter implements HttpMessageConverter<RockerModel> {
@Override
public List<MediaType> getSupportedMediaTypes() {
return Collections.singletonList(MediaType.TEXT_HTML);
}
@Override
public boolean canWrite(Class<?> clazz, MediaType mediaType) {
return RockerModel.class.isAssignableFrom(clazz);
}
@Override
public void write(RockerModel rockerModel, MediaType contentType, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {
OutputStream body = outputMessage.getBody();
rockerModel.render((cType, charset) -> new OutputStreamOutput(
cType,
body,
charset
));
}
@Override
public RockerModel read(Class clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException {
throw new HttpMessageNotReadableException("input not supported");
}
@Override
public boolean canRead(Class<?> clazz, MediaType mediaType) {
return false;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment