You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ol...@apache.org on 2016/05/09 07:16:53 UTC
svn commit: r1742889 -
/sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptEngineManagerFactory.java
Author: olli
Date: Mon May 9 07:16:53 2016
New Revision: 1742889
URL: http://svn.apache.org/viewvc?rev=1742889&view=rev
Log:
SLING-5714 ScriptEngineManagerFactory should log all available script engine factories
Modified:
sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptEngineManagerFactory.java
Modified: sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptEngineManagerFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptEngineManagerFactory.java?rev=1742889&r1=1742888&r2=1742889&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptEngineManagerFactory.java (original)
+++ sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/ScriptEngineManagerFactory.java Mon May 9 07:16:53 2016
@@ -21,7 +21,6 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
-import java.util.Collection;
import java.util.Dictionary;
import java.util.HashMap;
import java.util.HashSet;
@@ -29,8 +28,6 @@ import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.SortedSet;
-import java.util.TreeSet;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineFactory;
@@ -97,44 +94,31 @@ public class ScriptEngineManagerFactory
final SlingScriptEngineManager tmp = new SlingScriptEngineManager(loader);
// register script engines from bundles
- final SortedSet<Object> extensions = new TreeSet<Object>();
synchronized (this.engineSpiBundles) {
for (final Bundle bundle : this.engineSpiBundles) {
- extensions.addAll(registerFactories(tmp, bundle));
+ registerFactories(tmp, bundle);
}
}
// register script engines from registered services
synchronized (this.engineSpiServices) {
for (final Map.Entry<ScriptEngineFactory, Map<Object, Object>> factory : this.engineSpiServices.entrySet()) {
- extensions.addAll(registerFactory(tmp, factory.getKey(),
- factory.getValue()));
+ registerFactory(tmp, factory.getKey(), factory.getValue());
}
}
scriptEngineManager.setDelegatee(tmp);
- // Log messages to verify which ScriptEngine is actually used
- // for our registered extensions
- if (log.isInfoEnabled()) {
- for (Object o : extensions) {
- final String ext = o.toString();
- final ScriptEngine e = tmp.getEngineByExtension(ext);
- if (e == null) {
- log.warn("No ScriptEngine found for extension '{}' that was just registered", ext);
- } else {
- log.info("Script extension '{}' is now handled by ScriptEngine '{}', version='{}', class='{}'", new Object[] { ext,
- e.getFactory().getEngineName(), e.getFactory().getEngineVersion(), e.getClass().getName() });
- }
- }
+ final List<ScriptEngineFactory> factories = tmp.getEngineFactories();
+ for (final ScriptEngineFactory factory : factories) {
+ log.info("ScriptEngine {}/{} is now handling {}, {}, {}.", new Object[]{factory.getEngineName(), factory.getEngineVersion(), factory.getExtensions(), factory.getMimeTypes(), factory.getNames()});
}
}
@SuppressWarnings("unchecked")
- private Collection<?> registerFactories(final SlingScriptEngineManager mgr, final Bundle bundle) {
+ private void registerFactories(final SlingScriptEngineManager mgr, final Bundle bundle) {
URL url = bundle.getEntry(ENGINE_FACTORY_SERVICE);
InputStream ins = null;
- final SortedSet<String> extensions = new TreeSet<String>();
try {
ins = url.openStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(ins));
@@ -145,7 +129,6 @@ public class ScriptEngineManagerFactory
Class<ScriptEngineFactory> clazz = bundle.loadClass(line);
ScriptEngineFactory spi = clazz.newInstance();
registerFactory(mgr, spi, null);
- extensions.addAll(spi.getExtensions());
} catch (Throwable t) {
log.error("Cannot register ScriptEngineFactory " + line, t);
}
@@ -161,17 +144,11 @@ public class ScriptEngineManagerFactory
}
}
}
-
- return extensions;
}
- private Collection<?> registerFactory(final SlingScriptEngineManager mgr, final ScriptEngineFactory factory, final Map<Object, Object> props) {
- log.info("Adding ScriptEngine {}, {} for language {}, {}", new Object[] { factory.getEngineName(), factory.getEngineVersion(),
- factory.getLanguageName(), factory.getLanguageVersion() });
-
+ private void registerFactory(final SlingScriptEngineManager mgr, final ScriptEngineFactory factory, final Map<Object, Object> props) {
+ log.info("Adding ScriptEngine {}/{} for language {}/{}.", new Object[]{factory.getEngineName(), factory.getEngineVersion(), factory.getLanguageName(), factory.getLanguageVersion()});
mgr.registerScriptEngineFactory(factory, props);
-
- return factory.getExtensions();
}
// ---------- BundleListener interface -------------------------------------