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
-------------------------------------