--- 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;
}
}
--- 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 <dir>
-#
-# 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), )