Skip to content

Commit a094e49

Browse files
committed
BAEL-2475: Changes after first review
1 parent 2e436ce commit a094e49

File tree

4 files changed

+60
-76
lines changed

4 files changed

+60
-76
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.baeldung.jackson.deserialization.immutable;
2+
3+
import com.fasterxml.jackson.annotation.JsonCreator;
4+
import com.fasterxml.jackson.annotation.JsonProperty;
5+
6+
public class Employee {
7+
8+
private final long id;
9+
private final String name;
10+
11+
@JsonCreator(mode = JsonCreator.Mode.PROPERTIES)
12+
public Employee(@JsonProperty("id") long id, @JsonProperty("name") String name) {
13+
this.id = id;
14+
this.name = name;
15+
}
16+
17+
public long getId() {
18+
return id;
19+
}
20+
21+
public String getName() {
22+
return name;
23+
}
24+
}

jackson/src/main/java/com/baeldung/jackson/deserialization/immutable/MaritalAwarePerson.java

Lines changed: 0 additions & 58 deletions
This file was deleted.
Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
package com.baeldung.jackson.deserialization.immutable;
22

3-
import com.fasterxml.jackson.annotation.JsonCreator;
4-
import com.fasterxml.jackson.annotation.JsonProperty;
3+
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
4+
import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
55

6+
@JsonDeserialize(builder = Person.Builder.class)
67
public class Person {
78

89
private final String name;
9-
private final int age;
10+
private final Integer age;
1011

11-
@JsonCreator(mode = JsonCreator.Mode.PROPERTIES)
12-
public Person(@JsonProperty("name") String name, @JsonProperty("age") int age) {
12+
private Person(String name, Integer age) {
1313
this.name = name;
1414
this.age = age;
1515
}
@@ -18,7 +18,27 @@ public String getName() {
1818
return name;
1919
}
2020

21-
public int getAge() {
21+
public Integer getAge() {
2222
return age;
2323
}
24+
25+
@JsonPOJOBuilder
26+
static class Builder {
27+
String name;
28+
Integer age;
29+
30+
Builder withName(String name) {
31+
this.name = name;
32+
return this;
33+
}
34+
35+
Builder withAge(Integer age) {
36+
this.age = age;
37+
return this;
38+
}
39+
40+
Person build() {
41+
return new Person(name, age);
42+
}
43+
}
2444
}

jackson/src/test/java/com/baeldung/jackson/deserialization/immutable/ImmutableObjectDeserializationUnitTest.java

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,30 +11,28 @@ public class ImmutableObjectDeserializationUnitTest {
1111

1212
@Test
1313
public void whenPublicConstructorIsUsed_thenObjectIsDeserialized() throws IOException {
14-
final String json = "{\"name\":\"Frank\",\"age\":50}";
15-
Person person = new ObjectMapper().readValue(json, Person.class);
14+
final String json = "{\"name\":\"Frank\",\"id\":5000}";
15+
Employee employee = new ObjectMapper().readValue(json, Employee.class);
1616

17-
assertEquals("Frank", person.getName());
18-
assertEquals(50, person.getAge());
17+
assertEquals("Frank", employee.getName());
18+
assertEquals(5000, employee.getId());
1919
}
2020

2121
@Test
2222
public void whenBuilderIsUsedAndFieldIsNull_thenObjectIsDeserialized() throws IOException {
23-
final String json = "{\"name\":\"Frank\",\"age\":50}";
24-
MaritalAwarePerson person = new ObjectMapper().readValue(json, MaritalAwarePerson.class);
23+
final String json = "{\"name\":\"Frank\"}";
24+
Person person = new ObjectMapper().readValue(json, Person.class);
2525

2626
assertEquals("Frank", person.getName());
27-
assertEquals(50, person.getAge());
28-
assertNull(person.getMarried());
27+
assertNull(person.getAge());
2928
}
3029

3130
@Test
3231
public void whenBuilderIsUsedAndAllFieldsPresent_thenObjectIsDeserialized() throws IOException {
33-
final String json = "{\"name\":\"Frank\",\"age\":50,\"married\":true}";
34-
MaritalAwarePerson person = new ObjectMapper().readValue(json, MaritalAwarePerson.class);
32+
final String json = "{\"name\":\"Frank\",\"age\":50}";
33+
Person person = new ObjectMapper().readValue(json, Person.class);
3534

3635
assertEquals("Frank", person.getName());
37-
assertEquals(50, person.getAge());
38-
assertTrue(person.getMarried());
36+
assertEquals(50, (int) person.getAge());
3937
}
4038
}

0 commit comments

Comments
 (0)