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

Commit 21d3908

Browse files
committed
Additional unit testing
1 parent 0b85784 commit 21d3908

File tree

8 files changed

+78
-9
lines changed

8 files changed

+78
-9
lines changed

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
import com.fasterxml.jackson.core.JsonParser;
77
import com.fasterxml.jackson.core.JsonToken;
8-
98
import com.fasterxml.jackson.databind.*;
109
import com.fasterxml.jackson.databind.deser.ContextualDeserializer;
1110
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
@@ -36,11 +35,18 @@ public OptionalDeserializer(JavaType fullType, JavaType refType,
3635
}
3736

3837
@Override
38+
@Deprecated
3939
public JavaType getValueType() { return _fullType; }
4040

4141
@Override
42+
@Deprecated
4243
public Optional<?> getNullValue() { return Optional.empty(); }
4344

45+
@Override
46+
public Optional<?> getNullValue(DeserializationContext ctxt) {
47+
return Optional.empty();
48+
}
49+
4450
/**
4551
* Overridable fluent factory method used for creating contextual
4652
* instances.

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,16 @@ public OptionalDoubleDeserializer() {
1818
}
1919

2020
@Override
21+
@Deprecated
2122
public OptionalDouble getNullValue() {
2223
return OptionalDouble.empty();
2324
}
2425

26+
@Override
27+
public OptionalDouble getNullValue(DeserializationContext ctxt) {
28+
return OptionalDouble.empty();
29+
}
30+
2531
@Override
2632
public OptionalDouble deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException {
2733
return OptionalDouble.of(jp.getValueAsDouble());

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,18 @@ public OptionalIntDeserializer() {
1818
}
1919

2020
@Override
21+
@Deprecated // since 2.6
2122
public OptionalInt getNullValue() {
2223
return OptionalInt.empty();
2324
}
2425

2526
@Override
26-
public OptionalInt deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException
27-
{
27+
public OptionalInt getNullValue(DeserializationContext ctxt) {
28+
return OptionalInt.empty();
29+
}
30+
31+
@Override
32+
public OptionalInt deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException {
2833
return OptionalInt.of(jp.getValueAsInt());
2934
}
3035
}

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.fasterxml.jackson.datatype.jdk8;
22

33
import java.io.IOException;
4-
import java.util.OptionalDouble;
54
import java.util.OptionalInt;
65

76
import com.fasterxml.jackson.core.JsonGenerator;

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,18 @@ public OptionalLongDeserializer() {
1818
}
1919

2020
@Override
21+
@Deprecated
2122
public OptionalLong getNullValue() {
2223
return OptionalLong.empty();
2324
}
2425

2526
@Override
26-
public OptionalLong deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException
27-
{
27+
public OptionalLong getNullValue(DeserializationContext ctxt) {
28+
return OptionalLong.empty();
29+
}
30+
31+
@Override
32+
public OptionalLong deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException {
2833
return OptionalLong.of(jp.getLongValue());
2934
}
3035
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ protected OptionalSerializer withResolved(BeanProperty property,
5151
return new OptionalSerializer(_optionalType, ser);
5252
}
5353

54-
// implemented since 2.3
5554
@Override
55+
@Deprecated
5656
public boolean isEmpty(Optional<?> value) {
5757
return isEmpty(null, value);
5858
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package com.fasterxml.jackson.datatype.jdk8;
2+
3+
import java.util.Optional;
4+
5+
import com.fasterxml.jackson.annotation.JsonCreator;
6+
import com.fasterxml.jackson.annotation.JsonProperty;
7+
import com.fasterxml.jackson.databind.ObjectMapper;
8+
9+
public class CreatorTest extends ModuleTestBase
10+
{
11+
static class CreatorWithOptionalStrings
12+
{
13+
Optional<String> a, b;
14+
15+
// note: something weird with test setup, should not need annotations
16+
@JsonCreator
17+
public CreatorWithOptionalStrings(@JsonProperty("a") Optional<String> a,
18+
@JsonProperty("b") Optional<String> b)
19+
{
20+
this.a = a;
21+
this.b = b;
22+
}
23+
}
24+
25+
/*
26+
/**********************************************************
27+
/* Test methods
28+
/**********************************************************
29+
*/
30+
31+
private final ObjectMapper MAPPER = mapperWithModule();
32+
33+
/**
34+
* Test to ensure that creator parameters use defaulting
35+
* (introduced in Jackson 2.6)
36+
*/
37+
public void testCreatorWithOptional() throws Exception
38+
{
39+
CreatorWithOptionalStrings bean = MAPPER.readValue(
40+
aposToQuotes("{'a':'foo'}"), CreatorWithOptionalStrings.class);
41+
assertNotNull(bean);
42+
assertNotNull(bean.a);
43+
assertNotNull(bean.b);
44+
assertTrue(bean.a.isPresent());
45+
assertFalse(bean.b.isPresent());
46+
assertEquals("foo", bean.a.get());
47+
}
48+
}

src/test/java/com/fasterxml/jackson/datatype/jdk8/TestOptionalSerializer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,13 +210,13 @@ public void testExcludeIfOptionalLongAbsent() throws Exception
210210
assertEquals(aposToQuotes("{}"),
211211
mapper.writeValueAsString(new OptionalLongBean()));
212212
}
213-
213+
214214
/*
215215
/**********************************************************
216216
/* Helper methods
217217
/**********************************************************
218218
*/
219-
219+
220220
private <T> Optional<T> roundtrip(Optional<T> obj, TypeReference<Optional<T>> type) throws IOException
221221
{
222222
return MAPPER.readValue(MAPPER.writeValueAsBytes(obj), type);

0 commit comments

Comments
 (0)