From 9aa5180c086fc60dfa5be78ce01a9ffe72368e8b Mon Sep 17 00:00:00 2001
From: Andreas Romeyke <andreas.romeyke@slub-dresden.de>
Date: Fri, 17 May 2024 11:48:31 +0200
Subject: [PATCH] - try-with-resources closes 'is', but 'is' is stored
 internally in BufferInputStream to read from

---
 PLUGIN-INF/metadata_SLUBStoragePlugin.xml                    | 2 +-
 .../dps/repository/plugin/storage/nfs/SLUBStoragePlugin.java | 5 +++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/PLUGIN-INF/metadata_SLUBStoragePlugin.xml b/PLUGIN-INF/metadata_SLUBStoragePlugin.xml
index 8b2322b..c8c96b5 100644
--- a/PLUGIN-INF/metadata_SLUBStoragePlugin.xml
+++ b/PLUGIN-INF/metadata_SLUBStoragePlugin.xml
@@ -83,7 +83,7 @@
 		</fr:x_form>
 	</pl:initParameters>
 	<pl:description>SLUB Storage Plugin</pl:description>
-	<pl:version>2.97</pl:version>
+	<pl:version>2.98</pl:version>
 	<pl:materialType>DIGITAL</pl:materialType>
 	<pl:module>Repository</pl:module>
 	<pl:generalType>TASK</pl:generalType>
diff --git a/java/org/slub/rosetta/dps/repository/plugin/storage/nfs/SLUBStoragePlugin.java b/java/org/slub/rosetta/dps/repository/plugin/storage/nfs/SLUBStoragePlugin.java
index 981cfe5..be61d39 100644
--- a/java/org/slub/rosetta/dps/repository/plugin/storage/nfs/SLUBStoragePlugin.java
+++ b/java/org/slub/rosetta/dps/repository/plugin/storage/nfs/SLUBStoragePlugin.java
@@ -479,8 +479,9 @@ public class SLUBStoragePlugin extends AbstractStorageHandler {
         contractAssertIsRelativePath(storedEntityIdentifier);
         var absolute_filename = getFullFilePath(storedEntityIdentifier);
         var absolute_path = Paths.get(absolute_filename);
-        try (InputStream is = Files.newInputStream(absolute_path)) {
-            return new BufferedInputStream(is, getBlockSize());
+        try { /* do not use try-with-resources, because is is closed */
+            InputStream is = Files.newInputStream(absolute_path);
+                return new BufferedInputStream(is, getBlockSize());
         } catch (IOException e) {
             log.error("SLUBStoragePlugin.retrieveEntity() with storedEntityIdentifier '" + storedEntityIdentifier
                     + "', I/O error, file=" + absolute_filename + " " + e.getMessage());
-- 
GitLab