-
Notifications
You must be signed in to change notification settings - Fork 105
Open
Labels
bugSomething isn't working rightSomething isn't working right
Description
Describe the bug
When using a combination of @JsonbTypeInfo and JsonValue results in UnsupportedOperationException when the JsonValue resolves to an array.
To Reproduce
Run this test:
class JsonArrayTest {
private final Jsonb jsonb = JsonbBuilder.create();
@Test
void deserialise() {
var obj = jsonb.fromJson("""
{ "@type": "child", "values": [] }
""", Parent.class);
System.out.println(obj);
}
@JsonbTypeInfo(value = {
@JsonbSubtype(alias = "child", type = Child.class)
})
public interface Parent {
}
public static record Child(JsonValue values) implements Parent { }
}Expected behavior
It deserialises into a JsonValue.
System information:
- OS: Windows 11 Pro
- Java Version: openjdk version "21.0.5" 2024-10-15 LTS
- Yasson Version: v3.0.4
Additional context
Fault is potentially with the JsonParser#getArray method not implemented in org.eclipse.yasson.internal.jsonstructure.JsonStructureToParserAdapter.
Stacktrace:
jakarta.json.bind.JsonbException: Internal error: null
at org.eclipse.yasson.internal.DeserializationContextImpl.deserializeItem(DeserializationContextImpl.java:142)
at org.eclipse.yasson.internal.DeserializationContextImpl.deserialize(DeserializationContextImpl.java:127)
at org.eclipse.yasson.internal.JsonBinding.deserialize(JsonBinding.java:55)
at org.eclipse.yasson.internal.JsonBinding.fromJson(JsonBinding.java:62)
at com.acme.JsonArrayTest.deserialise(JsonArrayTest.java:16)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
Caused by: java.lang.UnsupportedOperationException
at jakarta.json.stream.JsonParser.getArray(JsonParser.java:419)
at org.eclipse.yasson.internal.deserializer.types.JsonValueDeserializer.deserializeValue(JsonValueDeserializer.java:57)
at org.eclipse.yasson.internal.deserializer.types.JsonValueDeserializer.deserialize(JsonValueDeserializer.java:40)
at org.eclipse.yasson.internal.deserializer.types.JsonValueDeserializer.deserialize(JsonValueDeserializer.java:27)
at org.eclipse.yasson.internal.deserializer.JsonbCreatorDeserializer.deserialize(JsonbCreatorDeserializer.java:86)
at org.eclipse.yasson.internal.deserializer.JsonbCreatorDeserializer.deserialize(JsonbCreatorDeserializer.java:38)
at org.eclipse.yasson.internal.deserializer.PositionChecker.deserialize(PositionChecker.java:85)
at org.eclipse.yasson.internal.deserializer.PositionChecker.deserialize(PositionChecker.java:34)
at org.eclipse.yasson.internal.deserializer.NullCheckDeserializer.deserialize(NullCheckDeserializer.java:46)
at org.eclipse.yasson.internal.deserializer.NullCheckDeserializer.deserialize(NullCheckDeserializer.java:26)
at org.eclipse.yasson.internal.deserializer.InheritanceInstanceCreator.deserialize(InheritanceInstanceCreator.java:72)
at org.eclipse.yasson.internal.deserializer.InheritanceInstanceCreator.deserialize(InheritanceInstanceCreator.java:31)
at org.eclipse.yasson.internal.deserializer.PositionChecker.deserialize(PositionChecker.java:85)
at org.eclipse.yasson.internal.deserializer.PositionChecker.deserialize(PositionChecker.java:34)
at org.eclipse.yasson.internal.deserializer.NullCheckDeserializer.deserialize(NullCheckDeserializer.java:46)
at org.eclipse.yasson.internal.deserializer.NullCheckDeserializer.deserialize(NullCheckDeserializer.java:26)
at org.eclipse.yasson.internal.DeserializationContextImpl.deserializeItem(DeserializationContextImpl.java:138)
... 72 more
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't working rightSomething isn't working right