Skip to content

Commit e63a9a6

Browse files
committed
Add a (passing) test for #2992
1 parent e01bcf9 commit e63a9a6

File tree

4 files changed

+61
-7
lines changed

4 files changed

+61
-7
lines changed

src/test-jdk14/java/com/fasterxml/jackson/databind/RecordBasicsTest.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.fasterxml.jackson.databind;
22

33
import com.fasterxml.jackson.annotation.*;
4-
4+
import com.fasterxml.jackson.databind.annotation.JsonNaming;
55
import com.fasterxml.jackson.databind.json.JsonMapper;
66
import com.fasterxml.jackson.databind.util.ClassUtil;
77

@@ -11,6 +11,8 @@
1111

1212
public class RecordBasicsTest extends BaseMapTest
1313
{
14+
record EmptyRecord() { }
15+
1416
record SimpleRecord(int id, String name) { }
1517

1618
record RecordOfRecord(SimpleRecord record) { }
@@ -19,7 +21,9 @@ record RecordWithIgnore(int id, @JsonIgnore String name) { }
1921

2022
record RecordWithRename(int id, @JsonProperty("rename")String name) { }
2123

22-
record EmptyRecord() { }
24+
// [databind#2992]
25+
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
26+
record SnakeRecord(String myId, String myValue){}
2327

2428
private final ObjectMapper MAPPER = newJsonMapper();
2529

@@ -130,6 +134,21 @@ public void testDeserializeJsonRename() throws Exception {
130134
assertEquals(new RecordWithRename(123, "Bob"), value);
131135
}
132136

137+
/*
138+
/**********************************************************************
139+
/* Test methods, naming strategy
140+
/**********************************************************************
141+
*/
142+
143+
// [databind#2992]
144+
public void testNamingStrategy() throws Exception
145+
{
146+
SnakeRecord input = new SnakeRecord("123", "value");
147+
String json = MAPPER.writeValueAsString(input);
148+
SnakeRecord output = MAPPER.readValue(json, SnakeRecord.class);
149+
assertEquals(input, output);
150+
}
151+
133152
/*
134153
/**********************************************************************
135154
/* Internal helper methods

src/test-jdk14/java/com/fasterxml/jackson/databind/Java9ListsTest.java renamed to src/test-jdk14/java/com/fasterxml/jackson/databind/failing/Java9ListsTest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1-
package com.fasterxml.jackson.databind;
1+
package com.fasterxml.jackson.databind.failing;
22

33
import java.util.Collections;
44
import java.util.List;
55

6+
import com.fasterxml.jackson.databind.BaseMapTest;
7+
import com.fasterxml.jackson.databind.ObjectMapper;
8+
import com.fasterxml.jackson.databind.ObjectMapper.DefaultTyping;
69
import com.fasterxml.jackson.databind.json.JsonMapper;
710
import com.fasterxml.jackson.databind.testutil.NoCheckSubTypeValidator;
811

src/test-jdk14/java/com/fasterxml/jackson/databind/RecordWithJsonSetter2974Test.java renamed to src/test-jdk14/java/com/fasterxml/jackson/databind/failing/RecordWithJsonSetter2974Test.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
package com.fasterxml.jackson.databind;
1+
package com.fasterxml.jackson.databind.failing;
22

33
import java.util.List;
44
import java.util.Map;
55

66
import com.fasterxml.jackson.annotation.JsonSetter;
77
import com.fasterxml.jackson.annotation.Nulls;
8-
import com.fasterxml.jackson.databind.RecordBasicsTest.RecordWithRename;
8+
import com.fasterxml.jackson.databind.BaseMapTest;
9+
import com.fasterxml.jackson.databind.ObjectMapper;
10+
import com.fasterxml.jackson.databind.ObjectReader;
911
import com.fasterxml.jackson.databind.exc.InvalidNullException;
1012

1113
public class RecordWithJsonSetter2974Test extends BaseMapTest
@@ -41,8 +43,6 @@ public void testDeserializeWithNullAsEmpty() throws Exception
4143
assertNotNull(value.agesByNames());
4244
assertEquals(1, value.agesByNames().size());
4345
assertEquals(Integer.valueOf(42), value.agesByNames().get("bob"));
44-
45-
assertEquals(new RecordWithRename(123, "Bob"), value);
4646
}
4747

4848
// [databind#2974]

src/test/java/com/fasterxml/jackson/databind/deser/filter/NullConversionsPojoTest.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,17 @@ static class NullFail {
1717
public String noNulls = "b";
1818
}
1919

20+
static class NullFailCtor {
21+
String value;
22+
23+
@JsonCreator
24+
public NullFailCtor(@JsonSetter(nulls=Nulls.FAIL)
25+
@JsonProperty("noNulls") String v)
26+
{
27+
value = v;
28+
}
29+
}
30+
2031
static class NullAsEmpty {
2132
public String nullsOk = "a";
2233

@@ -71,6 +82,23 @@ public void testFailOnNull() throws Exception
7182
} catch (InvalidNullException e) {
7283
verifyException(e, "property \"noNulls\"");
7384
}
85+
86+
// Ditto via constructor; first explicit
87+
try {
88+
/* NullFailCtor r =*/ MAPPER.readValue(aposToQuotes("{'noNulls':null}"),
89+
NullFailCtor.class);
90+
fail("Should not pass");
91+
} catch (InvalidNullException e) {
92+
verifyException(e, "property \"noNulls\"");
93+
}
94+
95+
// and then implicit (missing -> null)
96+
try {
97+
/* NullFailCtor r =*/ MAPPER.readValue("{ }", NullFailCtor.class);
98+
fail("Should not pass");
99+
} catch (InvalidNullException e) {
100+
verifyException(e, "property \"noNulls\"");
101+
}
74102
}
75103

76104
public void testFailOnNullWithDefaults() throws Exception
@@ -126,5 +154,9 @@ public void testNullsToEmptyViaCtor() throws Exception
126154
result = MAPPER.readValue(aposToQuotes("{'nullAsEmpty':null}"),
127155
NullAsEmptyCtor.class);
128156
assertEquals("", result._nullAsEmpty);
157+
158+
// and get coerced from "missing", as well
159+
result = MAPPER.readValue(aposToQuotes("{}"), NullAsEmptyCtor.class);
160+
assertEquals("", result._nullAsEmpty);
129161
}
130162
}

0 commit comments

Comments
 (0)