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 9196f34b03dbc951ae7f491065737d3cde20c50d..802f510f384909264a45804c2c6d638137fa36f3 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 c5eb447cc3fe7ab44f3ce44bee4cf32e4dfa2636..a365cad8b020b876d5c50d945cc80129126b49f5 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); }