Author: cziegeler
Date: Thu Nov  8 02:11:41 2007
New Revision: 593113

URL: http://svn.apache.org/viewvc?rev=593113&view=rev
Log:
Start implementing dynamic lookup mechanism for script engines.

Modified:
    
incubator/sling/trunk/microsling/microsling-core/src/main/java/org/apache/sling/microsling/scripting/MicroslingScriptResolver.java

Modified: 
incubator/sling/trunk/microsling/microsling-core/src/main/java/org/apache/sling/microsling/scripting/MicroslingScriptResolver.java
URL: 
http://svn.apache.org/viewvc/incubator/sling/trunk/microsling/microsling-core/src/main/java/org/apache/sling/microsling/scripting/MicroslingScriptResolver.java?rev=593113&r1=593112&r2=593113&view=diff
==============================================================================
--- 
incubator/sling/trunk/microsling/microsling-core/src/main/java/org/apache/sling/microsling/scripting/MicroslingScriptResolver.java
 (original)
+++ 
incubator/sling/trunk/microsling/microsling-core/src/main/java/org/apache/sling/microsling/scripting/MicroslingScriptResolver.java
 Thu Nov  8 02:11:41 2007
@@ -43,8 +43,6 @@
 import org.apache.sling.microsling.resource.JcrNodeResource;
 import org.apache.sling.microsling.scripting.helpers.ScriptFilenameBuilder;
 import org.apache.sling.microsling.scripting.helpers.ScriptHelper;
-import org.apache.sling.scripting.freemarker.FreemarkerScriptEngine;
-import org.apache.sling.scripting.ruby.ErbScriptEngine;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -74,12 +72,24 @@
 
     private Map<String, SlingScriptEngine> scriptEngines;
 
+    private static final String[] DEFAULT_SCRIPT_ENGINES = new String[] {
+          "org.apache.sling.scripting.javascript.RhinoJavasSriptEngine",
+          "org.apache.sling.scripting.velocity.VelocityTemplatesScriptEngine",
+          "org.apache.sling.scripting.freemarker.FreemarkerScriptEngine",
+          "org.apache.sling.scripting.ruby.ErbScriptEngine"
+       };
+
     public MicroslingScriptResolver() throws SlingException {
         scriptEngines = new HashMap<String, SlingScriptEngine>();
-        addScriptEngine(new 
org.apache.sling.scripting.javascript.RhinoJavasSriptEngine());
-        addScriptEngine(new 
org.apache.sling.scripting.velocity.VelocityTemplatesScriptEngine());
-        addScriptEngine(new FreemarkerScriptEngine());
-        addScriptEngine(new ErbScriptEngine());
+        for(String engineName : DEFAULT_SCRIPT_ENGINES) {
+            try {
+                final Class engineClass = 
this.getClass().getClassLoader().loadClass(engineName);
+                final SlingScriptEngine engine = 
(SlingScriptEngine)engineClass.newInstance();
+                addScriptEngine(engine);
+            } catch (Exception ignore) {
+                log.warn("Unable to instantiate script engine " + engineName, 
ignore);
+            }
+        }
     }
 
     /**


Reply via email to