1 package com.fasterxml.jackson.databind.ser.std;
2
3 import java.io.IOException;
4
5 import com.fasterxml.jackson.core.*;
6 import com.fasterxml.jackson.databind.JavaType;
7 import com.fasterxml.jackson.databind.JsonMappingException;
8 import com.fasterxml.jackson.databind.JsonSerializable;
9 import com.fasterxml.jackson.databind.SerializerProvider;
10 import com.fasterxml.jackson.databind.annotation.JacksonStdImpl;
11 import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper;
12 import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
13
14
20 @JacksonStdImpl
21 @SuppressWarnings("serial")
22 public class SerializableSerializer
23 extends StdSerializer<JsonSerializable>
24 {
25 public final static SerializableSerializer instance = new SerializableSerializer();
26
27 protected SerializableSerializer() { super(JsonSerializable.class); }
28
29 @Override
30 public boolean isEmpty(SerializerProvider serializers, JsonSerializable value) {
31 if (value instanceof JsonSerializable.Base) {
32 return ((JsonSerializable.Base) value).isEmpty(serializers);
33 }
34 return false;
35 }
36
37 @Override
38 public void serialize(JsonSerializable value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
39 value.serialize(gen, serializers);
40 }
41
42 @Override
43 public final void serializeWithType(JsonSerializable value, JsonGenerator gen, SerializerProvider serializers,
44 TypeSerializer typeSer) throws IOException {
45 value.serializeWithType(gen, serializers, typeSer);
46 }
47
48 @Override
49 public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint)
50 throws JsonMappingException
51 {
52 visitor.expectAnyFormat(typeHint);
53 }
54 }
55