1 package com.fasterxml.jackson.databind.ser;
2
3 import java.io.IOException;
4 import java.util.Set;
5
6 import com.fasterxml.jackson.core.JsonGenerator;
7 import com.fasterxml.jackson.databind.*;
8 import com.fasterxml.jackson.databind.ser.impl.BeanAsArraySerializer;
9 import com.fasterxml.jackson.databind.ser.impl.ObjectIdWriter;
10 import com.fasterxml.jackson.databind.ser.impl.UnwrappingBeanSerializer;
11 import com.fasterxml.jackson.databind.ser.std.BeanSerializerBase;
12 import com.fasterxml.jackson.databind.util.NameTransformer;
13
14
26 public class BeanSerializer
27 extends BeanSerializerBase
28 {
29 private static final long serialVersionUID = 29;
30
31
36
37
42 public BeanSerializer(JavaType type, BeanSerializerBuilder builder,
43 BeanPropertyWriter[] properties, BeanPropertyWriter[] filteredProperties)
44 {
45 super(type, builder, properties, filteredProperties);
46 }
47
48
53 protected BeanSerializer(BeanSerializerBase src) {
54 super(src);
55 }
56
57 protected BeanSerializer(BeanSerializerBase src,
58 ObjectIdWriter objectIdWriter) {
59 super(src, objectIdWriter);
60 }
61
62 protected BeanSerializer(BeanSerializerBase src,
63 ObjectIdWriter objectIdWriter, Object filterId) {
64 super(src, objectIdWriter, filterId);
65 }
66
67 protected BeanSerializer(BeanSerializerBase src, Set<String> toIgnore) {
68 super(src, toIgnore);
69 }
70
71
72 protected BeanSerializer(BeanSerializerBase src,
73 BeanPropertyWriter[] properties, BeanPropertyWriter[] filteredProperties) {
74 super(src, properties, filteredProperties);
75 }
76
77
82
83
86 @Deprecated
87 public static BeanSerializer createDummy(JavaType forType)
88 {
89 return new BeanSerializer(forType, null, NO_PROPS, null);
90 }
91
92
98 public static BeanSerializer createDummy(JavaType forType, BeanSerializerBuilder builder)
99 {
100 return new BeanSerializer(forType, builder, NO_PROPS, null);
101 }
102
103 @Override
104 public JsonSerializer<Object> unwrappingSerializer(NameTransformer unwrapper) {
105 return new UnwrappingBeanSerializer(this, unwrapper);
106 }
107
108 @Override
109 public BeanSerializerBase withObjectIdWriter(ObjectIdWriter objectIdWriter) {
110 return new BeanSerializer(this, objectIdWriter, _propertyFilterId);
111 }
112
113 @Override
114 public BeanSerializerBase withFilterId(Object filterId) {
115 return new BeanSerializer(this, _objectIdWriter, filterId);
116 }
117
118 @Override
119 protected BeanSerializerBase withIgnorals(Set<String> toIgnore) {
120 return new BeanSerializer(this, toIgnore);
121 }
122
123 @Override
124 protected BeanSerializerBase withProperties(BeanPropertyWriter[] properties,
125 BeanPropertyWriter[] filteredProperties) {
126 return new BeanSerializer(this, properties, filteredProperties);
127 }
128
129
135 @Override
136 protected BeanSerializerBase asArraySerializer()
137 {
138
144 if ((_objectIdWriter == null)
145 && (_anyGetterWriter == null)
146 && (_propertyFilterId == null)
147 ) {
148 return new BeanAsArraySerializer(this);
149 }
150
151 return this;
152 }
153
154
159
160
165 @Override
166 public final void serialize(Object bean, JsonGenerator gen, SerializerProvider provider)
167 throws IOException
168 {
169 if (_objectIdWriter != null) {
170 gen.setCurrentValue(bean);
171 _serializeWithObjectId(bean, gen, provider, true);
172 return;
173 }
174 gen.writeStartObject(bean);
175 if (_propertyFilterId != null) {
176 serializeFieldsFiltered(bean, gen, provider);
177 } else {
178 serializeFields(bean, gen, provider);
179 }
180 gen.writeEndObject();
181 }
182
183
188
189 @Override public String toString() {
190 return "BeanSerializer for "+handledType().getName();
191 }
192 }
193