Replace java.util.Stack with Deque / ArrayDeque, refine error message.
Signed-off-by: Roman Grigoriadi <roman.grigoriadi@oracle.com>
diff --git a/src/main/java/org/eclipse/yasson/internal/JsonbRiParser.java b/src/main/java/org/eclipse/yasson/internal/JsonbRiParser.java
index 18e31d2..c473dbd 100644
--- a/src/main/java/org/eclipse/yasson/internal/JsonbRiParser.java
+++ b/src/main/java/org/eclipse/yasson/internal/JsonbRiParser.java
@@ -23,10 +23,11 @@
import javax.json.stream.JsonLocation;
import javax.json.stream.JsonParser;
import java.math.BigDecimal;
+import java.util.ArrayDeque;
import java.util.Arrays;
+import java.util.Deque;
import java.util.Map;
import java.util.Objects;
-import java.util.Stack;
import java.util.stream.Stream;
/**
@@ -109,7 +110,7 @@
private final JsonParser jsonParser;
- private final Stack<LevelContext> level = new Stack<>();
+ private final Deque<LevelContext> level = new ArrayDeque<>();
/**
* Creates a parser.
@@ -188,7 +189,7 @@
@Override
public void moveTo(JsonParser.Event required) {
- if (!level.empty() && level.peek().getLastEvent() == required) {
+ if (!level.isEmpty() && level.peek().getLastEvent() == required) {
return;
}
@@ -211,7 +212,7 @@
}
private Event moveTo(Event... events) {
- if (!level.empty() && contains(events, level.peek().getLastEvent())) {
+ if (!level.isEmpty() && contains(events, level.peek().getLastEvent())) {
return level.peek().getLastEvent();
}
diff --git a/src/main/java/org/eclipse/yasson/internal/MappingContext.java b/src/main/java/org/eclipse/yasson/internal/MappingContext.java
index 0b3cea1..2f3c098 100644
--- a/src/main/java/org/eclipse/yasson/internal/MappingContext.java
+++ b/src/main/java/org/eclipse/yasson/internal/MappingContext.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2015, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2019 Oracle and/or its affiliates. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
@@ -12,14 +12,15 @@
******************************************************************************/
package org.eclipse.yasson.internal;
-import org.eclipse.yasson.internal.serializer.ContainerSerializerProvider;
import org.eclipse.yasson.internal.model.ClassModel;
import org.eclipse.yasson.internal.model.JsonbAnnotatedElement;
import org.eclipse.yasson.internal.model.customization.ClassCustomization;
+import org.eclipse.yasson.internal.serializer.ContainerSerializerProvider;
+import java.util.ArrayDeque;
+import java.util.Deque;
import java.util.Iterator;
import java.util.Objects;
-import java.util.Stack;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
@@ -89,7 +90,7 @@
if (classModel != null) {
return classModel;
}
- final Stack<Class> newClassModels = new Stack<>();
+ final Deque<Class> newClassModels = new ArrayDeque<>();
for (Class classToParse = clazz; classToParse != Object.class; classToParse = classToParse.getSuperclass()) {
if (classToParse == null){
break;
@@ -102,7 +103,7 @@
}
ClassModel parentClassModel = null;
- while (!newClassModels.empty()) {
+ while (!newClassModels.isEmpty()) {
Class toParse = newClassModels.pop();
parentClassModel = classes.computeIfAbsent(toParse, new ParseClassModelFunction(parentClassModel, classParser, jsonbContext));
}
diff --git a/src/main/java/org/eclipse/yasson/internal/VariableTypeInheritanceSearch.java b/src/main/java/org/eclipse/yasson/internal/VariableTypeInheritanceSearch.java
index 84791e7..3532f19 100644
--- a/src/main/java/org/eclipse/yasson/internal/VariableTypeInheritanceSearch.java
+++ b/src/main/java/org/eclipse/yasson/internal/VariableTypeInheritanceSearch.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2019 Oracle and/or its affiliates. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
@@ -20,7 +20,8 @@
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.lang.reflect.TypeVariable;
-import java.util.Stack;
+import java.util.ArrayDeque;
+import java.util.Deque;
/**
* Search for type variable in inheritance hierarchy and resolve if possible.
@@ -29,7 +30,7 @@
*/
public class VariableTypeInheritanceSearch {
- private final Stack<ParameterizedType> parameterizedSubclasses = new Stack<>();
+ private final Deque<ParameterizedType> parameterizedSubclasses = new ArrayDeque<>();
/**
* Searches the hierarchy of classes to resolve a type variable. If typevar resolved value is another typevar redirection (propagated from wrapping class),
diff --git a/src/main/java/org/eclipse/yasson/internal/jsonstructure/JsonGeneratorToStructureAdapter.java b/src/main/java/org/eclipse/yasson/internal/jsonstructure/JsonGeneratorToStructureAdapter.java
index d32d42b..ba0871c 100644
--- a/src/main/java/org/eclipse/yasson/internal/jsonstructure/JsonGeneratorToStructureAdapter.java
+++ b/src/main/java/org/eclipse/yasson/internal/jsonstructure/JsonGeneratorToStructureAdapter.java
@@ -20,7 +20,8 @@
import javax.json.stream.JsonGenerator;
import java.math.BigDecimal;
import java.math.BigInteger;
-import java.util.Stack;
+import java.util.ArrayDeque;
+import java.util.Deque;
/**
* Adapter for {@link JsonGenerator}, that builds a {@link JsonStructure} content tree instead of JSON text.
@@ -31,7 +32,7 @@
*/
public class JsonGeneratorToStructureAdapter implements JsonGenerator {
- private final Stack<JsonStructureBuilder> builders;
+ private final Deque<JsonStructureBuilder> builders;
private JsonStructure root;
@@ -43,7 +44,7 @@
* @param provider Cached json provider to create builders on.
*/
public JsonGeneratorToStructureAdapter(JsonProvider provider) {
- this.builders = new Stack<>();
+ this.builders = new ArrayDeque<>();
this.provider = provider;
}
@@ -131,7 +132,8 @@
JsonStructureBuilder current = builders.peek();
if (!(current instanceof JsonObjectBuilder)) {
throw new JsonbException(Messages.getMessage(
- MessageKeys.INTERNAL_ERROR, "Can't write key [" + keyName + "] into " + current.getClass()));
+ MessageKeys.INTERNAL_ERROR, "Can't write key [" + keyName + "] into " + current.getClass()
+ + "because "+current.getClass() + " is not an instance of "+ JsonObjectBuilder.class));
}
return (JsonObjectBuilder) current;
}
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 50c4592..1041473 100644
--- a/src/main/java/org/eclipse/yasson/internal/jsonstructure/JsonStructureToParserAdapter.java
+++ b/src/main/java/org/eclipse/yasson/internal/jsonstructure/JsonStructureToParserAdapter.java
@@ -19,7 +19,8 @@
import javax.json.stream.JsonLocation;
import javax.json.stream.JsonParser;
import java.math.BigDecimal;
-import java.util.Stack;
+import java.util.ArrayDeque;
+import java.util.Deque;
/**
* Adapter for {@link JsonParser}, that reads a {@link JsonStructure} content tree instead of JSON text.
@@ -30,7 +31,7 @@
*/
public class JsonStructureToParserAdapter implements JsonParser {
- private Stack<JsonStructureIterator> iterators = new Stack<>();
+ private Deque<JsonStructureIterator> iterators = new ArrayDeque<>();
private final JsonStructure rootStructure;