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