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

Robert Field robert.field at oracle.com
Mon May 7 15:35:41 UTC 2018


Thanks Chris!

For those that like to see webrevs, here is one for Chris' change:

      http://cr.openjdk.java.net/~rfield/8202690v0.webrev/

-Robert



On 05/07/18 02:25, Chris Yin wrote:
> 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
>
> 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.javaMon 
> May 07 07:44:49 2018 +0530
> +++ 
> b/src/jdk.jshell/share/classes/jdk/internal/jshell/tool/JShellTool.javaMon 
> 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.javaMon May 07 07:44:49 
> 2018 +0530
> +++ b/test/langtools/jdk/jshell/ToolBasicTest.javaMon 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