All Downloads are FREE. Search and download functionalities are using the official Maven repository.

gov.nasa.pds.api.registry.view.PdsProductTextHtmlSerializer Maven / Gradle / Ivy

There is a newer version: 4.5.6
Show newest version
package gov.nasa.pds.api.registry.view;

import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.nio.charset.Charset;
import org.springframework.http.HttpInputMessage;
import org.springframework.http.HttpOutputMessage;
import org.springframework.http.MediaType;
import org.springframework.http.converter.AbstractHttpMessageConverter;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.http.converter.HttpMessageNotWritableException;

import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.databind.ObjectMapper;

import gov.nasa.pds.model.PdsProduct;

public class PdsProductTextHtmlSerializer extends AbstractHttpMessageConverter {
  public PdsProductTextHtmlSerializer() {
    super(MediaType.TEXT_HTML);
  }

  @Override
  protected boolean supports(Class clazz) {
    return PdsProduct.class.isAssignableFrom(clazz);
  }

  @Override
  protected PdsProduct readInternal(Class clazz,
      HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException {
    return new PdsProduct();
  }

  @Override
  protected void writeInternal(PdsProduct t, HttpOutputMessage outputMessage)
      throws IOException, HttpMessageNotWritableException {
    ObjectMapper mapper = new ObjectMapper();
    outputMessage.getHeaders().setContentType(MediaType.APPLICATION_JSON); // must be before body is fetched
    OutputStream os = outputMessage.getBody();
    OutputStreamWriter wr = new OutputStreamWriter(os, Charset.defaultCharset());
    mapper.setSerializationInclusion(Include.NON_NULL);
    wr.write(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(t));
    wr.close();
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy