adding engine
git-svn-id: https://svn.apache.org/repos/asf/myfaces/extensions/scripting/trunk@1400848 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/Configuration.java b/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/Configuration.java
index 511a296..05f2b7e 100644
--- a/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/Configuration.java
+++ b/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/Configuration.java
@@ -33,11 +33,11 @@
import java.util.concurrent.ConcurrentSkipListSet;
import java.util.concurrent.CopyOnWriteArrayList;
-import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.ENGINETYPE_JSF_RUBY;
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.ENGINETYPE_JSF_JRUBY;
import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.ENGINE_TYPE_JSF_GROOVY;
import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.ENGINE_TYPE_JSF_JAVA;
import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.GROOVY_FILE_ENDING;
-import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.RUBY_FILE_ENDING;
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.JRUBY_FILE_ENDING;
import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.INIT_PARAM_INITIAL_COMPILE;
import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.INIT_PARAM_RESOURCE_PATH;
import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.INIT_PARAM_SCRIPTING_ADDITIONAL_CLASSPATH;
@@ -155,8 +155,8 @@
return JAVA_FILE_ENDING;
case ENGINE_TYPE_JSF_GROOVY:
return GROOVY_FILE_ENDING;
- case ENGINETYPE_JSF_RUBY:
- return RUBY_FILE_ENDING;
+ case ENGINETYPE_JSF_JRUBY:
+ return JRUBY_FILE_ENDING;
default:
throw new UnsupportedOperationException("Engine type unknown");
}
diff --git a/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/ScriptingConst.java b/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/ScriptingConst.java
index 51eb253..9af70c2 100644
--- a/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/ScriptingConst.java
+++ b/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/ScriptingConst.java
@@ -39,6 +39,8 @@
public static final String INIT_PARAM_CUSTOM_GROOVY_LOADER_PATHS = "org.apache.myfaces.extensions.scripting.groovy.LOADER_PATHS";
public static final String INIT_PARAM_CUSTOM_SCALA_LOADER_PATHS = "org.apache.myfaces.extensions.scripting.scala" +
".LOADER_PATHS";
+ public static final String INIT_PARAM_CUSTOM_JRUBY_LOADER_PATHS = "org.apache.myfaces.extensions.scripting.jruby.LOADER_PATHS";
+
//TODO add this
@@ -60,7 +62,7 @@
public static final int ENGINE_TYPE_JSF_GROOVY = 0;
public static final int ENGINE_TYPE_JSF_JAVA = 1;
public static final int ENGINE_TYPE_JSF_SCALA = 2;
- public static final int ENGINETYPE_JSF_RUBY = 3;
+ public static final int ENGINETYPE_JSF_JRUBY = 3;
public static final int ARTIFACT_TYPE_UNKNOWN = -1;
public static final int ARTIFACT_TYPE_MANAGEDBEAN = 1;
public static final int ARTIFACT_TYPE_MANAGEDPROPERTY = 2;
@@ -103,7 +105,7 @@
public static final String GROOVY_FILE_ENDING = ".groovy";
public static final String JAVA_FILE_ENDING = ".java";
public static final String SCALA_FILE_ENDING = ".scala";
- public static final String RUBY_FILE_ENDING = ".rb";
+ public static final String JRUBY_FILE_ENDING = ".rb";
public static final String JSR199_COMPILER = "org.apache.myfaces.extensions.scripting.loaders.java.jsr199.JSR199Compiler";
public static final String JAVA5_COMPILER = "org.apache.myfaces.extensions.scripting.loaders.java.compiler.JavacCompiler";
@@ -111,6 +113,7 @@
public static final String SCOPE_APPLICATION = "application";
public static final String SCOPE_REQUEST = "request";
public static final String GROOVY_SOURCE_ROOT = "/WEB-INF/groovy/";
+ public static final String JRUBY_SOURCE_ROOT = "/WEB-INF/ruby/";
public static final String SCALA_SOURCE_ROOT = "/WEB-INF/scala/";
public static final String JAVA_SOURCE_ROOT = "/WEB-INF/java/";
diff --git a/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/EngineJRuby.java b/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/EngineJRuby.java
new file mode 100644
index 0000000..da2f3af
--- /dev/null
+++ b/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/EngineJRuby.java
@@ -0,0 +1,135 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.engine;
+
+import org.apache.commons.beanutils.BeanUtils;
+import org.apache.myfaces.extensions.scripting.core.api.Configuration;
+import org.apache.myfaces.extensions.scripting.core.api.ReloadingStrategy;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.common.util.ClassUtils;
+import org.apache.myfaces.extensions.scripting.core.engine.api.CompilationResult;
+import org.apache.myfaces.extensions.scripting.core.engine.api.ScriptingEngine;
+import org.apache.myfaces.extensions.scripting.core.engine.compiler.GroovyCompiler;
+import org.apache.myfaces.extensions.scripting.core.engine.compiler.JRubyCompiler;
+import org.apache.myfaces.extensions.scripting.core.reloading.SimpleReloadingStrategy;
+import org.jruby.RubyObject;
+
+import javax.servlet.ServletContext;
+import java.io.File;
+import java.lang.reflect.InvocationTargetException;
+import java.util.Collection;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.ENGINETYPE_JSF_JRUBY;
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.ENGINE_TYPE_JSF_GROOVY;
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.INIT_PARAM_CUSTOM_JRUBY_LOADER_PATHS;
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.JRUBY_SOURCE_ROOT;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class EngineJRuby extends BaseEngine implements ScriptingEngine
+{
+ Logger log = Logger.getLogger(this.getClass().getName());
+
+ @Override
+ public void init(ServletContext context)
+ {
+ initPaths(context, INIT_PARAM_CUSTOM_JRUBY_LOADER_PATHS, JRUBY_SOURCE_ROOT);
+ }
+
+ @Override
+ public int getEngineType()
+ {
+ return ENGINE_TYPE_JSF_GROOVY;
+ }
+
+ public String getEngineTypeAsStr()
+ {
+ return "JRuby";
+ }
+
+ @Override
+ public ReloadingStrategy getBasicReloadingStrategy()
+ {
+ return new SimpleReloadingStrategy();
+ }
+
+ @Override
+ public boolean isArtifactOfEngine(Object artifact)
+ {
+ return (artifact instanceof RubyObject);
+ }
+
+ @Override
+ public void copyProperties(Object dest, Object src)
+ {
+ try
+ {
+
+ BeanUtils.copyProperties(dest, src);
+ }
+ catch (IllegalAccessException e)
+ {
+ log.log(Level.FINEST, e.toString());
+ //this is wanted
+ }
+ catch (InvocationTargetException e)
+ {
+ log.log(Level.FINEST, e.toString());
+ //this is wanted
+ }
+ }
+
+ @Override
+ public String getFileEnding()
+ {
+ return "rb";
+ }
+
+ @Override
+ //full compile
+ public CompilationResult compile()
+ {
+ WeavingContext context = WeavingContext.getInstance();
+ Configuration configuration = context.getConfiguration();
+ JRubyCompiler compiler = new JRubyCompiler();
+ File targetDir = configuration.getCompileTarget();
+ Collection<String> sourceDirs = configuration.getSourceDirs(ENGINETYPE_JSF_JRUBY);
+ CompilationResult res = null;
+ for (String sourceRoot : sourceDirs)
+ {
+ res = compiler.compile(new File(sourceRoot), targetDir, ClassUtils.getContextClassLoader());
+ }
+ return res;
+ }
+
+ public void scanDependencies()
+ {
+ log.info("[EXT-SCRIPTING] starting dependency scan");
+ //GroovyDependencyScanner scanner = new GroovyDependencyScanner();
+ //scanner.scanPaths();
+ log.info("[EXT-SCRIPTING] ending dependency scan");
+ }
+
+}
diff --git a/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/api/CompilerConst.java b/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/api/CompilerConst.java
index f64b375..cbc3128 100644
--- a/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/api/CompilerConst.java
+++ b/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/api/CompilerConst.java
@@ -37,7 +37,7 @@
public static final String JC_SOURCEPATH = "-sourcepath";
public static final String JC_DEBUG = "-g";
public static final String JAVA_WILDCARD = "*.java ";
- public static final String RUBY_WILDARD = "*.ruby";
+ public static final String JRUBY_WILDARD = "*.rb";
public static final String JC_VERBOSE = "-verbose";
@SuppressWarnings("unused")
diff --git a/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/JRubyCompiler.java b/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/JRubyCompiler.java
index 452a955..1065b09 100644
--- a/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/JRubyCompiler.java
+++ b/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/JRubyCompiler.java
@@ -32,8 +32,8 @@
import java.io.File;
import java.util.List;
-import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.ENGINETYPE_JSF_RUBY;
-import static org.apache.myfaces.extensions.scripting.core.engine.api.CompilerConst.RUBY_WILDARD;
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.ENGINETYPE_JSF_JRUBY;
+import static org.apache.myfaces.extensions.scripting.core.engine.api.CompilerConst.JRUBY_WILDARD;
/**
* @author Werner Punz (latest modification by $Author$)
@@ -49,7 +49,7 @@
private static final String ENGINE_JRUBY = "jruby";
@Override
- public CompilationResult compile(File sourcePath, File targetPath, ClassLoader classLoader) throws CompilationException
+ public CompilationResult compile(File sourcePath, File targetPath, ClassLoader classLoader)
{
targetPath.mkdirs();
String sources = getSourceFiles();
@@ -98,7 +98,7 @@
WeavingContext context = WeavingContext.getInstance();
Configuration configuration = context.getConfiguration();
List<File> sourceFiles = FileUtils.fetchSourceFiles(configuration.getWhitelistedSourceDirs
- (ENGINETYPE_JSF_RUBY), RUBY_WILDARD);
+ (ENGINETYPE_JSF_JRUBY), JRUBY_WILDARD);
StringBuilder sources = new StringBuilder(sourceFiles.size() * 30);
for (File sourceFile : sourceFiles)
{