# HG changeset patch # User amurillo # Date 1467326335 0 # Node ID 5c06a566312424c8ee66bb77c6295daf7c5cf694 # Parent 4d9941b78bfd1c647e2a510cd82a401038429cfa# Parent be8b154226678a671e89a09d63c1484e4cdee3f1 Merge diff -r 4d9941b78bfd -r 5c06a5663124 nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/Source.java --- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/Source.java Thu Jun 30 22:10:11 2016 +0000 +++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/Source.java Thu Jun 30 22:38:55 2016 +0000 @@ -36,6 +36,7 @@ import java.io.Reader; import java.lang.ref.WeakReference; import java.net.MalformedURLException; +import java.net.URI; import java.net.URISyntaxException; import java.net.URL; import java.net.URLConnection; @@ -75,8 +76,8 @@ private final String name; /** - * Base directory the File or base part of the URL. Used to implement __DIR__. - * Used to load scripts relative to the 'directory' or 'base' URL of current script. + * Base path or URL of this source. Used to implement __DIR__, which can be + * used to load scripts relative to the location of the current script. * This will be null when it can't be computed. */ private final String base; @@ -875,31 +876,25 @@ } /** - * Get the base url. This is currently used for testing only + * Returns the base directory or URL for the given URL. Used to implement __DIR__. * @param url a URL - * @return base URL for url + * @return base path or URL, or null if argument is not a hierarchical URL */ public static String baseURL(final URL url) { - if (url.getProtocol().equals("file")) { - try { - final Path path = Paths.get(url.toURI()); + try { + final URI uri = url.toURI(); + + if (uri.getScheme().equals("file")) { + final Path path = Paths.get(uri); final Path parent = path.getParent(); return (parent != null) ? (parent + File.separator) : null; - } catch (final SecurityException | URISyntaxException | IOError e) { + } + if (uri.isOpaque() || uri.getPath() == null || uri.getPath().isEmpty()) { return null; } - } + return uri.resolve("").toString(); - // FIXME: is there a better way to find 'base' URL of a given URL? - String path = url.getPath(); - if (path.isEmpty()) { - return null; - } - path = path.substring(0, path.lastIndexOf('/') + 1); - final int port = url.getPort(); - try { - return new URL(url.getProtocol(), url.getHost(), port, path).toString(); - } catch (final MalformedURLException e) { + } catch (final SecurityException | URISyntaxException | IOError e) { return null; } } diff -r 4d9941b78bfd -r 5c06a5663124 nashorn/test/Makefile --- a/nashorn/test/Makefile Thu Jun 30 22:10:11 2016 +0000 +++ b/nashorn/test/Makefile Thu Jun 30 22:38:55 2016 +0000 @@ -118,19 +118,6 @@ JAVA_VM_ARGS = $(JPRT_PRODUCT_VM_ARGS) endif -# jtreg -nativepath -# -# Local make tests will be TEST_IMAGE_DIR and JPRT with jprt.use.reg.test.bundle=true -# should be JPRT_TESTNATIVE_PATH -ifdef TEST_IMAGE_DIR - TESTNATIVE_DIR = $(TEST_IMAGE_DIR) -else ifdef JPRT_TESTNATIVE_PATH - TESTNATIVE_DIR = $(JPRT_TESTNATIVE_PATH) -endif -ifdef TESTNATIVE_DIR - JTREG_NATIVE_PATH = -nativepath:$(shell $(GETMIXEDPATH) "$(TESTNATIVE_DIR)/nashorn/jtreg/native") -endif - # jtreg failure handler config ifeq ($(FAILURE_HANDLER_DIR), ) ifneq ($(TESTNATIVE_DIR), )