Spring Messaging usage of Jackson to Serialize Outgoing Messages: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
(Created page with "<syntaxhighlight lang='java'> package org.springframework.messaging.converter; public class MappingJackson2MessageConverter extends AbstractMessageConverter { ... @Over...")
 
No edit summary
 
Line 1: Line 1:
=Internal=
* [[Spring_Cloud_Stream#Serialization|Spring Cloud Stream]]
* [[Jackson_ObjectMapper#Usage_Examples|Jackson ObjectMapper]]
=Example=
<syntaxhighlight lang='java'>
<syntaxhighlight lang='java'>
package org.springframework.messaging.converter;
package org.springframework.messaging.converter;

Latest revision as of 21:48, 14 November 2018

Internal

Example

package org.springframework.messaging.converter;

public class MappingJackson2MessageConverter extends AbstractMessageConverter {

  ...

  @Override
  @Nullable
  protected Object convertToInternal(Object payload, @Nullable MessageHeaders headers,	@Nullable Object conversionHint) {
    try {
      Class<?> view = getSerializationView(conversionHint);
      if (byte[].class == getSerializedPayloadClass()) {
       ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
       JsonEncoding encoding = getJsonEncoding(getMimeType(headers));
       JsonGenerator generator = this.objectMapper.getFactory().createGenerator(out, encoding);
       if (view != null) {
         this.objectMapper.writerWithView(view).writeValue(generator, payload);
       }
       else {
         this.objectMapper.writeValue(generator, payload);
       }
       payload = out.toByteArray();
     }
     else {
       Writer writer = new StringWriter();
       if (view != null) {
         this.objectMapper.writerWithView(view).writeValue(writer, payload);
       }
       else {
         this.objectMapper.writeValue(writer, payload);
       }
       payload = writer.toString();
    }
  }
  catch (IOException ex) {
    throw new MessageConversionException("Could not write JSON: " + ex.getMessage(), ex);
  }
  return payload;
}