File 0001-Java-8-compatibility.patch of Package open-test-reporting.34072
From ac129f1392ab200ec0d9832168cb90dae2fcb6c8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fridrich=20=C5=A0trba?= <fridrich.strba@bluewin.ch>
Date: Fri, 26 Apr 2024 15:57:53 +0200
Subject: [PATCH] Java 8 compatibility
---
.../reporting/cli/ConvertCommand.java | 4 +--
.../reporting/cli/ValidateCommand.java | 11 ++++---
.../tooling/converter/DefaultConverter.java | 25 +++++++-------
.../tooling/validator/DefaultValidator.java | 33 +++++++++++--------
.../tooling/validator/ValidationResult.java | 3 +-
5 files changed, 42 insertions(+), 34 deletions(-)
diff --git a/cli/src/main/java/org/opentest4j/reporting/cli/ConvertCommand.java b/cli/src/main/java/org/opentest4j/reporting/cli/ConvertCommand.java
index 7c12f32..f478514 100644
--- a/cli/src/main/java/org/opentest4j/reporting/cli/ConvertCommand.java
+++ b/cli/src/main/java/org/opentest4j/reporting/cli/ConvertCommand.java
@@ -38,8 +38,8 @@ public class ConvertCommand implements Callable<Integer> {
@Override
public Integer call() throws Exception {
- var targetFile = eventsXml.resolveSibling("hierarchy.xml");
- var converter = new DefaultConverter();
+ Path targetFile = eventsXml.resolveSibling("hierarchy.xml");
+ DefaultConverter converter = new DefaultConverter();
converter.convert(eventsXml, targetFile);
LOG.info("Converted {} to {}", eventsXml, targetFile);
return 0;
diff --git a/cli/src/main/java/org/opentest4j/reporting/cli/ValidateCommand.java b/cli/src/main/java/org/opentest4j/reporting/cli/ValidateCommand.java
index 03f5615..82b3289 100644
--- a/cli/src/main/java/org/opentest4j/reporting/cli/ValidateCommand.java
+++ b/cli/src/main/java/org/opentest4j/reporting/cli/ValidateCommand.java
@@ -27,6 +27,7 @@ import picocli.CommandLine.Parameters;
import java.net.URI;
import java.nio.file.Path;
+import java.util.Arrays;
import java.util.List;
import java.util.concurrent.Callable;
@@ -45,7 +46,7 @@ public class ValidateCommand implements Callable<Integer> {
List<Path> xmlFiles;
@Option(names = "--catalog")
- List<Path> catalogs = List.of();
+ List<Path> catalogs = Arrays.asList();
@Override
public Integer call() {
@@ -53,9 +54,9 @@ public class ValidateCommand implements Callable<Integer> {
}
private boolean validateAll() {
- var validator = new DefaultValidator(catalogs.stream().map(Path::toUri).toArray(URI[]::new));
+ Validator validator = new DefaultValidator(catalogs.stream().map(Path::toUri).toArray(URI[]::new));
boolean allValid = true;
- for (var xmlFile : xmlFiles) {
+ for (Path xmlFile : xmlFiles) {
allValid &= validate(validator, xmlFile);
}
return allValid;
@@ -63,9 +64,9 @@ public class ValidateCommand implements Callable<Integer> {
private boolean validate(Validator validator, Path xmlFile) {
try {
- var validationResult = validator.validate(xmlFile);
+ ValidationResult validationResult = validator.validate(xmlFile);
logValidationMessages(validationResult);
- var errors = validationResult.count(ERROR);
+ long errors = validationResult.count(ERROR);
if (errors == 0) {
LOG.info("Valid: {}", xmlFile);
return true;
diff --git a/tooling/src/main/java/org/opentest4j/reporting/tooling/converter/DefaultConverter.java b/tooling/src/main/java/org/opentest4j/reporting/tooling/converter/DefaultConverter.java
index 05135f7..9283a5c 100644
--- a/tooling/src/main/java/org/opentest4j/reporting/tooling/converter/DefaultConverter.java
+++ b/tooling/src/main/java/org/opentest4j/reporting/tooling/converter/DefaultConverter.java
@@ -39,17 +39,17 @@ import javax.xml.transform.stream.StreamResult;
import java.nio.file.Path;
import java.time.Duration;
import java.time.Instant;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.function.BiPredicate;
import java.util.function.IntFunction;
+import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;
-import static java.util.stream.Collectors.toList;
-import static java.util.stream.Collectors.toUnmodifiableSet;
import static javax.xml.XMLConstants.FEATURE_SECURE_PROCESSING;
import static javax.xml.XMLConstants.XMLNS_ATTRIBUTE;
import static javax.xml.XMLConstants.XMLNS_ATTRIBUTE_NS_URI;
@@ -70,7 +70,7 @@ public class DefaultConverter implements Converter {
private static final Set<String> EVENT_ONLY_ATTRIBUTES = Stream.of(Event.ID, Event.TIME, Started.PARENT_ID) //
.map(QualifiedName::getSimpleName) //
- .collect(toUnmodifiableSet());
+ .collect(Collectors.collectingAndThen(Collectors.toSet(), Collections::unmodifiableSet));
@Override
public void convert(Path eventsXmlFile, Path hierarchicalXmlFile) throws Exception {
@@ -182,7 +182,7 @@ public class DefaultConverter implements Converter {
private void moveChildrenToEnd(Element targetElement) {
stream(targetElement.getChildNodes()) //
.filter(child -> CHILD_NODE_NAME.equals(child.getNodeName())) //
- .collect(toList()) // avoid concurrent modification
+ .collect(Collectors.toList()) // avoid concurrent modification
.forEach(child -> {
targetElement.removeChild(child);
targetElement.appendChild(child);
@@ -201,14 +201,15 @@ public class DefaultConverter implements Converter {
private void mergeChildren(Node sourceElement, Node targetElement) {
stream(sourceElement.getChildNodes()) //
- .forEach(sourceChild -> findNode(targetElement.getChildNodes(), sourceChild.getNodeName()) //
- .ifPresentOrElse( //
- existingNode -> copyChildren(sourceChild, existingNode), //
- () -> {
- Node targetChild = sourceChild.cloneNode(true);
- targetElement.getOwnerDocument().adoptNode(targetChild);
- targetElement.appendChild(targetChild);
- }));
+ .forEach(sourceChild -> {
+ Optional<Node> existingNode = findNode(targetElement.getChildNodes(), sourceChild.getNodeName());
+ existingNode.ifPresent(existing -> copyChildren(sourceChild, existing));
+ if (!existingNode.isPresent()) {
+ Node targetChild = sourceChild.cloneNode(true);
+ targetElement.getOwnerDocument().adoptNode(targetChild);
+ targetElement.appendChild(targetChild);
+ }
+ });
}
private Optional<Node> findNode(NodeList nodes, String name) {
diff --git a/tooling/src/main/java/org/opentest4j/reporting/tooling/validator/DefaultValidator.java b/tooling/src/main/java/org/opentest4j/reporting/tooling/validator/DefaultValidator.java
index 5e5b204..8ed4d05 100644
--- a/tooling/src/main/java/org/opentest4j/reporting/tooling/validator/DefaultValidator.java
+++ b/tooling/src/main/java/org/opentest4j/reporting/tooling/validator/DefaultValidator.java
@@ -37,12 +37,16 @@ import java.io.Reader;
import java.net.URI;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.util.AbstractMap;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static java.util.Objects.requireNonNull;
import static javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI;
+import javax.xml.catalog.CatalogFeatures;
import static javax.xml.catalog.CatalogManager.catalogResolver;
import static org.opentest4j.reporting.tooling.validator.Severity.ERROR;
import static org.opentest4j.reporting.tooling.validator.Severity.WARNING;
@@ -52,11 +56,12 @@ import static org.opentest4j.reporting.tooling.validator.Severity.WARNING;
*/
public class DefaultValidator implements Validator {
- private static final Map<Namespace, String> SCHEMAS = Map.of( //
- Namespace.REPORTING_EVENTS, "/org/opentest4j/reporting/schema/events.xsd", //
- Namespace.REPORTING_HIERARCHY, "/org/opentest4j/reporting/schema/hierarchy.xsd", //
- Namespace.REPORTING_CORE, "/org/opentest4j/reporting/schema/core.xsd", //
- Namespace.REPORTING_JAVA, "/org/opentest4j/reporting/schema/java.xsd");
+ private static final Map<Namespace, String> SCHEMAS = Arrays.asList(
+ new AbstractMap.SimpleEntry<Namespace, String>(Namespace.REPORTING_EVENTS, "/org/opentest4j/reporting/schema/events.xsd"),
+ new AbstractMap.SimpleEntry<Namespace, String>(Namespace.REPORTING_HIERARCHY, "/org/opentest4j/reporting/schema/hierarchy.xsd"),
+ new AbstractMap.SimpleEntry<Namespace, String>(Namespace.REPORTING_CORE, "/org/opentest4j/reporting/schema/core.xsd"),
+ new AbstractMap.SimpleEntry<Namespace, String>(Namespace.REPORTING_JAVA, "/org/opentest4j/reporting/schema/java.xsd")
+ ).stream().collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
private final SchemaFactory schemaFactory = SchemaFactory.newInstance(W3C_XML_SCHEMA_NS_URI);
private final CatalogResolver catalogResolver;
@@ -67,13 +72,13 @@ public class DefaultValidator implements Validator {
* @param catalogs for resolving references to XML schemas
*/
public DefaultValidator(URI... catalogs) {
- var features = CatalogFeatures.builder().with(Feature.RESOLVE, "continue").build();
+ CatalogFeatures features = CatalogFeatures.builder().with(Feature.RESOLVE, "continue").build();
this.catalogResolver = catalogResolver(features, catalogs);
}
@Override
public ValidationResult validate(Path xmlFile) {
- try (var in = Files.newInputStream(xmlFile)) {
+ try (InputStream in = Files.newInputStream(xmlFile)) {
return validateSafely(xmlFile, new StreamSource(in));
}
catch (Exception e) {
@@ -82,13 +87,13 @@ public class DefaultValidator implements Validator {
}
private ValidationResult validateSafely(Path xmlFile, Source source) throws SAXException, IOException {
- var errorHandler = new CollectingErrorHandler(xmlFile);
+ CollectingErrorHandler errorHandler = new CollectingErrorHandler(xmlFile);
validate(source, errorHandler);
return errorHandler.toValidationResult();
}
private void validate(Source source, ErrorHandler errorHandler) throws SAXException, IOException {
- var validator = schemaFactory.newSchema().newValidator();
+ javax.xml.validation.Validator validator = schemaFactory.newSchema().newValidator();
validator.setResourceResolver(createResourceResolver());
validator.setErrorHandler(errorHandler);
validator.validate(source);
@@ -97,14 +102,14 @@ public class DefaultValidator implements Validator {
private LSResourceResolver createResourceResolver() {
return (type, namespaceURI, publicId, systemId, baseURI) -> {
if (namespaceURI != null) {
- var namespace = Namespace.of(namespaceURI);
+ Namespace namespace = Namespace.of(namespaceURI);
if (SCHEMAS.containsKey(namespace)) {
LSInputImpl input = new LSInputImpl();
input.setPublicId(publicId);
- var schema = SCHEMAS.get(namespace);
+ String schema = SCHEMAS.get(namespace);
input.setSystemId(requireNonNull(Namespace.class.getResource(schema)).toExternalForm());
input.setBaseURI(baseURI);
- var stream = Namespace.class.getResourceAsStream(schema);
+ InputStream stream = Namespace.class.getResourceAsStream(schema);
input.setCharacterStream(new InputStreamReader(requireNonNull(stream)));
return input;
}
@@ -227,8 +232,8 @@ public class DefaultValidator implements Validator {
}
private void addValidationMessage(Severity severity, SAXParseException e) {
- var path = e.getSystemId() == null ? xmlFile.toString() : e.getSystemId();
- var location = new Location(path, e.getLineNumber(), e.getColumnNumber());
+ String path = e.getSystemId() == null ? xmlFile.toString() : e.getSystemId();
+ Location location = new Location(path, e.getLineNumber(), e.getColumnNumber());
messages.add(new ValidationMessage(severity, location, e.getMessage()));
}
diff --git a/tooling/src/main/java/org/opentest4j/reporting/tooling/validator/ValidationResult.java b/tooling/src/main/java/org/opentest4j/reporting/tooling/validator/ValidationResult.java
index 01e9352..ea650b0 100644
--- a/tooling/src/main/java/org/opentest4j/reporting/tooling/validator/ValidationResult.java
+++ b/tooling/src/main/java/org/opentest4j/reporting/tooling/validator/ValidationResult.java
@@ -16,6 +16,7 @@
package org.opentest4j.reporting.tooling.validator;
+import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
@@ -30,7 +31,7 @@ public class ValidationResult implements Iterable<ValidationMessage> {
private final List<ValidationMessage> messages;
ValidationResult(List<ValidationMessage> messages) {
- this.messages = List.copyOf(messages);
+ this.messages = new ArrayList<ValidationMessage>(messages);
}
/**
--
2.44.0