Skip to content

Commit 54c6bc6

Browse files
committed
... and rest of changes for #2116
1 parent 8261614 commit 54c6bc6

File tree

2 files changed

+24
-13
lines changed

2 files changed

+24
-13
lines changed

src/main/java/com/fasterxml/jackson/databind/ObjectMapper.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -621,7 +621,7 @@ protected ClassIntrospector defaultClassIntrospector() {
621621
* return builder(JsonFactory.builder().build());
622622
*</pre>
623623
*
624-
* @since 2.9
624+
* @since 2.10
625625
*/
626626
@SuppressWarnings("unchecked")
627627
public static <M extends ObjectMapper, B extends MapperBuilder<M,B>> MapperBuilder<M,B> builder() {

src/main/java/com/fasterxml/jackson/databind/ser/std/NumberSerializers.java

+23-12
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
/**
1818
* Container class for serializers used for handling standard JDK-provided
19-
* types.
19+
* primitve number types and their wrapper counterparts (like {@link java.lang.Integer}).
2020
*/
2121
@SuppressWarnings("serial")
2222
public class NumberSerializers {
@@ -46,8 +46,19 @@ public static void addAll(Map<String, JsonSerializer<?>> allDeserializers) {
4646
/**********************************************************
4747
*/
4848

49-
protected abstract static class Base<T> extends StdScalarSerializer<T>
50-
implements ContextualSerializer {
49+
/**
50+
* Shared base class for actual primitive/wrapper number serializers.
51+
* Note that this class is not meant as general-purpose base class nor
52+
* is it part of public API: you may extend it with the caveat that not
53+
* being part of public API its implementation and interfaces may change
54+
* in minor releases; however deprecation markers will be used to allow
55+
* code evolution.
56+
*<p>
57+
* NOTE: {@code public} since 2.10: previously had {@code protected} access.
58+
*/
59+
public abstract static class Base<T> extends StdScalarSerializer<T>
60+
implements ContextualSerializer
61+
{
5162
protected final JsonParser.NumberType _numberType;
5263
protected final String _schemaType;
5364
protected final boolean _isInt;
@@ -101,7 +112,7 @@ public JsonSerializer<?> createContextual(SerializerProvider prov,
101112
*/
102113

103114
@JacksonStdImpl
104-
public final static class ShortSerializer extends Base<Object> {
115+
public static class ShortSerializer extends Base<Object> {
105116
final static ShortSerializer instance = new ShortSerializer();
106117

107118
public ShortSerializer() {
@@ -119,14 +130,14 @@ public void serialize(Object value, JsonGenerator gen,
119130
* This is the special serializer for regular {@link java.lang.Integer}s
120131
* (and primitive ints)
121132
* <p>
122-
* Since this is one of "native" types, no type information is ever included
123-
* on serialization (unlike for most scalar types)
133+
* Since this is one of "natural" types, no type information is ever included
134+
* on serialization (unlike for most scalar types, except for {@code double}.
124135
* <p>
125136
* NOTE: as of 2.6, generic signature changed to Object, to avoid generation
126137
* of bridge methods.
127138
*/
128139
@JacksonStdImpl
129-
public final static class IntegerSerializer extends Base<Object> {
140+
public static class IntegerSerializer extends Base<Object> {
130141
public IntegerSerializer(Class<?> type) {
131142
super(type, JsonParser.NumberType.INT, "integer");
132143
}
@@ -153,7 +164,7 @@ public void serializeWithType(Object value, JsonGenerator gen,
153164
* calling {@link java.lang.Number#intValue}.
154165
*/
155166
@JacksonStdImpl
156-
public final static class IntLikeSerializer extends Base<Object> {
167+
public static class IntLikeSerializer extends Base<Object> {
157168
final static IntLikeSerializer instance = new IntLikeSerializer();
158169

159170
public IntLikeSerializer() {
@@ -168,7 +179,7 @@ public void serialize(Object value, JsonGenerator gen,
168179
}
169180

170181
@JacksonStdImpl
171-
public final static class LongSerializer extends Base<Object> {
182+
public static class LongSerializer extends Base<Object> {
172183
public LongSerializer(Class<?> cls) {
173184
super(cls, JsonParser.NumberType.LONG, "number");
174185
}
@@ -181,7 +192,7 @@ public void serialize(Object value, JsonGenerator gen,
181192
}
182193

183194
@JacksonStdImpl
184-
public final static class FloatSerializer extends Base<Object> {
195+
public static class FloatSerializer extends Base<Object> {
185196
final static FloatSerializer instance = new FloatSerializer();
186197

187198
public FloatSerializer() {
@@ -200,10 +211,10 @@ public void serialize(Object value, JsonGenerator gen,
200211
* primitive doubles)
201212
* <p>
202213
* Since this is one of "native" types, no type information is ever included
203-
* on serialization (unlike for most scalar types as of 1.5)
214+
* on serialization (unlike for most scalar types other than {@code long}).
204215
*/
205216
@JacksonStdImpl
206-
public final static class DoubleSerializer extends Base<Object> {
217+
public static class DoubleSerializer extends Base<Object> {
207218
public DoubleSerializer(Class<?> cls) {
208219
super(cls, JsonParser.NumberType.DOUBLE, "number");
209220
}

0 commit comments

Comments
 (0)