Skip to content

Commit af2129c

Browse files
committed
Merge branch '2.7' into 2.8
2 parents 42a1089 + 04cb1a2 commit af2129c

File tree

4 files changed

+60
-4
lines changed

4 files changed

+60
-4
lines changed

release-notes/CREDITS

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -492,6 +492,10 @@ Josh Caplan (jecaplan@github)
492492
of non-ignored `processor` property (added in 2.7)
493493
(2.7.8)
494494

495+
Diego de Estrada (diegode@github)
496+
* Contributed fix for #1367: No Object Id found for an instance when using `@ConstructorProperties`
497+
(2.7.9)
498+
495499
Kevin Hogeland (khogeland@github)
496500
* Reported #1501: `ArrayIndexOutOfBoundsException` on non-static inner class constructor
497501
(2.7.9)

release-notes/VERSION

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,8 @@ Project: jackson-databind
148148

149149
2.7.9 (not released yet)
150150

151+
#1367: No Object Id found for an instance when using `@ConstructorProperties`
152+
(reported by kajo-bellabeat@github; fix by diegode@github)
151153
#1432: Off by 1 bug in PropertyValueBuffer
152154
(reported by Kevin D)
153155
#1439: NPE when using with filter id, serializing `java.util.Map` types

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,10 @@ protected Object _deserializeUsingPropertyBased(final JsonParser p, final Deseri
389389
for (; t == JsonToken.FIELD_NAME; t = p.nextToken()) {
390390
String propName = p.getCurrentName();
391391
p.nextToken(); // to point to value
392+
// Object Id property?
393+
if (buffer.readIdProperty(propName)) {
394+
continue;
395+
}
392396
// creator property?
393397
SettableBeanProperty creatorProp = creator.findCreatorProperty(propName);
394398
if (creatorProp != null) {
@@ -421,10 +425,6 @@ protected Object _deserializeUsingPropertyBased(final JsonParser p, final Deseri
421425
}
422426
continue;
423427
}
424-
// Object Id property?
425-
if (buffer.readIdProperty(propName)) {
426-
continue;
427-
}
428428
// regular property? needs buffering
429429
SettableBeanProperty prop = _beanProperties.find(propName);
430430
if (prop != null) {
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package com.fasterxml.jackson.databind.creators;
2+
3+
import java.beans.ConstructorProperties;
4+
5+
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
6+
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
7+
import com.fasterxml.jackson.databind.*;
8+
9+
// for [databind#1367]
10+
public class CreatorWithObjectIdTest
11+
extends BaseMapTest
12+
{
13+
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
14+
// resolver = SimpleObjectIdResolver.class)
15+
public static class A {
16+
String id;
17+
String name;
18+
19+
public A() { }
20+
21+
@ConstructorProperties({"id", "name"})
22+
public A(String id, String name) {
23+
this.id = id;
24+
this.name = name;
25+
}
26+
27+
public String getId() {
28+
return id;
29+
}
30+
public void setId(String id) {
31+
this.id = id;
32+
}
33+
public String getName() {
34+
return name;
35+
}
36+
public void setName(String name) {
37+
this.name = name;
38+
}
39+
}
40+
41+
public void testObjectIdWithCreator() throws Exception
42+
{
43+
A a = new A("123", "A");
44+
45+
ObjectMapper om = new ObjectMapper();
46+
String json = om.writeValueAsString(a);
47+
A deser = om.readValue(json, A.class);
48+
assertEquals(a.name, deser.name);
49+
}
50+
}

0 commit comments

Comments
 (0)