aboutsummaryrefslogtreecommitdiff
path: root/src/jdk/nashorn/api/scripting/NashornScriptEngineFactory.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jdk/nashorn/api/scripting/NashornScriptEngineFactory.java')
-rw-r--r--src/jdk/nashorn/api/scripting/NashornScriptEngineFactory.java74
1 files changed, 66 insertions, 8 deletions
diff --git a/src/jdk/nashorn/api/scripting/NashornScriptEngineFactory.java b/src/jdk/nashorn/api/scripting/NashornScriptEngineFactory.java
index beb0c2a0..4ddcf947 100644
--- a/src/jdk/nashorn/api/scripting/NashornScriptEngineFactory.java
+++ b/src/jdk/nashorn/api/scripting/NashornScriptEngineFactory.java
@@ -135,10 +135,13 @@ public final class NashornScriptEngineFactory implements ScriptEngineFactory {
return sb.toString();
}
+ // default options passed to Nashorn script engine
+ private static final String[] DEFAULT_OPTIONS = new String[] { "-doe" };
+
@Override
public ScriptEngine getScriptEngine() {
try {
- return new NashornScriptEngine(this, getAppClassLoader());
+ return new NashornScriptEngine(this, DEFAULT_OPTIONS, getAppClassLoader(), null);
} catch (final RuntimeException e) {
if (Context.DEBUG) {
e.printStackTrace();
@@ -152,10 +155,27 @@ public final class NashornScriptEngineFactory implements ScriptEngineFactory {
*
* @param appLoader class loader to be used as script "app" class loader.
* @return newly created script engine.
+ * @throws SecurityException
+ * if the security manager's {@code checkPermission}
+ * denies {@code RuntimePermission("nashorn.setConfig")}
*/
public ScriptEngine getScriptEngine(final ClassLoader appLoader) {
- checkConfigPermission();
- return new NashornScriptEngine(this, appLoader);
+ return newEngine(DEFAULT_OPTIONS, appLoader, null);
+ }
+
+ /**
+ * Create a new Script engine initialized by given class filter.
+ *
+ * @param classFilter class filter to use.
+ * @return newly created script engine.
+ * @throws NullPointerException if {@code classFilter} is {@code null}
+ * @throws SecurityException
+ * if the security manager's {@code checkPermission}
+ * denies {@code RuntimePermission("nashorn.setConfig")}
+ */
+ public ScriptEngine getScriptEngine(final ClassFilter classFilter) {
+ classFilter.getClass(); // null check
+ return newEngine(DEFAULT_OPTIONS, getAppClassLoader(), classFilter);
}
/**
@@ -163,10 +183,14 @@ public final class NashornScriptEngineFactory implements ScriptEngineFactory {
*
* @param args arguments array passed to script engine.
* @return newly created script engine.
+ * @throws NullPointerException if {@code args} is {@code null}
+ * @throws SecurityException
+ * if the security manager's {@code checkPermission}
+ * denies {@code RuntimePermission("nashorn.setConfig")}
*/
- public ScriptEngine getScriptEngine(final String[] args) {
- checkConfigPermission();
- return new NashornScriptEngine(this, args, getAppClassLoader());
+ public ScriptEngine getScriptEngine(final String... args) {
+ args.getClass(); // null check
+ return newEngine(args, getAppClassLoader(), null);
}
/**
@@ -175,10 +199,44 @@ public final class NashornScriptEngineFactory implements ScriptEngineFactory {
* @param args arguments array passed to script engine.
* @param appLoader class loader to be used as script "app" class loader.
* @return newly created script engine.
+ * @throws NullPointerException if {@code args} is {@code null}
+ * @throws SecurityException
+ * if the security manager's {@code checkPermission}
+ * denies {@code RuntimePermission("nashorn.setConfig")}
*/
public ScriptEngine getScriptEngine(final String[] args, final ClassLoader appLoader) {
+ args.getClass(); // null check
+ return newEngine(args, appLoader, null);
+ }
+
+ /**
+ * Create a new Script engine initialized by given arguments.
+ *
+ * @param args arguments array passed to script engine.
+ * @param appLoader class loader to be used as script "app" class loader.
+ * @param classFilter class filter to use.
+ * @return newly created script engine.
+ * @throws NullPointerException if {@code args} or {@code classFilter} is {@code null}
+ * @throws SecurityException
+ * if the security manager's {@code checkPermission}
+ * denies {@code RuntimePermission("nashorn.setConfig")}
+ */
+ public ScriptEngine getScriptEngine(final String[] args, final ClassLoader appLoader, final ClassFilter classFilter) {
+ args.getClass(); // null check
+ classFilter.getClass(); // null check
+ return newEngine(args, appLoader, classFilter);
+ }
+
+ private ScriptEngine newEngine(final String[] args, final ClassLoader appLoader, final ClassFilter classFilter) {
checkConfigPermission();
- return new NashornScriptEngine(this, args, appLoader);
+ try {
+ return new NashornScriptEngine(this, args, appLoader, classFilter);
+ } catch (final RuntimeException e) {
+ if (Context.DEBUG) {
+ e.printStackTrace();
+ }
+ throw e;
+ }
}
// -- Internals only below this point
@@ -220,7 +278,7 @@ public final class NashornScriptEngineFactory implements ScriptEngineFactory {
// Revisit: script engine implementation needs the capability to
// find the class loader of the context in which the script engine
// is running so that classes will be found and loaded properly
- ClassLoader ccl = Thread.currentThread().getContextClassLoader();
+ final ClassLoader ccl = Thread.currentThread().getContextClassLoader();
return (ccl == null)? NashornScriptEngineFactory.class.getClassLoader() : ccl;
}
}