aboutsummaryrefslogtreecommitdiff
path: root/src/jdk/nashorn/internal/runtime/NashornLoader.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jdk/nashorn/internal/runtime/NashornLoader.java')
-rw-r--r--src/jdk/nashorn/internal/runtime/NashornLoader.java167
1 files changed, 0 insertions, 167 deletions
diff --git a/src/jdk/nashorn/internal/runtime/NashornLoader.java b/src/jdk/nashorn/internal/runtime/NashornLoader.java
deleted file mode 100644
index 237ccaa6..00000000
--- a/src/jdk/nashorn/internal/runtime/NashornLoader.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package jdk.nashorn.internal.runtime;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.security.CodeSource;
-import java.security.Permission;
-import java.security.PermissionCollection;
-import java.security.Permissions;
-import java.security.SecureClassLoader;
-
-/**
- * Superclass for Nashorn class loader classes.
- */
-abstract class NashornLoader extends SecureClassLoader {
- private static final String OBJECTS_PKG = "jdk.nashorn.internal.objects";
- private static final String RUNTIME_PKG = "jdk.nashorn.internal.runtime";
- private static final String RUNTIME_ARRAYS_PKG = "jdk.nashorn.internal.runtime.arrays";
- private static final String RUNTIME_LINKER_PKG = "jdk.nashorn.internal.runtime.linker";
- private static final String SCRIPTS_PKG = "jdk.nashorn.internal.scripts";
-
- private static final Permission[] SCRIPT_PERMISSIONS;
-
- static {
- /*
- * Generated classes get access to runtime, runtime.linker, objects, scripts packages.
- * Note that the actual scripts can not access these because Java.type, Packages
- * prevent these restricted packages. And Java reflection and JSR292 access is prevented
- * for scripts. In other words, nashorn generated portions of script classes can access
- * classes in these implementation packages.
- */
- SCRIPT_PERMISSIONS = new Permission[] {
- new RuntimePermission("accessClassInPackage." + RUNTIME_PKG),
- new RuntimePermission("accessClassInPackage." + RUNTIME_LINKER_PKG),
- new RuntimePermission("accessClassInPackage." + OBJECTS_PKG),
- new RuntimePermission("accessClassInPackage." + SCRIPTS_PKG),
- new RuntimePermission("accessClassInPackage." + RUNTIME_ARRAYS_PKG)
- };
- }
-
- NashornLoader(final ClassLoader parent) {
- super(parent);
- }
-
- protected static void checkPackageAccess(final String name) {
- final int i = name.lastIndexOf('.');
- if (i != -1) {
- final SecurityManager sm = System.getSecurityManager();
- if (sm != null) {
- final String pkgName = name.substring(0, i);
- switch (pkgName) {
- case RUNTIME_PKG:
- case RUNTIME_ARRAYS_PKG:
- case RUNTIME_LINKER_PKG:
- case OBJECTS_PKG:
- case SCRIPTS_PKG:
- // allow it.
- break;
- default:
- sm.checkPackageAccess(pkgName);
- }
- }
- }
- }
-
- @Override
- protected PermissionCollection getPermissions(final CodeSource codesource) {
- final Permissions permCollection = new Permissions();
- for (final Permission perm : SCRIPT_PERMISSIONS) {
- permCollection.add(perm);
- }
- return permCollection;
- }
-
- /**
- * Create a secure URL class loader for the given classpath
- * @param classPath classpath for the loader to search from
- * @param parent the parent class loader for the new class loader
- * @return the class loader
- */
- static ClassLoader createClassLoader(final String classPath, final ClassLoader parent) {
- final URL[] urls = pathToURLs(classPath);
- return URLClassLoader.newInstance(urls, parent);
- }
-
- /*
- * Utility method for converting a search path string to an array
- * of directory and JAR file URLs.
- *
- * @param path the search path string
- * @return the resulting array of directory and JAR file URLs
- */
- private static URL[] pathToURLs(final String path) {
- final String[] components = path.split(File.pathSeparator);
- URL[] urls = new URL[components.length];
- int count = 0;
- while(count < components.length) {
- final URL url = fileToURL(new File(components[count]));
- if (url != null) {
- urls[count++] = url;
- }
- }
- if (urls.length != count) {
- final URL[] tmp = new URL[count];
- System.arraycopy(urls, 0, tmp, 0, count);
- urls = tmp;
- }
- return urls;
- }
-
- /*
- * Returns the directory or JAR file URL corresponding to the specified
- * local file name.
- *
- * @param file the File object
- * @return the resulting directory or JAR file URL, or null if unknown
- */
- private static URL fileToURL(final File file) {
- String name;
- try {
- name = file.getCanonicalPath();
- } catch (final IOException e) {
- name = file.getAbsolutePath();
- }
- name = name.replace(File.separatorChar, '/');
- if (!name.startsWith("/")) {
- name = "/" + name;
- }
- // If the file does not exist, then assume that it's a directory
- if (!file.isFile()) {
- name = name + "/";
- }
- try {
- return new URL("file", "", name);
- } catch (final MalformedURLException e) {
- throw new IllegalArgumentException("file");
- }
- }
-}
-