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

Commit 3397951

Browse files
committed
Merge branch '2.6'
Conflicts: src/main/java/com/fasterxml/jackson/datatype/jdk8/Jdk8Deserializers.java
2 parents f3f4db1 + e4c9f7c commit 3397951

File tree

1 file changed

+59
-1
lines changed

1 file changed

+59
-1
lines changed

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

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,19 @@
44
import java.util.*;
55

66
import com.fasterxml.jackson.annotation.*;
7+
8+
import com.fasterxml.jackson.core.JsonGenerator;
9+
import com.fasterxml.jackson.core.JsonParser;
10+
import com.fasterxml.jackson.core.JsonProcessingException;
711
import com.fasterxml.jackson.core.type.TypeReference;
12+
13+
import com.fasterxml.jackson.databind.DeserializationContext;
814
import com.fasterxml.jackson.databind.ObjectMapper;
15+
import com.fasterxml.jackson.databind.SerializerProvider;
16+
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
17+
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
18+
import com.fasterxml.jackson.databind.deser.std.StdScalarDeserializer;
19+
import com.fasterxml.jackson.databind.ser.std.StdScalarSerializer;
920

1021
public class OptionalTest extends ModuleTestBase
1122
{
@@ -92,6 +103,39 @@ public BooleanBean(Boolean b) {
92103
}
93104
}
94105

106+
static class CaseChangingStringWrapper {
107+
@JsonSerialize(contentUsing=UpperCasingSerializer.class)
108+
@JsonDeserialize(contentUsing=LowerCasingDeserializer.class)
109+
public Optional<String> value;
110+
111+
CaseChangingStringWrapper() { }
112+
public CaseChangingStringWrapper(String s) { value = Optional.ofNullable(s); }
113+
}
114+
115+
@SuppressWarnings("serial")
116+
public static class UpperCasingSerializer extends StdScalarSerializer<String>
117+
{
118+
public UpperCasingSerializer() { super(String.class); }
119+
120+
@Override
121+
public void serialize(String value, JsonGenerator gen,
122+
SerializerProvider provider) throws IOException {
123+
gen.writeString(value.toUpperCase());
124+
}
125+
}
126+
127+
@SuppressWarnings("serial")
128+
public static class LowerCasingDeserializer extends StdScalarDeserializer<String>
129+
{
130+
public LowerCasingDeserializer() { super(String.class); }
131+
132+
@Override
133+
public String deserialize(JsonParser p, DeserializationContext ctxt)
134+
throws IOException, JsonProcessingException {
135+
return p.getText().toLowerCase();
136+
}
137+
}
138+
95139
private ObjectMapper MAPPER;
96140

97141
@Override
@@ -249,7 +293,21 @@ public void testBoolean() throws Exception
249293
assertNotNull(b.value);
250294
assertFalse(b.value.isPresent());
251295
}
252-
296+
297+
public void testWithCustomDeserializer() throws Exception
298+
{
299+
CaseChangingStringWrapper w = MAPPER.readValue(aposToQuotes("{'value':'FoobaR'}"),
300+
CaseChangingStringWrapper.class);
301+
assertEquals("foobar", w.value.get());
302+
}
303+
304+
public void testCustomSerializer() throws Exception
305+
{
306+
final String VALUE = "fooBAR";
307+
String json = MAPPER.writeValueAsString(new CaseChangingStringWrapper(VALUE));
308+
assertEquals(json, aposToQuotes("{'value':'FOOBAR'}"));
309+
}
310+
253311
/*
254312
/**********************************************************
255313
/* Helper methods

0 commit comments

Comments
 (0)