This is an automated email from the ASF dual-hosted git repository.

veithen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ws-axiom.git


The following commit(s) were added to refs/heads/master by this push:
     new fded7e316 Refactor matrix-testsuite to use Map/HashMap instead of 
Dictionary/Hashtable
fded7e316 is described below

commit fded7e3166cf9aa26a4fc7b26c6fbc3cdfd9d351
Author: Andreas Veithen-Knowles <[email protected]>
AuthorDate: Mon Mar 2 10:49:37 2026 +0000

    Refactor matrix-testsuite to use Map/HashMap instead of Dictionary/Hashtable
    
    Replace Dictionary and Hashtable with Map and HashMap throughout the
    matrix-testsuite module. The only remaining Hashtable usage is in
    MatrixTestFilters, which converts the Map to a Hashtable once per call
    to satisfy the OSGi Filter.match() API.
    
    Update README.md to reflect the new types in code snippets and
    descriptions.
---
 testing/matrix-testsuite/README.md                      | 12 ++++++------
 .../axiom/testutils/suite/AbstractFanOutNode.java       | 17 +++++------------
 .../org/apache/axiom/testutils/suite/InjectorNode.java  |  6 +++---
 .../org/apache/axiom/testutils/suite/MatrixTest.java    |  6 +++---
 .../apache/axiom/testutils/suite/MatrixTestCase.java    |  8 ++++----
 .../apache/axiom/testutils/suite/MatrixTestFilters.java |  9 ++++++---
 .../apache/axiom/testutils/suite/MatrixTestNode.java    | 12 ++++++------
 7 files changed, 33 insertions(+), 37 deletions(-)

diff --git a/testing/matrix-testsuite/README.md 
b/testing/matrix-testsuite/README.md
index 3aa03bcae..d681991b4 100644
--- a/testing/matrix-testsuite/README.md
+++ b/testing/matrix-testsuite/README.md
@@ -57,8 +57,8 @@ Root Injector
 ### Filtering
 
 Parameters accumulate from the root down through the tree. At each leaf, the
-accumulated parameter dictionary is checked against a
-`BiPredicate<Class<?>, Dictionary<String, String>>` exclusion predicate.
+accumulated parameter map is checked against a
+`BiPredicate<Class<?>, Map<String, String>>` exclusion predicate.
 Excluded tests produce an empty `Stream<DynamicNode>` and do not appear in the
 test tree. `MatrixTestFilters` is a convenient implementation of this predicate
 that supports LDAP-style filter expressions optionally scoped to a test class.
@@ -72,8 +72,8 @@ Abstract base class for all nodes in the test tree. Defines a 
single method:
 ```java
 abstract Stream<DynamicNode> toDynamicNodes(
         Injector parentInjector,
-        Dictionary<String, String> inheritedParameters,
-        BiPredicate<Class<?>, Dictionary<String, String>> excludes);
+        Map<String, String> inheritedParameters,
+        BiPredicate<Class<?>, Map<String, String>> excludes);
 ```
 
 ### `AbstractFanOutNode<T>`
@@ -109,13 +109,13 @@ it through its children. Can be used at any level of the 
test tree to introduce
 additional bindings. Provides:
 
 ```java
-public Stream<DynamicNode> toDynamicNodes(BiPredicate<Class<?>, 
Dictionary<String, String>> excludes)
+public Stream<DynamicNode> toDynamicNodes(BiPredicate<Class<?>, Map<String, 
String>> excludes)
 ```
 
 ### `MatrixTestFilters`
 
 Immutable set of exclusion filters. Each filter entry optionally constrains by
-test class and/or an LDAP filter expression on the parameter dictionary (using
+test class and/or an LDAP filter expression on the parameter map (using
 OSGi's `FrameworkUtil.createFilter()`). Built via 
`MatrixTestFilters.builder()`.
 
 ## Writing a test case
diff --git 
a/testing/matrix-testsuite/src/main/java/org/apache/axiom/testutils/suite/AbstractFanOutNode.java
 
b/testing/matrix-testsuite/src/main/java/org/apache/axiom/testutils/suite/AbstractFanOutNode.java
index 8a37226bc..ef4933058 100644
--- 
a/testing/matrix-testsuite/src/main/java/org/apache/axiom/testutils/suite/AbstractFanOutNode.java
+++ 
b/testing/matrix-testsuite/src/main/java/org/apache/axiom/testutils/suite/AbstractFanOutNode.java
@@ -19,9 +19,7 @@
 package org.apache.axiom.testutils.suite;
 
 import java.util.ArrayList;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import java.util.Hashtable;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.function.BiPredicate;
@@ -74,8 +72,8 @@ public abstract class AbstractFanOutNode<T> extends 
MatrixTestNode {
     @Override
     Stream<DynamicNode> toDynamicNodes(
             Injector parentInjector,
-            Dictionary<String, String> inheritedParameters,
-            BiPredicate<Class<?>, Dictionary<String, String>> excludes) {
+            Map<String, String> inheritedParameters,
+            BiPredicate<Class<?>, Map<String, String>> excludes) {
         return values.stream()
                 .map(
                         value -> {
@@ -89,13 +87,8 @@ public abstract class AbstractFanOutNode<T> extends 
MatrixTestNode {
                                             });
 
                             Map<String, String> parameters = 
extractParameters(value);
-                            Hashtable<String, String> params = new 
Hashtable<>();
-                            for (Enumeration<String> e = 
inheritedParameters.keys();
-                                    e.hasMoreElements(); ) {
-                                String key = e.nextElement();
-                                params.put(key, inheritedParameters.get(key));
-                            }
-                            parameters.forEach(params::put);
+                            HashMap<String, String> params = new 
HashMap<>(inheritedParameters);
+                            params.putAll(parameters);
                             String displayName =
                                     parameters.entrySet().stream()
                                             .map(e -> e.getKey() + "=" + 
e.getValue())
diff --git 
a/testing/matrix-testsuite/src/main/java/org/apache/axiom/testutils/suite/InjectorNode.java
 
b/testing/matrix-testsuite/src/main/java/org/apache/axiom/testutils/suite/InjectorNode.java
index 1ab76123e..cfd19aa38 100644
--- 
a/testing/matrix-testsuite/src/main/java/org/apache/axiom/testutils/suite/InjectorNode.java
+++ 
b/testing/matrix-testsuite/src/main/java/org/apache/axiom/testutils/suite/InjectorNode.java
@@ -19,8 +19,8 @@
 package org.apache.axiom.testutils.suite;
 
 import java.util.ArrayList;
-import java.util.Dictionary;
 import java.util.List;
+import java.util.Map;
 import java.util.function.BiPredicate;
 import java.util.stream.Stream;
 
@@ -52,8 +52,8 @@ public class InjectorNode extends MatrixTestNode {
     @Override
     Stream<DynamicNode> toDynamicNodes(
             Injector parentInjector,
-            Dictionary<String, String> inheritedParameters,
-            BiPredicate<Class<?>, Dictionary<String, String>> excludes) {
+            Map<String, String> inheritedParameters,
+            BiPredicate<Class<?>, Map<String, String>> excludes) {
         Injector injector = parentInjector.createChildInjector(modules);
         return children.stream()
                 .flatMap(child -> child.toDynamicNodes(injector, 
inheritedParameters, excludes));
diff --git 
a/testing/matrix-testsuite/src/main/java/org/apache/axiom/testutils/suite/MatrixTest.java
 
b/testing/matrix-testsuite/src/main/java/org/apache/axiom/testutils/suite/MatrixTest.java
index 7fca9c115..a98ab424a 100644
--- 
a/testing/matrix-testsuite/src/main/java/org/apache/axiom/testutils/suite/MatrixTest.java
+++ 
b/testing/matrix-testsuite/src/main/java/org/apache/axiom/testutils/suite/MatrixTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.axiom.testutils.suite;
 
-import java.util.Dictionary;
+import java.util.Map;
 import java.util.function.BiPredicate;
 import java.util.stream.Stream;
 
@@ -50,8 +50,8 @@ public class MatrixTest extends MatrixTestNode {
     @Override
     Stream<DynamicNode> toDynamicNodes(
             Injector injector,
-            Dictionary<String, String> inheritedParameters,
-            BiPredicate<Class<?>, Dictionary<String, String>> excludes) {
+            Map<String, String> inheritedParameters,
+            BiPredicate<Class<?>, Map<String, String>> excludes) {
         if (excludes.test(testClass, inheritedParameters)) {
             return Stream.empty();
         }
diff --git 
a/testing/matrix-testsuite/src/main/java/org/apache/axiom/testutils/suite/MatrixTestCase.java
 
b/testing/matrix-testsuite/src/main/java/org/apache/axiom/testutils/suite/MatrixTestCase.java
index 430633980..6ca34cb00 100644
--- 
a/testing/matrix-testsuite/src/main/java/org/apache/axiom/testutils/suite/MatrixTestCase.java
+++ 
b/testing/matrix-testsuite/src/main/java/org/apache/axiom/testutils/suite/MatrixTestCase.java
@@ -18,14 +18,14 @@
  */
 package org.apache.axiom.testutils.suite;
 
-import java.util.Dictionary;
-import java.util.Hashtable;
+import java.util.HashMap;
+import java.util.Map;
 
 import junit.framework.TestCase;
 
 /** A test case that can be executed multiple times with different parameters. 
*/
 public abstract class MatrixTestCase extends TestCase implements 
TestParameterTarget {
-    private final Dictionary<String, String> parameters = new Hashtable<>();
+    private final Map<String, String> parameters = new HashMap<>();
 
     public MatrixTestCase() {
         setName(getClass().getName());
@@ -47,7 +47,7 @@ public abstract class MatrixTestCase extends TestCase 
implements TestParameterTa
         addTestParameter(name, String.valueOf(value));
     }
 
-    public final Dictionary<String, String> getTestParameters() {
+    public final Map<String, String> getTestParameters() {
         return parameters;
     }
 
diff --git 
a/testing/matrix-testsuite/src/main/java/org/apache/axiom/testutils/suite/MatrixTestFilters.java
 
b/testing/matrix-testsuite/src/main/java/org/apache/axiom/testutils/suite/MatrixTestFilters.java
index c1ed3bf62..9c30443ee 100644
--- 
a/testing/matrix-testsuite/src/main/java/org/apache/axiom/testutils/suite/MatrixTestFilters.java
+++ 
b/testing/matrix-testsuite/src/main/java/org/apache/axiom/testutils/suite/MatrixTestFilters.java
@@ -19,6 +19,8 @@
 package org.apache.axiom.testutils.suite;
 
 import java.util.Dictionary;
+import java.util.Hashtable;
+import java.util.Map;
 import java.util.function.BiPredicate;
 
 import com.google.common.collect.ImmutableList;
@@ -32,7 +34,7 @@ import org.osgi.framework.InvalidSyntaxException;
  * on test parameters. Implements {@link BiPredicate} where {@link #test} 
returns {@code true} if
  * the given test class and parameters match any of the configured filters.
  */
-public final class MatrixTestFilters implements BiPredicate<Class<?>, 
Dictionary<String, String>> {
+public final class MatrixTestFilters implements BiPredicate<Class<?>, 
Map<String, String>> {
     private static class Entry {
         private final Class<?> testClass;
         private final Filter filter;
@@ -89,9 +91,10 @@ public final class MatrixTestFilters implements 
BiPredicate<Class<?>, Dictionary
     }
 
     @Override
-    public boolean test(Class<?> testClass, Dictionary<String, String> 
parameters) {
+    public boolean test(Class<?> testClass, Map<String, String> parameters) {
+        Hashtable<String, String> hashtable = new Hashtable<>(parameters);
         for (Entry entry : entries) {
-            if (entry.matches(testClass, parameters)) {
+            if (entry.matches(testClass, hashtable)) {
                 return true;
             }
         }
diff --git 
a/testing/matrix-testsuite/src/main/java/org/apache/axiom/testutils/suite/MatrixTestNode.java
 
b/testing/matrix-testsuite/src/main/java/org/apache/axiom/testutils/suite/MatrixTestNode.java
index c132ad581..2ec07eddc 100644
--- 
a/testing/matrix-testsuite/src/main/java/org/apache/axiom/testutils/suite/MatrixTestNode.java
+++ 
b/testing/matrix-testsuite/src/main/java/org/apache/axiom/testutils/suite/MatrixTestNode.java
@@ -18,8 +18,8 @@
  */
 package org.apache.axiom.testutils.suite;
 
-import java.util.Dictionary;
-import java.util.Hashtable;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.function.BiPredicate;
 import java.util.stream.Stream;
 
@@ -39,8 +39,8 @@ import com.google.inject.Injector;
 public abstract class MatrixTestNode {
     abstract Stream<DynamicNode> toDynamicNodes(
             Injector parentInjector,
-            Dictionary<String, String> inheritedParameters,
-            BiPredicate<Class<?>, Dictionary<String, String>> excludes);
+            Map<String, String> inheritedParameters,
+            BiPredicate<Class<?>, Map<String, String>> excludes);
 
     /**
      * Converts this node (and its subtree) to JUnit 5 dynamic nodes, applying 
the supplied
@@ -50,8 +50,8 @@ public abstract class MatrixTestNode {
      * InjectorNode}.
      */
     public final Stream<DynamicNode> toDynamicNodes(
-            BiPredicate<Class<?>, Dictionary<String, String>> excludes) {
-        return toDynamicNodes(Guice.createInjector(), new Hashtable<>(), 
excludes);
+            BiPredicate<Class<?>, Map<String, String>> excludes) {
+        return toDynamicNodes(Guice.createInjector(), new HashMap<>(), 
excludes);
     }
 
     /** Converts this node (and its subtree) to JUnit 5 dynamic nodes without 
any exclusions. */

Reply via email to