You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@velocity.apache.org by di...@apache.org on 2012/06/23 14:09:46 UTC
svn commit: r1353117 - in
/velocity/sandbox/jsr223/velocity-engine-scripting/src:
main/java/org/apache/velocity/script/
test/java/org/apache/velocity/script/test/
Author: dishara
Date: Sat Jun 23 12:09:45 2012
New Revision: 1353117
URL: http://svn.apache.org/viewvc?rev=1353117&view=rev
Log:
Finished implementing ScriptEngine
Modified:
velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityCompilable.java
velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityCompiledScript.java
velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityScriptEngine.java
velocity/sandbox/jsr223/velocity-engine-scripting/src/test/java/org/apache/velocity/script/test/BasicTest.java
Modified: velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityCompilable.java
URL: http://svn.apache.org/viewvc/velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityCompilable.java?rev=1353117&r1=1353116&r2=1353117&view=diff
==============================================================================
--- velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityCompilable.java (original)
+++ velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityCompilable.java Sat Jun 23 12:09:45 2012
@@ -26,10 +26,10 @@ import java.io.Reader;
public class VelocityCompilable implements Compilable {
public CompiledScript compile(String s) throws ScriptException {
- return null; //To change body of implemented methods use File | Settings | File Templates.
+ return null;
}
public CompiledScript compile(Reader reader) throws ScriptException {
- return null; //To change body of implemented methods use File | Settings | File Templates.
+ return null;
}
}
Modified: velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityCompiledScript.java
URL: http://svn.apache.org/viewvc/velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityCompiledScript.java?rev=1353117&r1=1353116&r2=1353117&view=diff
==============================================================================
--- velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityCompiledScript.java (original)
+++ velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityCompiledScript.java Sat Jun 23 12:09:45 2012
@@ -26,15 +26,16 @@ import javax.script.ScriptException;
public class VelocityCompiledScript extends CompiledScript {
private ScriptEngine scriptEngine;
+ private String script = "";
- public VelocityCompiledScript(ScriptEngine scriptEngine) {
+ public VelocityCompiledScript(ScriptEngine scriptEngine,String script) {
this.scriptEngine = scriptEngine;
+ this.script = script;
}
@Override
public Object eval(ScriptContext context) throws ScriptException {
-// scriptEngine.eval();
- return null;
+ return scriptEngine.eval(script,context);
}
@Override
Modified: velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityScriptEngine.java
URL: http://svn.apache.org/viewvc/velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityScriptEngine.java?rev=1353117&r1=1353116&r2=1353117&view=diff
==============================================================================
--- velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityScriptEngine.java (original)
+++ velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityScriptEngine.java Sat Jun 23 12:09:45 2012
@@ -19,14 +19,12 @@ package org.apache.velocity.script;
* under the License.
*/
+import com.sun.org.apache.bcel.internal.generic.RET;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
import javax.script.*;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.Reader;
+import java.io.*;
import java.util.Properties;
public class VelocityScriptEngine implements ScriptEngine {
@@ -136,11 +134,29 @@ public class VelocityScriptEngine implem
}
public Object eval(String s, ScriptContext scriptContext) throws ScriptException {
- return null; //To change body of implemented methods use File | Settings | File Templates.
+ return eval(new StringReader(s),scriptContext);
}
public Object eval(Reader reader, ScriptContext scriptContext) throws ScriptException {
- return null; //To change body of implemented methods use File | Settings | File Templates.
+
+ constructVelocityEngine(scriptContext);
+ String fileName = getTargetFilename(scriptContext);
+ VelocityContext velocityContext = getVelocityContext(scriptContext);
+
+ Writer outPut ;
+ if(scriptContext.getWriter() != null) {
+ outPut = scriptContext.getWriter();
+ } else {
+ outPut = new StringWriter();
+ }
+ boolean result;
+
+ try {
+ result = velocityEngine.evaluate(velocityContext,outPut,fileName,reader);
+ } catch(Exception exp) {
+ return new ScriptException(exp);
+ }
+ return String.valueOf(result);
}
public Object eval(String s) throws ScriptException {
@@ -148,12 +164,12 @@ public class VelocityScriptEngine implem
}
public Object eval(Reader reader) throws ScriptException {
- return eval(reader,scriptContext); //To change body of implemented methods use File | Settings | File Templates.
+ return eval(reader,scriptContext);
}
public Object eval(String s, Bindings bindings) throws ScriptException {
ScriptContext scriptContext = getGeneratedScriptContextFromBinding(bindings);
- return eval(s,scriptContext);
+ return eval(new StringReader(s),scriptContext);
}
public Object eval(Reader reader, Bindings bindings) throws ScriptException {
@@ -194,7 +210,7 @@ public class VelocityScriptEngine implem
}
public Bindings getBindings(int i) {
- return scriptContext.getBindings(i); //To change body of implemented methods use File | Settings | File Templates.
+ return scriptContext.getBindings(i);
}
public void setBindings(Bindings bindings, int i) {
@@ -202,7 +218,7 @@ public class VelocityScriptEngine implem
}
public Bindings createBindings() {
- return null; //To change body of implemented methods use File | Settings | File Templates.
+ return new VelocityBindings();
}
public ScriptContext getContext() {
@@ -210,7 +226,24 @@ public class VelocityScriptEngine implem
}
public void setContext(ScriptContext scriptContext) {
- //To change body of implemented methods use File | Settings | File Templates.
+ this.scriptContext = scriptContext;
}
+ private VelocityContext getVelocityContext(ScriptContext ctx) {
+ Bindings engineScope = ctx.getBindings(ScriptContext.ENGINE_SCOPE);
+ if (ctx.getBindings(ScriptContext.GLOBAL_SCOPE) == null) {
+ return new VelocityContext(engineScope);
+ } else {
+ return new VelocityContext(engineScope, new VelocityContext(ctx.getBindings(ScriptContext.GLOBAL_SCOPE)));
+ }
+ }
+
+ private String getTargetFilename(ScriptContext ctx) {
+ Object fileName = ctx.getAttribute(ScriptEngine.FILENAME);
+ if(fileName != null) {
+ return fileName.toString();
+ } else {
+ return "No-Such-File";
+ }
+ }
}
\ No newline at end of file
Modified: velocity/sandbox/jsr223/velocity-engine-scripting/src/test/java/org/apache/velocity/script/test/BasicTest.java
URL: http://svn.apache.org/viewvc/velocity/sandbox/jsr223/velocity-engine-scripting/src/test/java/org/apache/velocity/script/test/BasicTest.java?rev=1353117&r1=1353116&r2=1353117&view=diff
==============================================================================
--- velocity/sandbox/jsr223/velocity-engine-scripting/src/test/java/org/apache/velocity/script/test/BasicTest.java (original)
+++ velocity/sandbox/jsr223/velocity-engine-scripting/src/test/java/org/apache/velocity/script/test/BasicTest.java Sat Jun 23 12:09:45 2012
@@ -42,8 +42,5 @@ public class BasicTest {
engine.put("first", "HELLO");
engine.put("second", "world");
//TODO this is a dummt test infact. Need to complete the rest as engine impl finishes.
-
-
}
-
}