161 * @return newly created script engine. 162 * @throws SecurityException 163 * if the security manager's {@code checkPermission} 164 * denies {@code RuntimePermission("nashorn.setConfig")} 165 */ 166 public ScriptEngine getScriptEngine(final ClassLoader appLoader) { 167 return newEngine(DEFAULT_OPTIONS, appLoader, null); 168 } 169 170 /** 171 * Create a new Script engine initialized by given class filter. 172 * 173 * @param classFilter class filter to use. 174 * @return newly created script engine. 175 * @throws NullPointerException if {@code classFilter} is {@code null} 176 * @throws SecurityException 177 * if the security manager's {@code checkPermission} 178 * denies {@code RuntimePermission("nashorn.setConfig")} 179 */ 180 public ScriptEngine getScriptEngine(final ClassFilter classFilter) { 181 Objects.requireNonNull(classFilter); 182 return newEngine(DEFAULT_OPTIONS, getAppClassLoader(), classFilter); 183 } 184 185 /** 186 * Create a new Script engine initialized by given arguments. 187 * 188 * @param args arguments array passed to script engine. 189 * @return newly created script engine. 190 * @throws NullPointerException if {@code args} is {@code null} 191 * @throws SecurityException 192 * if the security manager's {@code checkPermission} 193 * denies {@code RuntimePermission("nashorn.setConfig")} 194 */ 195 public ScriptEngine getScriptEngine(final String... args) { 196 Objects.requireNonNull(args); 197 return newEngine(args, getAppClassLoader(), null); 198 } 199 200 /** 201 * Create a new Script engine initialized by given arguments. 202 * 203 * @param args arguments array passed to script engine. 204 * @param appLoader class loader to be used as script "app" class loader. 205 * @return newly created script engine. 206 * @throws NullPointerException if {@code args} is {@code null} 207 * @throws SecurityException 208 * if the security manager's {@code checkPermission} 209 * denies {@code RuntimePermission("nashorn.setConfig")} 210 */ 211 public ScriptEngine getScriptEngine(final String[] args, final ClassLoader appLoader) { 212 Objects.requireNonNull(args); 213 return newEngine(args, appLoader, null); 214 } 215 216 /** 217 * Create a new Script engine initialized by given arguments. 218 * 219 * @param args arguments array passed to script engine. 220 * @param appLoader class loader to be used as script "app" class loader. 221 * @param classFilter class filter to use. 222 * @return newly created script engine. 223 * @throws NullPointerException if {@code args} or {@code classFilter} is {@code null} 224 * @throws SecurityException 225 * if the security manager's {@code checkPermission} 226 * denies {@code RuntimePermission("nashorn.setConfig")} 227 */ 228 public ScriptEngine getScriptEngine(final String[] args, final ClassLoader appLoader, final ClassFilter classFilter) { 229 Objects.requireNonNull(args); 230 Objects.requireNonNull(classFilter); 231 return newEngine(args, appLoader, classFilter); 232 } 233 234 private ScriptEngine newEngine(final String[] args, final ClassLoader appLoader, final ClassFilter classFilter) { 235 checkConfigPermission(); 236 try { 237 return new NashornScriptEngine(this, args, appLoader, classFilter); 238 } catch (final RuntimeException e) { 239 if (Context.DEBUG) { 240 e.printStackTrace(); 241 } 242 throw e; 243 } 244 } 245 246 // -- Internals only below this point 247 248 private static void checkConfigPermission() { 249 final SecurityManager sm = System.getSecurityManager(); 250 if (sm != null) { 251 sm.checkPermission(new RuntimePermission(Context.NASHORN_SET_CONFIG)); | 161 * @return newly created script engine. 162 * @throws SecurityException 163 * if the security manager's {@code checkPermission} 164 * denies {@code RuntimePermission("nashorn.setConfig")} 165 */ 166 public ScriptEngine getScriptEngine(final ClassLoader appLoader) { 167 return newEngine(DEFAULT_OPTIONS, appLoader, null); 168 } 169 170 /** 171 * Create a new Script engine initialized by given class filter. 172 * 173 * @param classFilter class filter to use. 174 * @return newly created script engine. 175 * @throws NullPointerException if {@code classFilter} is {@code null} 176 * @throws SecurityException 177 * if the security manager's {@code checkPermission} 178 * denies {@code RuntimePermission("nashorn.setConfig")} 179 */ 180 public ScriptEngine getScriptEngine(final ClassFilter classFilter) { 181 return newEngine(DEFAULT_OPTIONS, getAppClassLoader(), Objects.requireNonNull(classFilter)); 182 } 183 184 /** 185 * Create a new Script engine initialized by given arguments. 186 * 187 * @param args arguments array passed to script engine. 188 * @return newly created script engine. 189 * @throws NullPointerException if {@code args} is {@code null} 190 * @throws SecurityException 191 * if the security manager's {@code checkPermission} 192 * denies {@code RuntimePermission("nashorn.setConfig")} 193 */ 194 public ScriptEngine getScriptEngine(final String... args) { 195 return newEngine(Objects.requireNonNull(args), getAppClassLoader(), null); 196 } 197 198 /** 199 * Create a new Script engine initialized by given arguments. 200 * 201 * @param args arguments array passed to script engine. 202 * @param appLoader class loader to be used as script "app" class loader. 203 * @return newly created script engine. 204 * @throws NullPointerException if {@code args} is {@code null} 205 * @throws SecurityException 206 * if the security manager's {@code checkPermission} 207 * denies {@code RuntimePermission("nashorn.setConfig")} 208 */ 209 public ScriptEngine getScriptEngine(final String[] args, final ClassLoader appLoader) { 210 return newEngine(Objects.requireNonNull(args), appLoader, null); 211 } 212 213 /** 214 * Create a new Script engine initialized by given arguments. 215 * 216 * @param args arguments array passed to script engine. 217 * @param appLoader class loader to be used as script "app" class loader. 218 * @param classFilter class filter to use. 219 * @return newly created script engine. 220 * @throws NullPointerException if {@code args} or {@code classFilter} is {@code null} 221 * @throws SecurityException 222 * if the security manager's {@code checkPermission} 223 * denies {@code RuntimePermission("nashorn.setConfig")} 224 */ 225 public ScriptEngine getScriptEngine(final String[] args, final ClassLoader appLoader, final ClassFilter classFilter) { 226 return newEngine(Objects.requireNonNull(args), appLoader, Objects.requireNonNull(classFilter)); 227 } 228 229 private ScriptEngine newEngine(final String[] args, final ClassLoader appLoader, final ClassFilter classFilter) { 230 checkConfigPermission(); 231 try { 232 return new NashornScriptEngine(this, args, appLoader, classFilter); 233 } catch (final RuntimeException e) { 234 if (Context.DEBUG) { 235 e.printStackTrace(); 236 } 237 throw e; 238 } 239 } 240 241 // -- Internals only below this point 242 243 private static void checkConfigPermission() { 244 final SecurityManager sm = System.getSecurityManager(); 245 if (sm != null) { 246 sm.checkPermission(new RuntimePermission(Context.NASHORN_SET_CONFIG)); |