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/08/09 21:17:31 UTC
svn commit: r1371393 - in
/velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script:
VelocityBindings.java VelocityScriptContext.java VelocityScriptEngine.java
util/ScriptUtil.java
Author: dishara
Date: Thu Aug 9 19:17:31 2012
New Revision: 1371393
URL: http://svn.apache.org/viewvc?rev=1371393&view=rev
Log:
Refactored the code with some dev feedback
Added:
velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/util/ScriptUtil.java
Modified:
velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityBindings.java
velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityScriptContext.java
velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityScriptEngine.java
Modified: velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityBindings.java
URL: http://svn.apache.org/viewvc/velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityBindings.java?rev=1371393&r1=1371392&r2=1371393&view=diff
==============================================================================
--- velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityBindings.java (original)
+++ velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityBindings.java Thu Aug 9 19:17:31 2012
@@ -20,6 +20,7 @@ package org.apache.velocity.script;
*/
import org.apache.velocity.context.Context;
+import org.apache.velocity.script.util.ScriptUtil;
import javax.script.Bindings;
import java.util.Collection;
@@ -40,6 +41,7 @@ public class VelocityBindings implements
*/
public VelocityBindings(Map<String,Object> map) {
if(map == null) {
+ ScriptUtil.addExceptionToErrorWriter(new NullPointerException("Cannot pass a null map to initialize VelocityBindings"));
throw new NullPointerException("Cannot pass a null map to initialize VelocityBindings");
}
this.map = map;
@@ -189,12 +191,15 @@ public class VelocityBindings implements
*/
private void validateKey(Object key) {
if (key == null) {
+ ScriptUtil.addExceptionToErrorWriter(new NullPointerException("Cannot pass a null map to initialize VelocityBindings"));
throw new NullPointerException("The key cannot be null..!!");
}
if (!(key instanceof String)) {
+ ScriptUtil.addExceptionToErrorWriter(new ClassCastException("The key must be of the type String..!!"));
throw new ClassCastException("The key must be of the type String..!!");
}
if (key.equals("")) {
+ ScriptUtil.addExceptionToErrorWriter(new IllegalArgumentException("The key cannot be empty..!!"));
throw new IllegalArgumentException("The key cannot be empty..!!");
}
}
Modified: velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityScriptContext.java
URL: http://svn.apache.org/viewvc/velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityScriptContext.java?rev=1371393&r1=1371392&r2=1371393&view=diff
==============================================================================
--- velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityScriptContext.java (original)
+++ velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityScriptContext.java Thu Aug 9 19:17:31 2012
@@ -52,9 +52,9 @@ public class VelocityScriptContext imple
/**
- * The Writer for scripts to use when displaying output.
+ * The Writer for scripts to use when displaying output. It defaults to system.out
*/
- private Writer writer;
+ private Writer writer = new PrintWriter(System.out);
/**
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=1371393&r1=1371392&r2=1371393&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 Thu Aug 9 19:17:31 2012
@@ -24,6 +24,7 @@ import org.apache.velocity.VelocityConte
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.exception.ResourceNotFoundException;
import org.apache.velocity.script.util.ScriptResourceHolder;
+import org.apache.velocity.script.util.ScriptUtil;
import sun.font.Script;
import javax.script.*;
@@ -70,6 +71,7 @@ public class VelocityScriptEngine implem
public VelocityScriptEngine(ScriptEngineFactory scriptEngineFactory) {
this.scriptEngineFactory = scriptEngineFactory;
this.scriptContext = new VelocityScriptContext();
+ ScriptUtil.setScriptContext(scriptContext);
}
/**
@@ -79,9 +81,11 @@ public class VelocityScriptEngine implem
public VelocityScriptEngine(ScriptEngineFactory scriptEngineFactory, Bindings bindings) {
this.scriptEngineFactory = scriptEngineFactory;
this.scriptContext = new VelocityScriptContext();
+ ScriptUtil.setScriptContext(scriptContext);
if (bindings != null) {
this.scriptContext.setBindings(bindings, ScriptContext.ENGINE_SCOPE);
} else {
+ ScriptUtil.addExceptionToErrorWriter(new NullPointerException("Bindings cannot be null"));
throw new NullPointerException("Bindings cannot be null");
}
}
@@ -176,7 +180,7 @@ public class VelocityScriptEngine implem
properties.load(new FileInputStream(propFile));
return properties;
} catch (IOException e) {
- //TODO log error msg
+ ScriptUtil.addExceptionToErrorWriter(e);
return null;
}
}
@@ -206,44 +210,7 @@ public class VelocityScriptEngine implem
* @throws ScriptException
*/
public Object eval(String s, ScriptContext scriptContext) throws ScriptException {
- if (s == null) {
- throw new NullPointerException("Reader passed cannot be null");
- }
- constructVelocityEngine(scriptContext);
- VelocityContext velocityContext = getVelocityContext(scriptContext);
-
- Writer outPut;
- if (scriptContext.getWriter() != null) {
- outPut = scriptContext.getWriter();
- } else {
- outPut = new StringWriter();
- }
- boolean result = false;
-
- try {
-// Check for velocity tools vm file
- if (scriptContext.getAttribute(VelocityScriptEngine.FILENAME) != null) {
- Template template = null;
- String fileName = scriptContext.getAttribute(VelocityScriptEngine.FILENAME).toString();
- //Cache hit
- if (ScriptResourceHolder.hasTemplate(fileName)) {
- template = ScriptResourceHolder.getTemplate(fileName);
- } else {
- try {
- template = velocityEngine.getTemplate(fileName);
- ScriptResourceHolder.putTemplate(fileName,template);
- template.merge(velocityContext, outPut);
- } catch(ResourceNotFoundException e1){
- }
-
- }
- }
- result = velocityEngine.evaluate(velocityContext, outPut, VelocityScriptEngine.DEFAULT_LOG_TAG, s);
- } catch (Exception exp) {
- return new ScriptException(exp);
- }
- return String.valueOf(result);
-
+ return eval(new StringReader(s),scriptContext);
}
@@ -294,7 +261,8 @@ public class VelocityScriptEngine implem
result = velocityEngine.evaluate(velocityContext, outPut, VelocityScriptEngine.DEFAULT_LOG_TAG, reader);
} catch (Exception exp) {
- return new ScriptException(exp);
+ ScriptUtil.addExceptionToErrorWriter(exp);
+ throw new ScriptException(exp);
}
return String.valueOf(result);
}
@@ -365,6 +333,7 @@ public class VelocityScriptEngine implem
if (bindings != null) {
tmpContext.setBindings(bindings, ScriptContext.ENGINE_SCOPE);
} else {
+ ScriptUtil.addExceptionToErrorWriter(new NullPointerException("Engine scope Bindings cannot be null."));
throw new NullPointerException("Engine scope Bindings cannot be null.");
}
@@ -389,10 +358,12 @@ public class VelocityScriptEngine implem
public void put(String s, Object o) {
if (s == null) {
+ ScriptUtil.addExceptionToErrorWriter(new NullPointerException("Name cannot be null"));
throw new NullPointerException("Name cannot be null");
}
if ("".equals(s)) {
+ ScriptUtil.addExceptionToErrorWriter(new IllegalArgumentException("Name cannot be empty"));
throw new IllegalArgumentException("Name cannot be empty");
}
@@ -415,10 +386,12 @@ public class VelocityScriptEngine implem
public Object get(String s) {
if (s == null) {
+ ScriptUtil.addExceptionToErrorWriter(new NullPointerException("Name cannot be null"));
throw new NullPointerException("Name cannot be null");
}
if ("".equals(s)) {
+ ScriptUtil.addExceptionToErrorWriter(new IllegalArgumentException("Name cannot be empty"));
throw new IllegalArgumentException("Name cannot be empty");
}
Added: velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/util/ScriptUtil.java
URL: http://svn.apache.org/viewvc/velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/util/ScriptUtil.java?rev=1371393&view=auto
==============================================================================
--- velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/util/ScriptUtil.java (added)
+++ velocity/sandbox/jsr223/velocity-engine-scripting/src/main/java/org/apache/velocity/script/util/ScriptUtil.java Thu Aug 9 19:17:31 2012
@@ -0,0 +1,43 @@
+package org.apache.velocity.script.util;
+
+
+import javax.script.ScriptContext;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+/*
+* 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.
+*/
+public class ScriptUtil {
+
+ private static ScriptContext scriptContext;
+
+ public static void setScriptContext(ScriptContext scriptContext){
+ ScriptUtil.scriptContext = scriptContext;
+ }
+
+ public static void addExceptionToErrorWriter(Exception exc) {
+ StringWriter stringWriter = new StringWriter();
+ PrintWriter printWriter = new PrintWriter(stringWriter);
+ exc.printStackTrace(printWriter);
+ scriptContext.setErrorWriter(stringWriter);
+ }
+}
+
+
+