Mercurial > hg > release > icedtea7-forest-2.4 > jdk
changeset 7215:5b9b47ebf559
8036794: Manage JavaScript instances
Reviewed-by: sundar, ahgross
author | mbankal |
---|---|
date | Mon, 10 Mar 2014 18:40:38 +0000 |
parents | b10388f3a382 |
children | 25072b5b7e78 |
files | src/share/classes/javax/script/ScriptEngineManager.java |
diffstat | 1 files changed, 14 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/classes/javax/script/ScriptEngineManager.java Wed Mar 12 12:46:11 2014 +0400 +++ b/src/share/classes/javax/script/ScriptEngineManager.java Mon Mar 10 18:40:38 2014 +0000 @@ -85,15 +85,18 @@ nameAssociations = new HashMap<String, ScriptEngineFactory>(); extensionAssociations = new HashMap<String, ScriptEngineFactory>(); mimeTypeAssociations = new HashMap<String, ScriptEngineFactory>(); - AccessController.doPrivileged(new PrivilegedAction<Object>() { - public Object run() { - initEngines(loader); - return null; - } - }); + List<ScriptEngineFactory> facList = AccessController.doPrivileged( + new PrivilegedAction<List<ScriptEngineFactory>>() { + public List<ScriptEngineFactory> run() { + return initEngines(loader); + } + }); + for (ScriptEngineFactory fac : facList) { + engineSpis.add(fac); + } } - private void initEngines(final ClassLoader loader) { + private List<ScriptEngineFactory> initEngines(final ClassLoader loader) { Iterator itr = null; try { if (loader != null) { @@ -110,14 +113,15 @@ // do not throw any exception here. user may want to // manage his/her own factories using this manager // by explicit registratation (by registerXXX) methods. - return; + return null; } + final List<ScriptEngineFactory> facList = new ArrayList<>(); try { while (itr.hasNext()) { try { ScriptEngineFactory fact = (ScriptEngineFactory) itr.next(); - engineSpis.add(fact); + facList.add(fact); } catch (ServiceConfigurationError err) { System.err.println("ScriptEngineManager providers.next(): " + err.getMessage()); @@ -137,8 +141,8 @@ // do not throw any exception here. user may want to // manage his/her own factories using this manager // by explicit registratation (by registerXXX) methods. - return; } + return facList; } /**