Skip to content

Commit 862a40f

Browse files
committed
confirm element type is same
1 parent a20d303 commit 862a40f

File tree

4 files changed

+24
-8
lines changed

4 files changed

+24
-8
lines changed

blackbox-test/src/main/java/org/example/customer/mixin/CrewMate.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@ public class CrewMate {
44

55
private String c;
66
private Integer susLv;
7+
private Integer taskNumber;
78

8-
public CrewMate(String c, Integer susLv) {
9+
public CrewMate(String c, Integer susLv, Integer taskNumber) {
910
this.c = c;
1011
this.susLv = susLv;
12+
this.taskNumber = taskNumber;
1113
}
1214

1315
public String getC() {
@@ -25,4 +27,12 @@ public Integer getSusLv() {
2527
public void setSusLv(Integer susLv) {
2628
this.susLv = susLv;
2729
}
30+
31+
public Integer getTaskNumber() {
32+
return taskNumber;
33+
}
34+
35+
public void setTaskNumber(Integer taskNumber) {
36+
this.taskNumber = taskNumber;
37+
}
2838
}

blackbox-test/src/main/java/org/example/customer/mixin/CrewMateMixIn.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,8 @@ public abstract class CrewMateMixIn {
1010
private String c;
1111

1212
@Json.Ignore(deserialize = true)
13-
private int susLv;
13+
private Integer susLv;
14+
15+
@Json.Property("wrongtype")
16+
private int taskNumber;
1417
}

blackbox-test/src/test/java/org/example/customer/mixin/MixinTest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,14 @@ class MixinTest {
1212

1313
@Test
1414
void toJsonFromJson() {
15-
final var bean = new CrewMate("red", 999);
15+
final var bean = new CrewMate("red", 999, 45);
1616

1717
final var asJson = jsonb.toJson(bean);
18-
assertThat(asJson).isEqualTo("{\"color\":\"red\"}");
18+
assertThat(asJson).isEqualTo("{\"color\":\"red\",\"taskNumber\":45}");
1919

20-
final var fromJson = jsonb.type(CrewMate.class).fromJson("{\"color\":\"blue\",\"susLv\":\"0\"}");
20+
final var fromJson = jsonb.type(CrewMate.class).fromJson("{\"color\":\"blue\",\"susLv\":\"0\",\"taskNumber\":45}}");
2121
assertThat(fromJson.getC()).isEqualTo("blue");
2222
assertThat(fromJson.getSusLv()).isZero();
23+
assertThat(fromJson.getTaskNumber()).isEqualTo(45);
2324
}
2425
}

jsonb-generator/src/main/java/io/avaje/jsonb/generator/TypeReader.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,12 @@ void read(TypeElement type) {
9191
}
9292

9393
private void readField(Element element, List<FieldReader> localFields) {
94-
if (mixInFields.containsKey(element.getSimpleName().toString())) {
95-
element = mixInFields.get(element.getSimpleName().toString());
94+
final Element mixInField = mixInFields.get(element.getSimpleName().toString());
95+
if (mixInField != null && mixInField.asType().equals(element.asType())) {
96+
97+
element = mixInField;
9698
}
97-
if (includeField(element)) {
99+
if (includeField(element)) {
98100
localFields.add(new FieldReader(element, namingConvention, currentSubType));
99101
}
100102
}

0 commit comments

Comments
 (0)