Skip to content
This repository was archived by the owner on Nov 7, 2019. It is now read-only.

Commit f3f4db1

Browse files
committed
Merge branch '2.6'
Conflicts: pom.xml release-notes/VERSION src/main/java/com/fasterxml/jackson/datatype/jdk8/OptionalSerializer.java
2 parents 0dfdd27 + fcf91b3 commit f3f4db1

File tree

4 files changed

+47
-7
lines changed

4 files changed

+47
-7
lines changed

.gitattributes

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Do not merge `pom.xml` from older version, as it will typically conflict
2+
3+
pom.xml merge=ours

pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ JDK 8 data types.
2222
</scm>
2323
<properties>
2424
<version.jackson.core>2.7.3</version.jackson.core>
25+
2526
<!-- explicitly target JDK 8 -->
2627
<javac.src.version>1.8</javac.src.version>
2728
<javac.target.version>1.8</javac.target.version>

release-notes/VERSION

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@ Project: jackson-datatype-jdk8
44
=== Releases ===
55
------------------------------------------------------------------------
66

7+
2.7.4 (not yet release)
8+
9+
#31: Support `@JsonSerialize(contentUsing=)` and `@JsonDeserialize(contentUsing=)`
10+
for `Optional`
11+
(reported by selenareneephillips)
12+
713
2.7.3 (16-Mar-2016)
814
2.7.2 (27-Feb-2016)
915
2.7.1 (02-Feb-2016)
@@ -15,7 +21,13 @@ No changes since 2.7.0
1521
#18: Allow use of `@JsonInclude(content=Include.NON_EMPTY)` with `Optional<>`
1622
(requested by James L)
1723

18-
2.6.4 (not yet released)
24+
2.6.6 (not yet released)
25+
26+
2.6.5 (19-Jan-2016)
27+
28+
No changes since 2.6.4.
29+
30+
2.6.4 (07-Dec-2015)
1931

2032
#20: fails to serialize empty Optional with @JsonUnwrapped annotation
2133
(reported by Peter R, osi@github)

src/main/java/com/fasterxml/jackson/datatype/jdk8/OptionalSerializer.java

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import com.fasterxml.jackson.databind.*;
1111
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
1212
import com.fasterxml.jackson.databind.introspect.Annotated;
13+
import com.fasterxml.jackson.databind.introspect.AnnotatedMember;
1314
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper;
1415
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
1516
import com.fasterxml.jackson.databind.ser.ContextualSerializer;
@@ -137,14 +138,17 @@ public JsonSerializer<?> createContextual(SerializerProvider provider,
137138
if (vts != null) {
138139
vts = vts.forProperty(property);
139140
}
140-
JsonSerializer<?> ser = _valueSerializer;
141+
JsonSerializer<?> ser = findContentSerializer(provider, property);
141142
if (ser == null) {
142-
// A few conditions needed to be able to fetch serializer here:
143-
if (_useStatic(provider, property, _referredType)) {
144-
ser = _findSerializer(provider, _referredType, property);
143+
ser = _valueSerializer;
144+
if (ser == null) {
145+
// A few conditions needed to be able to fetch serializer here:
146+
if (_useStatic(provider, property, _referredType)) {
147+
ser = _findSerializer(provider, _referredType, property);
148+
}
149+
} else {
150+
ser = provider.handlePrimaryContextualization(ser, property);
145151
}
146-
} else {
147-
ser = provider.handlePrimaryContextualization(ser, property);
148152
}
149153
// Also: may want to have more refined exclusion based on referenced value
150154
JsonInclude.Include contentIncl = _contentInclusion;
@@ -325,4 +329,24 @@ private final JsonSerializer<Object> _findSerializer(SerializerProvider provider
325329
{
326330
return provider.findTypedValueSerializer(type, true, prop);
327331
}
332+
333+
// !!! 22-Mar-2016, tatu: Method added in jackson-databind 2.7.4; may be used
334+
// when we go 2.8
335+
protected JsonSerializer<?> findContentSerializer(SerializerProvider serializers,
336+
BeanProperty property)
337+
throws JsonMappingException
338+
{
339+
if (property != null) {
340+
// First: if we have a property, may have property-annotation overrides
341+
AnnotatedMember m = property.getMember();
342+
final AnnotationIntrospector intr = serializers.getAnnotationIntrospector();
343+
if (m != null) {
344+
Object serDef = intr.findContentSerializer(m);
345+
if (serDef != null) {
346+
return serializers.serializerInstance(m, serDef);
347+
}
348+
}
349+
}
350+
return null;
351+
}
328352
}

0 commit comments

Comments
 (0)