From cd2f2bcc94493e6186b340423036bdb6ae1c7cb1 Mon Sep 17 00:00:00 2001 From: Mateusz Jonak Date: Thu, 23 Oct 2025 17:07:42 +0200 Subject: [PATCH 1/2] =?UTF-8?q?fix(java8):=20restore=20JDK=208=20compatibi?= =?UTF-8?q?lity=20by=20removing=20Java=209=E2=80=9311=20APIs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ContractLoader: replace Optional.isEmpty() with !isPresent(). - DocumentProcessingResult: - replace List.copyOf(...) with new ArrayList<>(...) defensive copy. - replace List.of() with Collections.emptyList(). - keep immutability via Collections.unmodifiableList(new ArrayList<>(...)). - No behavioral changes; only API substitutions for JDK 8. --- .../blue/language/processor/ContractLoader.java | 4 ++-- .../processor/DocumentProcessingResult.java | 17 +++++++++-------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/main/java/blue/language/processor/ContractLoader.java b/src/main/java/blue/language/processor/ContractLoader.java index 380d49b..9503fba 100644 --- a/src/main/java/blue/language/processor/ContractLoader.java +++ b/src/main/java/blue/language/processor/ContractLoader.java @@ -46,14 +46,14 @@ ContractBundle load(Node scopeNode, String scopePath) { if (contract instanceof ChannelContract) { ChannelContract channel = (ChannelContract) contract; if (!ProcessorContractConstants.isProcessorManagedChannel(channel) - && registry.lookupChannel(channel.getClass()).isEmpty()) { + && !registry.lookupChannel(channel.getClass()).isPresent()) { throw new MustUnderstandFailureException( "Unsupported contract type: " + channel.getClass().getName()); } builder.addChannel(key, channel); } else if (contract instanceof HandlerContract) { HandlerContract handler = (HandlerContract) contract; - if (registry.lookupHandler(handler.getClass()).isEmpty()) { + if (!registry.lookupHandler(handler.getClass()).isPresent()) { throw new MustUnderstandFailureException( "Unsupported contract type: " + handler.getClass().getName()); } diff --git a/src/main/java/blue/language/processor/DocumentProcessingResult.java b/src/main/java/blue/language/processor/DocumentProcessingResult.java index 7b1659a..d51fe50 100644 --- a/src/main/java/blue/language/processor/DocumentProcessingResult.java +++ b/src/main/java/blue/language/processor/DocumentProcessingResult.java @@ -2,6 +2,7 @@ import blue.language.model.Node; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Objects; @@ -18,12 +19,12 @@ public final class DocumentProcessingResult { private final String failureReason; private DocumentProcessingResult(Node document, - List triggeredEvents, - long totalGas, - boolean capabilityFailure, - String failureReason) { + List triggeredEvents, + long totalGas, + boolean capabilityFailure, + String failureReason) { this.document = document; - this.triggeredEvents = Collections.unmodifiableList(triggeredEvents); + this.triggeredEvents = Collections.unmodifiableList(new ArrayList<>(triggeredEvents)); this.totalGas = totalGas; this.capabilityFailure = capabilityFailure; this.failureReason = failureReason; @@ -32,12 +33,12 @@ private DocumentProcessingResult(Node document, public static DocumentProcessingResult of(Node document, List triggeredEvents, long totalGas) { Objects.requireNonNull(document, "document"); Objects.requireNonNull(triggeredEvents, "triggeredEvents"); - return new DocumentProcessingResult(document, List.copyOf(triggeredEvents), totalGas, false, null); + return new DocumentProcessingResult(document, new ArrayList<>(triggeredEvents), totalGas, false, null); } public static DocumentProcessingResult capabilityFailure(Node document, String reason) { Objects.requireNonNull(document, "document"); - return new DocumentProcessingResult(document, List.of(), 0L, true, reason); + return new DocumentProcessingResult(document, Collections.emptyList(), 0L, true, reason); } public Node document() { @@ -59,4 +60,4 @@ public boolean capabilityFailure() { public String failureReason() { return failureReason; } -} +} \ No newline at end of file From d267d65678871db4acb16b42abb5ab92011314f4 Mon Sep 17 00:00:00 2001 From: Mateusz Jonak Date: Thu, 23 Oct 2025 17:12:01 +0200 Subject: [PATCH 2/2] test(java8): replace Path.of/Files.readString with JDK 8 equivalents - Use Paths.get and Files.readAllBytes + StandardCharsets.UTF_8 in ContractMappingIntegrationTest. - Removes Java 11 APIs to restore test compilation on JDK 8. - No behavioral changes. --- .../processor/ContractMappingIntegrationTest.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/test/java/blue/language/processor/ContractMappingIntegrationTest.java b/src/test/java/blue/language/processor/ContractMappingIntegrationTest.java index 1ea2931..84b1914 100644 --- a/src/test/java/blue/language/processor/ContractMappingIntegrationTest.java +++ b/src/test/java/blue/language/processor/ContractMappingIntegrationTest.java @@ -16,8 +16,9 @@ import blue.language.utils.TypeClassResolver; import org.junit.jupiter.api.Test; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; -import java.nio.file.Path; +import java.nio.file.Paths; import java.util.Map; import static org.junit.jupiter.api.Assertions.*; @@ -26,7 +27,10 @@ class ContractMappingIntegrationTest { @Test void loadsAllContractsFromBlueYaml() throws Exception { - String yaml = Files.readString(Path.of("src/test/resources/processor/contracts/all-contracts.blue")); + String yaml = new String( + Files.readAllBytes(Paths.get("src/test/resources/processor/contracts/all-contracts.blue")), + StandardCharsets.UTF_8 + ); Blue blue = new Blue(); Node document = blue.yamlToNode(yaml);