From 8c0fe7682b304446bf4f7b4a927f7a5c021bb16b Mon Sep 17 00:00:00 2001 From: Anthony Dahanne Date: Fri, 11 Aug 2023 23:07:44 -0400 Subject: [PATCH] Fix unclosed streams * make sure Files.path() properly closes its directory, using try-with-resources * missing one, found by @violetagg * cherry pick from 1abd51645620c8591a99223232aaf41e74840677 and ec894cb82fdc5f038b595e886cb54ed7aa869606 --- spring-cloud-bindings-tests/pom.xml | 2 +- .../java/org/springframework/cloud/bindings/Binding.java | 8 ++++---- .../java/org/springframework/cloud/bindings/Bindings.java | 5 +++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/spring-cloud-bindings-tests/pom.xml b/spring-cloud-bindings-tests/pom.xml index 329c6db..aa45260 100644 --- a/spring-cloud-bindings-tests/pom.xml +++ b/spring-cloud-bindings-tests/pom.xml @@ -26,7 +26,7 @@ org.springframework.cloud spring-cloud-bindings - ${version} + ${project.version} test diff --git a/spring-cloud-bindings/src/main/java/org/springframework/cloud/bindings/Binding.java b/spring-cloud-bindings/src/main/java/org/springframework/cloud/bindings/Binding.java index ebd707b..0901388 100644 --- a/spring-cloud-bindings/src/main/java/org/springframework/cloud/bindings/Binding.java +++ b/spring-cloud-bindings/src/main/java/org/springframework/cloud/bindings/Binding.java @@ -23,6 +23,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.*; import java.util.stream.Collectors; +import java.util.stream.Stream; /** * A representation of a binding as defined by the @@ -114,13 +115,12 @@ public final class Binding { return Collections.emptyMap(); } - try { - return Files.list(path) - .filter(p -> { + try (Stream paths = Files.list(path)) { + return paths.filter(p -> { try { return !Files.isHidden(p); } catch (IOException e) { - throw new IllegalStateException(String.format("unable to determine id file '%s' is hidden", p), e); + throw new IllegalStateException(String.format("unable to determine if file '%s' is hidden", p), e); } }) .filter(p -> !Files.isDirectory(p)) diff --git a/spring-cloud-bindings/src/main/java/org/springframework/cloud/bindings/Bindings.java b/spring-cloud-bindings/src/main/java/org/springframework/cloud/bindings/Bindings.java index 4f59dd8..6e1a541 100644 --- a/spring-cloud-bindings/src/main/java/org/springframework/cloud/bindings/Bindings.java +++ b/spring-cloud-bindings/src/main/java/org/springframework/cloud/bindings/Bindings.java @@ -26,6 +26,7 @@ import java.util.Collections; import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import java.util.stream.Stream; /** @@ -81,8 +82,8 @@ public final class Bindings { throw new IllegalArgumentException(String.format("%s is not a directory", p)); } - try { - this.bindings = Files.list(p) + try (Stream paths = Files.list(p)) { + this.bindings = paths .map(Binding::new) .collect(Collectors.toList()); } catch (IOException e) {