From c05660e9e530623b40f06bcc58cc30a359596eae Mon Sep 17 00:00:00 2001
From: buczekp <buczekp>
Date: Tue, 12 Apr 2011 09:39:23 +0000
Subject: [PATCH] [LMS-2172] changes in dss

SVN: 20821
---
 .../generic/shared/HierarchicalContentProvider.java | 13 +++++++++++--
 .../shared/IHierarchicalContentProvider.java        |  1 +
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/HierarchicalContentProvider.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/HierarchicalContentProvider.java
index 9196f34b03d..802f510f384 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/HierarchicalContentProvider.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/HierarchicalContentProvider.java
@@ -21,6 +21,7 @@ import java.io.File;
 import ch.systemsx.cisd.common.io.HierarchicalContentFactory;
 import ch.systemsx.cisd.common.io.IHierarchicalContent;
 import ch.systemsx.cisd.common.io.IHierarchicalContentFactory;
+import ch.systemsx.cisd.common.utilities.IDelegatedAction;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IDatasetLocation;
 
@@ -66,14 +67,22 @@ public class HierarchicalContentProvider implements IHierarchicalContentProvider
     public IHierarchicalContent asContent(IDatasetLocation datasetLocation)
     {
         // this is temporary implementation - it should access DB instead of filesystem
-        // FIXME locking
+        // IHierarchicalContent.close() should be called to unlock the dataset
+        directoryProvider.getShareIdManager().lock(datasetLocation.getDatasetCode());
         File dataSetDirectory = directoryProvider.getDataSetDirectory(datasetLocation);
+
         return asContent(dataSetDirectory);
     }
 
     public IHierarchicalContent asContent(File dataSetDirectory)
     {
-        return hierarchicalContentFactory.asHierarchicalContent(dataSetDirectory);
+        return hierarchicalContentFactory.asHierarchicalContent(dataSetDirectory,
+                IDelegatedAction.DO_NOTHING);
+    }
+
+    public IHierarchicalContent asContent(File dataSetDirectory, IDelegatedAction onCloseAction)
+    {
+        return hierarchicalContentFactory.asHierarchicalContent(dataSetDirectory, onCloseAction);
     }
 
 }
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IHierarchicalContentProvider.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IHierarchicalContentProvider.java
index c5eb447cc3f..a365cad8b02 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IHierarchicalContentProvider.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IHierarchicalContentProvider.java
@@ -34,6 +34,7 @@ public interface IHierarchicalContentProvider
 
     IHierarchicalContent asContent(IDatasetLocation datasetLocation);
 
+    // the data set file is assumed to be locked
     IHierarchicalContent asContent(File datasetDirectory);
 
 }
-- 
GitLab