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