From 0a9814052373385f99c4fb2dc74a7b036479f260 Mon Sep 17 00:00:00 2001
From: buczekp <buczekp>
Date: Mon, 16 May 2011 13:41:09 +0000
Subject: [PATCH] [LMS-2104] minor cleanup and javadoc

SVN: 21321
---
 .../TemplateBasedDataSetResourceResolver.java |  1 +
 .../shared/HierarchicalContentProvider.java   |  2 --
 .../shared/IHierarchicalContentProvider.java  | 20 ++++++++++++++++++-
 3 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/resolver/TemplateBasedDataSetResourceResolver.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/resolver/TemplateBasedDataSetResourceResolver.java
index d5ebe727983..f86218d500f 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/resolver/TemplateBasedDataSetResourceResolver.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/resolver/TemplateBasedDataSetResourceResolver.java
@@ -193,6 +193,7 @@ public class TemplateBasedDataSetResourceResolver implements IFtpPathResolver,
         IHierarchicalContentNodeFilter fileFilter = getFileFilter(evaluationResult.dataSet);
         IHierarchicalContentProvider provider = ServiceProvider.getHierarchicalContentProvider();
         IHierarchicalContent content = provider.asContent(evaluationResult.dataSet.getCode());
+        // FIXME use content.close() - otherwise data set will be locked until timeout
         IHierarchicalContentNode contentNode = content.getNode(relativePath);
         if (fileFilter.accept(contentNode))
         {
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 cee6bfab074..3d55302a1d9 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
@@ -67,7 +67,6 @@ public class HierarchicalContentProvider implements IHierarchicalContentProvider
 
     public IHierarchicalContent asContent(String dataSetCode)
     {
-        // this is temporary implementation - it shouldn't access openBIS after LMS-2172 is done
         ExternalData externalData = openbisService.tryGetDataSet(dataSetCode);
         if (externalData == null)
         {
@@ -84,7 +83,6 @@ public class HierarchicalContentProvider implements IHierarchicalContentProvider
 
     public IHierarchicalContent asContent(final IDatasetLocation datasetLocation)
     {
-        // this is temporary implementation - it should access DB instead of filesystem
         // IHierarchicalContent.close() should be called to unlock the dataset
         directoryProvider.getShareIdManager().lock(datasetLocation.getDataSetCode());
         File dataSetDirectory = directoryProvider.getDataSetDirectory(datasetLocation);
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 ebd106ed5f9..ddee350b6a9 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
@@ -23,6 +23,10 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IDatasetLocation;
 
 /**
  * A provider of {@link IHierarchicalContent} for given data set.
+ * <p>
+ * <b>NOTE</b>{@link IHierarchicalContent#close()} needs to be called to release resources when
+ * working with the content is done. Otherwise data set may e.g. remain locked in its share until
+ * timeout occurs.
  * 
  * @author Piotr Buczek
  * @author Chandrasekhar Ramakrishnan
@@ -30,11 +34,25 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IDatasetLocation;
 public interface IHierarchicalContentProvider
 {
 
+    /**
+     * <b>NOTE:</b> if possible use {@link #asContent(IDatasetLocation)} which doesn't need to
+     * retrieve information from DB
+     * 
+     * @return {@link IHierarchicalContent} for the specified data set
+     */
     IHierarchicalContent asContent(String dataSetCode);
 
+    /**
+     * @return {@link IHierarchicalContent} for the specified data set
+     */
     IHierarchicalContent asContent(IDatasetLocation datasetLocation);
 
-    // NOTE: the data set file is assumed to be locked when this method is called
+    /**
+     * <b>NOTE:</b> the data set is assumed to be locked when this method is called
+     * 
+     * @param datasetDirectory the directory file of the data set
+     * @return {@link IHierarchicalContent} for the specified data set
+     */
     IHierarchicalContent asContent(File datasetDirectory);
 
 }
-- 
GitLab