From 69ac28fe23a48ed451284934ab7b965baad60f3d Mon Sep 17 00:00:00 2001
From: cramakri <cramakri>
Date: Thu, 1 Apr 2010 13:18:54 +0000
Subject: [PATCH] LMS-1465 Propogated an exception and made test independent of
 order of return values.

SVN: 15329
---
 .../dss/generic/server/DssServiceRpcV1.java   |  2 +-
 .../dss/rpc/shared/FileInfoDssBuilder.java    | 21 +++++++------------
 .../generic/server/DssServiceRpcV1Test.java   | 21 ++++++++++++-------
 3 files changed, 23 insertions(+), 21 deletions(-)

diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DssServiceRpcV1.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DssServiceRpcV1.java
index afed1b37578..7ed056635e1 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DssServiceRpcV1.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DssServiceRpcV1.java
@@ -91,7 +91,7 @@ public class DssServiceRpcV1 extends AbstractDssServiceRpc implements IDssServic
      * @param isRecursive If true, directories will be recursively appended to the list
      */
     private void appendFileInfosForFile(File requestedFile, String hierarchyRoot,
-            ArrayList<FileInfoDss> list, boolean isRecursive)
+            ArrayList<FileInfoDss> list, boolean isRecursive) throws IOException
     {
         FileInfoDssBuilder factory = new FileInfoDssBuilder(hierarchyRoot);
         factory.appendFileInfosForFile(requestedFile, list, isRecursive);
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/FileInfoDssBuilder.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/FileInfoDssBuilder.java
index e3976a9e2f5..95db120cded 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/FileInfoDssBuilder.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/FileInfoDssBuilder.java
@@ -50,7 +50,7 @@ public class FileInfoDssBuilder
      * @param isRecursive If true, directories will be recursively appended to the list
      */
     public void appendFileInfosForFile(File requestedFile, ArrayList<FileInfoDss> list,
-            boolean isRecursive)
+            boolean isRecursive) throws IOException
     {
         // at the top level, we should list the contents of directories, but only recurse if the
         // search is recursive
@@ -58,7 +58,7 @@ public class FileInfoDssBuilder
     }
 
     private void appendFileInfosForFile(File requestedFile, ArrayList<FileInfoDss> list,
-            int maxDepth)
+            int maxDepth) throws IOException
     {
         FileInfoDss fileInfo = fileInfoForFile(requestedFile);
         list.add(fileInfo);
@@ -76,7 +76,7 @@ public class FileInfoDssBuilder
         }
     }
 
-    private FileInfoDss fileInfoForFile(File file)
+    private FileInfoDss fileInfoForFile(File file) throws IOException
     {
         FileInfoDss fileInfo = new FileInfoDss();
 
@@ -96,17 +96,12 @@ public class FileInfoDssBuilder
     /**
      * Convert the path for file to a path relative to the root of the data set
      */
-    private String pathRelativeToRoot(File file)
+    private String pathRelativeToRoot(File file) throws IOException
     {
         String path;
-        try
-        {
-            path = file.getCanonicalPath();
-            path = path.substring(hierarchyRoot.length());
-            return (path.length() > 0) ? path : "/";
-        } catch (IOException ex)
-        {
-            return "UNKNOWN";
-        }
+        path = file.getCanonicalPath();
+        path = path.substring(hierarchyRoot.length());
+        return (path.length() > 0) ? path : "/";
+
     }
 }
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/DssServiceRpcV1Test.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/DssServiceRpcV1Test.java
index 46bcc129567..40ece93c6cd 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/DssServiceRpcV1Test.java
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/DssServiceRpcV1Test.java
@@ -167,13 +167,20 @@ public class DssServiceRpcV1Test extends AbstractFileSystemTestCase
             ++i;
         }
         assertEquals(2, dirCount);
-        FileInfoDss fileInfo = fileInfos[fileIndices[0]];
-        assertEquals("/foo.txt", fileInfo.getPath());
-        assertEquals(100, fileInfo.getFileSize());
-
-        fileInfo = fileInfos[fileIndices[1]];
-        assertEquals("/stuff/bar.txt", fileInfo.getPath());
-        assertEquals(110, fileInfo.getFileSize());
+        for (i = 0; i < 2; ++i)
+        {
+            FileInfoDss fileInfo = fileInfos[fileIndices[i]];
+            if ("/foo.txt".equals(fileInfo.getPath()))
+            {
+                assertEquals(100, fileInfo.getFileSize());
+            } else if ("/stuff/bar.txt".equals(fileInfo.getPath()))
+            {
+                assertEquals(110, fileInfo.getFileSize());
+            } else
+            {
+                fail("Received unexpected file.");
+            }
+        }
 
         context.assertIsSatisfied();
     }
-- 
GitLab