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. */