8157936: Files.size(Path p) returns 0 if path is from JrtFileSystem with exploded build
authorsundar
Mon, 27 Jun 2016 14:55:06 +0530
changeset 39155 61d7981116d9
parent 39154 8379e9719ad6
child 39156 92844b32bcec
8157936: Files.size(Path p) returns 0 if path is from JrtFileSystem with exploded build Reviewed-by: psandoz
jdk/src/java.base/share/classes/jdk/internal/jrtfs/ExplodedImage.java
jdk/test/jdk/internal/jrtfs/Basic.java
--- a/jdk/src/java.base/share/classes/jdk/internal/jrtfs/ExplodedImage.java	Fri Jun 24 14:19:29 2016 -0400
+++ b/jdk/src/java.base/share/classes/jdk/internal/jrtfs/ExplodedImage.java	Mon Jun 27 14:55:06 2016 +0530
@@ -25,6 +25,7 @@
 package jdk.internal.jrtfs;
 
 import java.io.IOException;
+import java.io.UncheckedIOException;
 import java.nio.file.DirectoryStream;
 import java.nio.file.FileSystem;
 import java.nio.file.FileSystemException;
@@ -138,6 +139,15 @@
             }
             return children;
         }
+
+        @Override
+        public long size() {
+            try {
+                return isDirectory() ? 0 : Files.size(path);
+            } catch (IOException ex) {
+                throw new UncheckedIOException(ex);
+            }
+        }
     }
 
     @Override
--- a/jdk/test/jdk/internal/jrtfs/Basic.java	Fri Jun 24 14:19:29 2016 -0400
+++ b/jdk/test/jdk/internal/jrtfs/Basic.java	Mon Jun 27 14:55:06 2016 +0530
@@ -715,5 +715,14 @@
         assertTrue(childCount != 0);
         assertEquals(dirPrefixOkayCount, childCount);
     }
+
+    @Test
+    public void objectClassSizeTest() throws Exception {
+        String path = "/modules/java.base/java/lang/Object.class";
+        FileSystem fs = FileSystems.getFileSystem(URI.create("jrt:/"));
+        Path classFile = fs.getPath(path);
+
+        assertTrue(Files.size(classFile) > 0L);
+    }
 }