Skip to content

Commit c79806f

Browse files
committed
add issue 673 getArray() test
Signed-off-by: redmitry <redmitry@list.ru>
1 parent b2c5724 commit c79806f

File tree

2 files changed

+48
-3
lines changed

2 files changed

+48
-3
lines changed

src/test/java/org/eclipse/yasson/jsonstructure/Issue673.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
package org.eclipse.yasson.jsonstructure;
1414

1515
import jakarta.json.Json;
16+
import jakarta.json.JsonArray;
1617
import jakarta.json.JsonObject;
1718
import jakarta.json.JsonString;
1819
import jakarta.json.JsonValue;
@@ -24,6 +25,7 @@
2425
import jakarta.json.stream.JsonParser;
2526
import java.lang.reflect.Type;
2627
import java.util.Collections;
28+
import java.util.stream.Collectors;
2729

2830
public class Issue673 {
2931

@@ -75,8 +77,18 @@ public static class Location implements LocationInterface {
7577

7678
public final static String TYPE = "Location";
7779

80+
private String tags;
7881
private Referenceable referenceable;
7982

83+
@JsonbTypeDeserializer(TagsDeserializer.class)
84+
public String getTags() {
85+
return tags;
86+
}
87+
88+
public void setTags(String tags) {
89+
this.tags = tags;
90+
}
91+
8092
@JsonbTypeDeserializer(ReferenceableDeserializer.class)
8193
public Referenceable getReference() {
8294
return referenceable;
@@ -87,6 +99,22 @@ public void setReference(Referenceable referenceable) {
8799
}
88100
}
89101

102+
public static class TagsDeserializer implements JsonbDeserializer<String> {
103+
@Override
104+
public String deserialize(JsonParser jp, DeserializationContext dc, Type type) {
105+
final JsonValue v = jp.getArray();
106+
if (v instanceof JsonArray arr) {
107+
return arr.stream()
108+
.filter(JsonString.class::isInstance)
109+
.map(JsonString.class::cast)
110+
.map(JsonString::getString)
111+
.collect(Collectors.joining(", "));
112+
}
113+
return null;
114+
}
115+
116+
}
117+
90118
public static class ReferenceableDeserializer implements JsonbDeserializer<Referenceable> {
91119

92120
@Override

src/test/java/org/eclipse/yasson/jsonstructure/JsonStructureToParserAdapterTest.java

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import jakarta.json.JsonArrayBuilder;
2424
import jakarta.json.JsonObject;
2525
import jakarta.json.JsonObjectBuilder;
26+
import jakarta.json.bind.Jsonb;
2627
import jakarta.json.bind.JsonbBuilder;
2728
import jakarta.json.bind.JsonbConfig;
2829
import jakarta.json.spi.JsonProvider;
@@ -272,7 +273,7 @@ public void testCustomJsonbDeserializer() {
272273
}
273274

274275
@Test
275-
public void testGetEvent() {
276+
public void testGetValue() {
276277
final String json =
277278
"""
278279
{
@@ -281,8 +282,24 @@ public void testGetEvent() {
281282
}
282283
""";
283284

284-
YassonJsonb jsonb = (YassonJsonb) JsonbBuilder.create(
285+
Jsonb jsonb = JsonbBuilder.create(
285286
new JsonbConfig().withDeserializers(new Issue673.ReferenceableDeserializer()));
286-
Object result = jsonb.fromJson(json, Issue673.LocationInterface.class);
287+
jsonb.fromJson(json, Issue673.LocationInterface.class);
287288
}
289+
290+
@Test
291+
public void testGetArray() {
292+
final String json =
293+
"""
294+
{
295+
"type": "Location",
296+
"tags": ["test1", "test2"]
297+
}
298+
""";
299+
300+
Jsonb jsonb = JsonbBuilder.create(
301+
new JsonbConfig().withDeserializers(new Issue673.ReferenceableDeserializer()));
302+
jsonb.fromJson(json, Issue673.LocationInterface.class);
303+
}
304+
288305
}

0 commit comments

Comments
 (0)