From 5c3fe8cc8a1eaed84306e43a9bb96e0c38cbf956 Mon Sep 17 00:00:00 2001 From: Juri Leino Date: Mon, 27 Mar 2023 21:49:43 +0200 Subject: [PATCH 01/22] [refactor] XQueryContext, MapUtil - rename HashMap method to hashMap --- exist-core/src/main/java/org/exist/util/MapUtil.java | 8 +++++--- .../src/main/java/org/exist/xquery/XQueryContext.java | 9 +++------ 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/exist-core/src/main/java/org/exist/util/MapUtil.java b/exist-core/src/main/java/org/exist/util/MapUtil.java index 19e55a71d45..c5cd212cbe9 100644 --- a/exist-core/src/main/java/org/exist/util/MapUtil.java +++ b/exist-core/src/main/java/org/exist/util/MapUtil.java @@ -54,8 +54,9 @@ public interface MapUtil { * * @return The HashMap */ - static Map HashMap(final Tuple2... entries) { - return HashMap(Math.max(entries.length, 16), entries); + @SafeVarargs + static Map hashMap(final Tuple2... entries) { + return hashMap(Math.max(entries.length, 16), entries); } /** @@ -69,7 +70,8 @@ static Map HashMap(final Tuple2... entries) { * * @return The HashMap */ - static Map HashMap(final int initialCapacity, final Tuple2... entries) { + @SafeVarargs + static Map hashMap(final int initialCapacity, final Tuple2... entries) { final Map map = new HashMap<>(initialCapacity); for (final Tuple2 entry : entries) { map.put(entry._1, entry._2); diff --git a/exist-core/src/main/java/org/exist/xquery/XQueryContext.java b/exist-core/src/main/java/org/exist/xquery/XQueryContext.java index f154ffab8a5..9cadd4c4077 100644 --- a/exist-core/src/main/java/org/exist/xquery/XQueryContext.java +++ b/exist-core/src/main/java/org/exist/xquery/XQueryContext.java @@ -85,10 +85,7 @@ import org.exist.storage.lock.Lock.LockMode; import org.exist.storage.lock.LockedDocumentMap; import org.exist.storage.txn.Txn; -import org.exist.util.Collations; -import org.exist.util.CollectionOfArrayIterator; -import org.exist.util.Configuration; -import org.exist.util.LockException; +import org.exist.util.*; import org.exist.util.hashtable.NamePool; import org.exist.xmldb.XmldbURI; import org.exist.xquery.parser.*; @@ -105,7 +102,7 @@ import static org.apache.commons.lang3.ArrayUtils.isEmpty; import static org.apache.commons.lang3.ArrayUtils.isNotEmpty; import static org.exist.Namespaces.XML_NS; -import static org.exist.util.MapUtil.HashMap; +import static org.exist.util.MapUtil.hashMap; /** * The current XQuery execution context. Contains the static as well as the dynamic @@ -413,7 +410,7 @@ public class XQueryContext implements BinaryValueManager, Context { private HttpContext httpContext = null; private static final QName UNNAMED_DECIMAL_FORMAT = new QName("__UNNAMED__", Function.BUILTIN_FUNCTION_NS); - private final Map staticDecimalFormats = HashMap(Tuple(UNNAMED_DECIMAL_FORMAT, DecimalFormat.UNNAMED)); + private final Map staticDecimalFormats = hashMap(Tuple(UNNAMED_DECIMAL_FORMAT, DecimalFormat.UNNAMED)); // Only used for testing, e.g. {@link org.exist.test.runner.XQueryTestRunner}. private Optional testRepository = Optional.empty(); From 07465e8cb1db6fea0d62e4fcc963569ad09259a2 Mon Sep 17 00:00:00 2001 From: Juri Leino Date: Mon, 27 Mar 2023 21:50:34 +0200 Subject: [PATCH 02/22] [refactor] XQueryContext declare fields final --- .../java/org/exist/xquery/XQueryContext.java | 47 +++++++++++++------ 1 file changed, 32 insertions(+), 15 deletions(-) diff --git a/exist-core/src/main/java/org/exist/xquery/XQueryContext.java b/exist-core/src/main/java/org/exist/xquery/XQueryContext.java index 9cadd4c4077..4740f255adf 100644 --- a/exist-core/src/main/java/org/exist/xquery/XQueryContext.java +++ b/exist-core/src/main/java/org/exist/xquery/XQueryContext.java @@ -170,7 +170,7 @@ public class XQueryContext implements BinaryValueManager, Context { private boolean inheritNamespaces = true; // Local namespace stack - private Deque> namespaceStack = new ArrayDeque<>(); + private final Deque> namespaceStack = new ArrayDeque<>(); // Known user defined functions in the local module private Map declaredFunctions = new Object2ObjectAVLTreeMap<>(); @@ -183,16 +183,16 @@ public class XQueryContext implements BinaryValueManager, Context { private Deque contextStack = new ArrayDeque<>(); - private Deque callStack = new ArrayDeque<>(); + private final Deque callStack = new ArrayDeque<>(); // The current size of the variable stack private int variableStackSize = 0; // Unresolved references to user defined functions - private Deque forwardReferences = new ArrayDeque<>(); + private final Deque forwardReferences = new ArrayDeque<>(); // Inline functions using closures need to be cleared after execution - private Deque closures = new ArrayDeque<>(); + private final Deque closures = new ArrayDeque<>(); // List of options declared for this query at compile time - i.e. declare option private List