From 8b6a544a11dee1f1b77151fb532fb1f06a7bbea6 Mon Sep 17 00:00:00 2001
From: Fabio Pistolesi <fabio.pistolesi@forgerock.com>
Date: Tue, 28 Apr 2015 13:01:03 +0000
Subject: [PATCH] OPENDJ-1972 CR-6777 Remove JDK6 compatibility layers

---
 opendj-server-legacy/src/main/java/org/opends/server/extensions/DiskSpaceMonitor.java |   28 ++++++++++++++++++++++++++--
 1 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/extensions/DiskSpaceMonitor.java b/opendj-server-legacy/src/main/java/org/opends/server/extensions/DiskSpaceMonitor.java
index cdfd581..41e2ea4 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/extensions/DiskSpaceMonitor.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/extensions/DiskSpaceMonitor.java
@@ -35,6 +35,9 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.nio.file.FileStore;
+import java.nio.file.Files;
+import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -60,7 +63,6 @@
 import org.opends.server.types.DN;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.InitializationException;
-import org.opends.server.util.Platform;
 
 /**
  * This class provides an application-wide disk space monitoring service.
@@ -270,7 +272,7 @@
     File fsMountPoint;
     try
     {
-      fsMountPoint = Platform.getFilesystem(directory);
+      fsMountPoint = getMountPoint(directory);
     }
     catch (IOException ioe)
     {
@@ -307,6 +309,28 @@
     }
   }
 
+  private File getMountPoint(File directory) throws IOException
+  {
+    Path mountPoint = directory.getAbsoluteFile().toPath();
+    Path parentDir = mountPoint.getParent();
+    FileStore dirFileStore = Files.getFileStore(mountPoint);
+    /*
+     * Since there is no concept of mount point in the APIs, iterate on all parents of
+     * the given directory until the FileSystem Store changes (hint of a different
+     * device, hence a mount point) or we get to root, which works too.
+     */
+    while (parentDir != null)
+    {
+      if (!Files.getFileStore(parentDir).equals(dirFileStore))
+      {
+        return mountPoint.toFile();
+      }
+      mountPoint = mountPoint.getParent();
+      parentDir = parentDir.getParent();
+    }
+    return mountPoint.toFile();
+  }
+
   /**
    * Removes a directory from the set of monitored directories.
    *

--
Gitblit v1.10.0