RFR 8202690: jdk/jshell/ToolBasicTest.java failed in testOpenFileOverHttp() and testOpenLocalFileUrl()

Chris Yin xu.y.yin at oracle.com
Mon May 7 09:25:07 UTC 2018


Please have a review for below suggested fix for 8202690 to handle windows platform correctly after 8199912, thanks

bug: https://bugs.openjdk.java.net/browse/JDK-8202690 <https://bugs.openjdk.java.net/browse/JDK-8202690>

Suggested fix as below:

diff -r caf05d64138f src/jdk.jshell/share/classes/jdk/internal/jshell/tool/JShellTool.java
--- a/src/jdk.jshell/share/classes/jdk/internal/jshell/tool/JShellTool.java	Mon May 07 07:44:49 2018 +0530
+++ b/src/jdk.jshell/share/classes/jdk/internal/jshell/tool/JShellTool.java	Mon May 07 17:12:20 2018 +0800
@@ -42,6 +42,7 @@
 import java.lang.module.ModuleReference;
 import java.net.MalformedURLException;
 import java.net.URI;
+import java.net.URISyntaxException;
 import java.net.URL;
 import java.nio.charset.Charset;
 import java.nio.file.FileSystems;
@@ -3000,19 +3001,34 @@
                     regenerateOnDeath = false;
                     scanner = new Scanner(cmdin);
                 } else {
-                    Path path = toPathResolvingUserHome(filename);
+                    Path path = null;
+                    URL url = null;
                     String resource;
-                    if (Files.exists(path)) {
+                    try {
+                        path = toPathResolvingUserHome(filename);
+                    } catch (InvalidPathException ipe) {
+                        try {
+                            url = new URL(filename);
+                            if (url.getProtocol().equalsIgnoreCase("file")) {
+                                path = Paths.get(url.toURI());
+                            }
+                        } catch (MalformedURLException | URISyntaxException e) {
+                            throw new FileNotFoundException(filename);
+                        }
+                    }
+                    if (path != null && Files.exists(path)) {
                         scanner = new Scanner(new FileReader(path.toString()));
                     } else if ((resource = getResource(filename)) != null) {
                         scanner = new Scanner(new StringReader(resource));
                     } else {
-                        try {
-                            var url = new URL(filename);
-                            scanner = new Scanner(url.openStream());
-                        } catch (MalformedURLException mue) {
-                            throw new FileNotFoundException(filename);
+                        if (url == null) {
+                            try {
+                                url = new URL(filename);
+                            } catch (MalformedURLException mue) {
+                                throw new FileNotFoundException(filename);
+                            }
                         }
+                        scanner = new Scanner(url.openStream());
                     }
                 }
                 try (var scannerIOContext = new ScannerIOContext(scanner)) {
diff -r caf05d64138f test/langtools/jdk/jshell/ToolBasicTest.java
--- a/test/langtools/jdk/jshell/ToolBasicTest.java	Mon May 07 07:44:49 2018 +0530
+++ b/test/langtools/jdk/jshell/ToolBasicTest.java	Mon May 07 17:12:20 2018 +0800
@@ -501,7 +501,7 @@
         compiler.writeToFile(path, "int a = 10;int b = 20;int c = a + b;\n");
         for (String s : new String[]{"/o", "/open"}) {
             test(
-                    (a) -> assertCommand(a, s + " file://" + path.toString(), ""),
+                    (a) -> assertCommand(a, s + " " + path.toUri(), ""),
                     (a) -> assertCommand(a, "a", "a ==> 10"),
                     (a) -> assertCommand(a, "b", "b ==> 20"),
                     (a) -> assertCommand(a, "c", "c ==> 30")


Regards,
Chris


More information about the kulla-dev mailing list