changeset 2672:47ab0dcec3e8

6978511: (file) Path.toRealPath should fail if not resolving links and file does not exist Reviewed-by: forax, chegar
author alanb
date Mon, 23 Aug 2010 17:11:07 +0100
parents 03218163f4d5
children f4a2b4e7a831
files src/solaris/classes/sun/nio/fs/UnixPath.java test/java/nio/file/Path/Misc.java
diffstat 2 files changed, 22 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/solaris/classes/sun/nio/fs/UnixPath.java	Mon Aug 23 16:27:56 2010 +0100
+++ b/src/solaris/classes/sun/nio/fs/UnixPath.java	Mon Aug 23 17:11:07 2010 +0100
@@ -1141,6 +1141,13 @@
             }
             result = result.resolve(element);
         }
+
+        // check file exists (without following links)
+        try {
+            UnixFileAttributes.get(result, false);
+        } catch (UnixException x) {
+            x.rethrowAsIOException(result);
+        }
         return result;
     }
 
--- a/test/java/nio/file/Path/Misc.java	Mon Aug 23 16:27:56 2010 +0100
+++ b/test/java/nio/file/Path/Misc.java	Mon Aug 23 17:11:07 2010 +0100
@@ -261,6 +261,21 @@
         assertTrue(file.toRealPath(true).isSameFile(file.toRealPath(false)));
 
         /**
+         * Test: toRealPath should fail if file does not exist
+         */
+        Path doesNotExist = dir.resolve("DoesNotExist");
+        try {
+            doesNotExist.toRealPath(true);
+            throw new RuntimeException("IOException expected");
+        } catch (IOException expected) {
+        }
+        try {
+            doesNotExist.toRealPath(false);
+            throw new RuntimeException("IOException expected");
+        } catch (IOException expected) {
+        }
+
+        /**
          * Test: toRealPath(true) should resolve links
          */
         if (supportsLinks) {