From 1c16b535dfb39c648a99028f9ced0e0e5364c3a3 Mon Sep 17 00:00:00 2001
From: cramakri <cramakri>
Date: Fri, 27 Jul 2012 11:19:12 +0000
Subject: [PATCH] BIS-38 SP-204 : Close hierarchical content objects

SVN: 26238
---
 ...InfoDBConsistencyCheckProcessingPlugin.java | 18 ++++++++++++++----
 ...DBConsistencyCheckProcessingPluginTest.java | 10 +++++++++-
 2 files changed, 23 insertions(+), 5 deletions(-)

diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DataSetAndPathInfoDBConsistencyCheckProcessingPlugin.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DataSetAndPathInfoDBConsistencyCheckProcessingPlugin.java
index b20e20712a7..2a20b05af54 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DataSetAndPathInfoDBConsistencyCheckProcessingPlugin.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DataSetAndPathInfoDBConsistencyCheckProcessingPlugin.java
@@ -94,12 +94,12 @@ public class DataSetAndPathInfoDBConsistencyCheckProcessingPlugin implements IPr
 
         for (DatasetDescription dataset : datasets)
         {
+            IHierarchicalContent fileContent = null;
+            IHierarchicalContent pathInfoContent = null;
             try
             {
-                IHierarchicalContent fileContent =
-                        getFileProvider().asContent(dataset.getDataSetCode());
-                IHierarchicalContent pathInfoContent =
-                        getPathInfoProvider().asContent(dataset.getDataSetCode());
+                fileContent = getFileProvider().asContent(dataset.getDataSetCode());
+                pathInfoContent = getPathInfoProvider().asContent(dataset.getDataSetCode());
 
                 List<Difference> datasetDifferences = new ArrayList<Difference>();
 
@@ -128,6 +128,16 @@ public class DataSetAndPathInfoDBConsistencyCheckProcessingPlugin implements IPr
                         Status.createError("Couldn't check consistency of the file system and the path info database for a data set: "
                                 + dataset.getDataSetCode()
                                 + " because of the following exception: " + e.getMessage()));
+            } finally
+            {
+                if (null != fileContent)
+                {
+                    fileContent.close();
+                }
+                if (null != pathInfoContent)
+                {
+                    pathInfoContent.close();
+                }
             }
         }
 
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DataSetAndPathInfoDBConsistencyCheckProcessingPluginTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DataSetAndPathInfoDBConsistencyCheckProcessingPluginTest.java
index 05806ea72bd..242538962b9 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DataSetAndPathInfoDBConsistencyCheckProcessingPluginTest.java
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DataSetAndPathInfoDBConsistencyCheckProcessingPluginTest.java
@@ -116,6 +116,7 @@ public class DataSetAndPathInfoDBConsistencyCheckProcessingPluginTest extends
                     childIsDirectory();
                     getChildFileLength();
                     childIsChecksumPrecalculated();
+                    closeContent();
                     sendEmail();
                 }
 
@@ -127,6 +128,12 @@ public class DataSetAndPathInfoDBConsistencyCheckProcessingPluginTest extends
                             new EMailAddress("a@bc.de"));
                 }
 
+                protected void closeContent()
+                {
+                    oneOf(fileContent).close();
+                    oneOf(pathInfoContent).close();
+                }
+
                 protected void childIsChecksumPrecalculated()
                 {
                     oneOf(pathInfoChildNode).isChecksumCRC32Precalculated();
@@ -145,7 +152,7 @@ public class DataSetAndPathInfoDBConsistencyCheckProcessingPluginTest extends
                 {
                     exactly(2).of(fileChildNode).isDirectory();
                     will(returnValue(false));
-                    exactly(2).of(pathInfoChildNode).isDirectory();
+                    exactly(1).of(pathInfoChildNode).isDirectory();
                     will(returnValue(false));
                 }
 
@@ -214,5 +221,6 @@ public class DataSetAndPathInfoDBConsistencyCheckProcessingPluginTest extends
                 }
             });
         plugin.process(Arrays.asList(ds1), processingContext);
+        context.assertIsSatisfied();
     }
 }
-- 
GitLab