Skip to content

Commit dd2ed05

Browse files
committed
Fixed #2709 (java.util.Record support!)
1 parent 263b544 commit dd2ed05

File tree

4 files changed

+11
-7
lines changed

4 files changed

+11
-7
lines changed

release-notes/CREDITS-2.x

+4
Original file line numberDiff line numberDiff line change
@@ -1183,6 +1183,10 @@ Yona Appletree (Yona-Appletree@github)
11831183
property name is specified
11841184
(2.12.0)
11851185
1186+
Youri Bonnaffé (youribonnaffe@github)
1187+
* Contributed #2709: Support for JDK 14 record types
1188+
(2.12.0)
1189+
11861190
David Bidorff (bidorffOL@github)
11871191
* Reported, contributed fix for #2719: `FAIL_ON_IGNORED_PROPERTIES` does not throw
11881192
on `READONLY` properties with an explicit name

release-notes/VERSION-2.x

+2
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ Project: jackson-databind
3838
#2683: Explicitly fail (de)serialization of `java.time.*` types in absence of
3939
registered custom (de)serializers
4040
#2707: Improve description included in by `DeserializationContext.handleUnexpectedToken()`
41+
#2709: Support for JDK 14 record types
42+
(contributed by Youri B)
4143
#2719: `FAIL_ON_IGNORED_PROPERTIES` does not throw on `READONLY` properties with
4244
an explicit name
4345
(reported, fix contributed by David B)

src/main/java/com/fasterxml/jackson/databind/deser/BasicDeserializerFactory.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -555,7 +555,7 @@ protected void _addDeserializerConstructors(DeserializationContext ctxt,
555555
*/
556556
protected void _addRecordConstructor(DeserializationContext ctxt,
557557
BeanDescription beanDesc, CreatorCollector creators,
558-
AnnotatedConstructor canonical, List<String> names)
558+
AnnotatedConstructor canonical, List<String> implicitNames)
559559
throws JsonMappingException
560560
{
561561
final int argCount = canonical.getParameterCount();
@@ -565,7 +565,10 @@ protected void _addRecordConstructor(DeserializationContext ctxt,
565565
for (int i = 0; i < argCount; ++i) {
566566
final AnnotatedParameter param = canonical.getParameter(i);
567567
JacksonInject.Value injectable = intr.findInjectableValue(param);
568-
final PropertyName name = PropertyName.construct(names.get(i));
568+
PropertyName name = intr.findNameForDeserialization(param);
569+
if (name == null || name.isEmpty()) {
570+
name = PropertyName.construct(implicitNames.get(i));
571+
}
569572
properties[i] = constructCreatorProperty(ctxt, beanDesc, name, i, param, injectable);
570573
}
571574
creators.addPropertyCreator(canonical, false, properties);

src/main/java/com/fasterxml/jackson/databind/jdk14/JDK14Util.java

-5
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,14 @@
33
import java.lang.reflect.Method;
44
import java.util.Collections;
55
import java.util.List;
6-
import java.util.Map;
76

87
import com.fasterxml.jackson.annotation.JsonCreator;
98
import com.fasterxml.jackson.annotation.JsonCreator.Mode;
109
import com.fasterxml.jackson.databind.AnnotationIntrospector;
1110
import com.fasterxml.jackson.databind.BeanDescription;
1211
import com.fasterxml.jackson.databind.DeserializationConfig;
1312
import com.fasterxml.jackson.databind.DeserializationContext;
14-
import com.fasterxml.jackson.databind.deser.impl.CreatorCollector;
1513
import com.fasterxml.jackson.databind.introspect.AnnotatedConstructor;
16-
import com.fasterxml.jackson.databind.introspect.AnnotatedWithParams;
17-
import com.fasterxml.jackson.databind.introspect.BeanPropertyDefinition;
18-
import com.fasterxml.jackson.databind.introspect.VisibilityChecker;
1914
import com.fasterxml.jackson.databind.util.ClassUtil;
2015

2116
/**

0 commit comments

Comments
 (0)