diff --git a/src/main/java/org/eclipse/yasson/internal/deserializer/YassonParser.java b/src/main/java/org/eclipse/yasson/internal/deserializer/YassonParser.java index c17f6ff5..4d529340 100644 --- a/src/main/java/org/eclipse/yasson/internal/deserializer/YassonParser.java +++ b/src/main/java/org/eclipse/yasson/internal/deserializer/YassonParser.java @@ -86,6 +86,11 @@ public Event next() { return next; } + @Override + public Event currentEvent() { + return context.getLastValueEvent(); + } + @Override public String getString() { return delegate.getString(); diff --git a/src/main/java/org/eclipse/yasson/internal/jsonstructure/JsonStructureToParserAdapter.java b/src/main/java/org/eclipse/yasson/internal/jsonstructure/JsonStructureToParserAdapter.java index dfa9d64f..a0e23ccd 100644 --- a/src/main/java/org/eclipse/yasson/internal/jsonstructure/JsonStructureToParserAdapter.java +++ b/src/main/java/org/eclipse/yasson/internal/jsonstructure/JsonStructureToParserAdapter.java @@ -78,6 +78,11 @@ public Event next() { return next; } + @Override + public Event currentEvent() { + return iterators.peek().getValueEvent(getValue()); + } + @Override public String getString() { return iterators.peek().getString(); @@ -103,6 +108,11 @@ public BigDecimal getBigDecimal() { return getJsonNumberValue().bigDecimalValue(); } + @Override + public JsonValue getValue() { + return iterators.peek().getValue(); + } + @Override public JsonObject getObject() { JsonStructureIterator current = iterators.peek(); @@ -115,6 +125,17 @@ public JsonObject getObject() { } } + @Override + public JsonArray getArray() { + JsonStructureIterator current = iterators.peek(); + if (current instanceof JsonArrayIterator) { + iterators.pop(); + return getValue().asJsonArray(); + } else { + throw new JsonbException(Messages.getMessage(MessageKeys.INTERNAL_ERROR, "Outside of array context")); + } + } + private JsonNumber getJsonNumberValue() { JsonStructureIterator iterator = iterators.peek(); JsonValue value = iterator.getValue(); @@ -123,7 +144,7 @@ private JsonNumber getJsonNumberValue() { } return (JsonNumber) value; } - + @Override public JsonLocation getLocation() { throw new JsonbException("Operation not supported");