I agree, but does it means we should *remove* the license text?

I read "Redistributions of source code must retain the above copyright notice". So I was under the impression that the way to go is to have both notices in the file.


  Claude

On 16/07/2016 00:43, Mike Kienenberger wrote:
Signing off that this Sun license falls under A category despite not
being explicitly listed.

On Fri, Jul 15, 2016 at 6:31 PM,  <cbris...@apache.org> wrote:
Author: cbrisson
Date: Fri Jul 15 22:30:59 2016
New Revision: 1752882

URL: http://svn.apache.org/viewvc?rev=1752882&view=rev
Log:
review (ahem... rewrite using Sun provided example) scripting interface

Added:
     velocity/engine/trunk/velocity-engine-scripting/src/test/resources/
     
velocity/engine/trunk/velocity-engine-scripting/src/test/resources/velocity.properties
       - copied unchanged from r1752841, 
velocity/engine/trunk/velocity-engine-scripting/src/test/java/org/apache/velocity/script/test/resources/velocity.properties
Removed:
     
velocity/engine/trunk/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityBindings.java
     
velocity/engine/trunk/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityCompilable.java
     
velocity/engine/trunk/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityCompiledScript.java
     
velocity/engine/trunk/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityInvocable.java
     
velocity/engine/trunk/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityScriptContext.java
     
velocity/engine/trunk/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityScriptException.java
     
velocity/engine/trunk/velocity-engine-scripting/src/main/java/org/apache/velocity/script/util/
     
velocity/engine/trunk/velocity-engine-scripting/src/test/java/org/apache/velocity/script/test/ScriptEngineFactoryTest.java
     
velocity/engine/trunk/velocity-engine-scripting/src/test/java/org/apache/velocity/script/test/resources/velocity.properties
Modified:
     velocity/engine/trunk/velocity-engine-scripting/pom.xml
     
velocity/engine/trunk/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityScriptEngine.java
     
velocity/engine/trunk/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityScriptEngineFactory.java
     
velocity/engine/trunk/velocity-engine-scripting/src/test/java/org/apache/velocity/script/test/ScriptEngineTest.java
     
velocity/engine/trunk/velocity-engine-scripting/src/test/java/org/apache/velocity/script/test/VelocityScriptContextTest.java

Modified: velocity/engine/trunk/velocity-engine-scripting/pom.xml
URL: 
http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-scripting/pom.xml?rev=1752882&r1=1752881&r2=1752882&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-scripting/pom.xml (original)
+++ velocity/engine/trunk/velocity-engine-scripting/pom.xml Fri Jul 15 22:30:59 
2016
@@ -21,26 +21,60 @@
  -->
  <project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
           xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.apache.velocity</groupId>
-        <artifactId>velocity-engine-parent</artifactId>
-        <version>2.0.0-SNAPSHOT</version>
-    </parent>
-    <artifactId>velocity-engine-scripting</artifactId>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.velocity</groupId>
+    <artifactId>velocity-engine-parent</artifactId>
      <version>2.0.0-SNAPSHOT</version>
-    <name>Apache Velocity - JSR 223 Scripting</name>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.velocity</groupId>
-            <artifactId>velocity-engine-core</artifactId>
-            <version>2.0.0-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.8.2</version>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
+  </parent>
+  <artifactId>velocity-engine-scripting</artifactId>
+  <version>2.0.0-SNAPSHOT</version>
+  <name>Apache Velocity - JSR 223 Scripting</name>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.velocity</groupId>
+      <artifactId>velocity-engine-core</artifactId>
+      <version>2.0.0-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.8.2</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <version>1.7.12</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <systemProperties>
+            <property>
+              <name>test.resources.dir</name>
+              <value>${project.build.directory}</value>
+            </property>
+          </systemProperties>
+        </configuration>
+        <executions>
+          <execution>
+            <id>integration-test</id>
+            <phase>integration-test</phase>
+            <goals>
+              <goal>test</goal>
+            </goals>
+            <configuration>
+              <skip>false</skip>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
  </project>

Modified: 
velocity/engine/trunk/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityScriptEngine.java
URL: 
http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityScriptEngine.java?rev=1752882&r1=1752881&r2=1752882&view=diff
==============================================================================
--- 
velocity/engine/trunk/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityScriptEngine.java
 (original)
+++ 
velocity/engine/trunk/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityScriptEngine.java
 Fri Jul 15 22:30:59 2016
@@ -1,5 +1,7 @@
  package org.apache.velocity.script;

+/* dual licencing... */
+
  /*
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
@@ -19,471 +21,227 @@ package org.apache.velocity.script;
   * under the License.
   */

-import org.apache.velocity.Template;
-import org.apache.velocity.VelocityContext;
-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 javax.script.*;
-import java.io.*;
-import java.util.Properties;
-
-/**
- *  VelocityScriptEngine is the fundamental class whose methods inherited from 
.javax.script.ScriptEngine interface
- * These methods provide basic scripting functionality. This includes methods 
that execute scripts, and ones that set and get values.
- * The values are key/value pairs of two types.
- * This Provides a standard implementation for several of the variants of the 
eval method.
- *  eval(Reader)
- * eval(String)
- * eval(String, Bindings)
- * eval(Reader, Bindings)
+/*
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
   *
- * There are two ways to instantiate VelocityScriptEngine. One is directly 
using the script engine factory which was used to create this
- * engine. Other one is by passing the factory and the pre defined bindings 
required for the engine.
+ * Redistribution and use in source and binary forms, with or without 
modification, are
+ * permitted provided that the following conditions are met: Redistributions 
of source code
+ * must retain the above copyright notice, this list of conditions and the 
following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, 
this list of
+ * conditions and the following disclaimer in the documentation and/or other 
materials
+ * provided with the distribution. Neither the name of the Sun Microsystems 
nor the names of
+ * is contributors may be used to endorse or promote products derived from 
this software
+ * without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
COPYRIGHT OWNER
+ * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
(INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
   */
-public class VelocityScriptEngine implements ScriptEngine {
-
-    /**
-     * ScriptEngineFactory reference from whom this engine got created
-     */
-    private ScriptEngineFactory scriptEngineFactory;
-
-
-    /**
-     * Velocity core engine reference
-     */
-    private VelocityEngine velocityEngine;
-
-
-    /**
-     * unmodifiable property name which is ued to obtain properties from 
context as well as from system to initialize velocity core engine
-     */
-    public static final String VELOCITY_PROPERTIES = 
"org.apache.velocity.engine.properties";
-
-
-    /**
-     * Default velocity log tag
-     */
-    public static final String DEFAULT_LOG_TAG = "default_log_tag";
-
-
-    /**
-     * script context reference which belongs to this engine instance
-     */
-    private ScriptContext scriptContext;
-
-
-    /**
-     * Constructor which gets created engine factory reference as input
-     *
-     * @param scriptEngineFactory ScriptEngineFactory reference from whom this 
engine got created
-     */
-    public VelocityScriptEngine(ScriptEngineFactory scriptEngineFactory) {
-        this.scriptEngineFactory = scriptEngineFactory;
-        this.scriptContext = new VelocityScriptContext();
-        ScriptUtil.setScriptContext(scriptContext);
-    }
-
-    /**
-     * @param scriptEngineFactory ScriptEngineFactory reference from whom this 
engine got created
-     * @param bindings            required binding needs to initialize this 
engine, unless it defaults to engine scope
-     */
-    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");
-        }
-    }
-
-
-    /**
-     * @return script engine factory who created this engine
-     */
-    public ScriptEngineFactory getFactory() {
-
-        //        if null return a newly created one
-        if (scriptEngineFactory == null) {
-            createNewFactory();
-        }
-        return scriptEngineFactory;
-    }

-    private void createNewFactory() {
-//          Added creation inside sync block to avoid creating two factories 
from a engine by two parallel threads at the same time.
-//          Also the additional null check out from sync block is to avoid 
every  thread to get blocked inside it even there is an already created factory.
-        synchronized (this) {
-            if (scriptEngineFactory == null) {
-                scriptEngineFactory = new VelocityScriptEngineFactory();
-            }
-        }
-    }
-
-    /**
-     * Creates the velocity core engine by initializing it from reading 
property file/system properties
-     *
-     * @param context
-     */
-    private void constructVelocityEngine(ScriptContext context) {
-
-        Properties props = getPropertiesFromContext(context);
-        //Check if property exists in context
-        if (props != null) {
-            initVelocityEngine(props);
-            return;
-        } else {
-            props = getPropertiesFromSystem();
-            //Check if properties exists in System
-            if (props != null) {
-                initVelocityEngine(props);
-                return;
-            }
-        }
-        //Init velocity engine with default settings
-        initVelocityEngine();
-    }
-
-    /**
-     * Init velocity engine without properties.
-     */
-    private void initVelocityEngine() {
-
-        if (velocityEngine != null) {
-
-//            Add sync block from a parallel thread creating two velocity 
engine instances
-            synchronized (this) {
-                velocityEngine = new VelocityEngine();
-                velocityEngine.init();
-            }
-        }
-    }
+/*
+ * Main class for the Velocity script engine. Please refer to the
+ * javax.script.ScriptEngine documentation for details.
+ *
+ * @author A. Sundararajan
+ * @author <a href="mailto:claude.bris...@gmail.com";>Claude Brisson</a>
+ * @version $Id: VelocityScriptEngine.java$
+ */

-    /**
-     * Initializes the velocity engine with pre defined properties
-     *
-     * @param props
-     */
-    private void initVelocityEngine(Properties props) {
-        if (velocityEngine == null) {
-            synchronized (this) {
-                velocityEngine = new VelocityEngine();
-                velocityEngine.init(props);
-            }
-        }
-    }
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.Reader;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.Properties;
+import org.apache.velocity.*;
+import org.apache.velocity.app.*;

-    /**
-     * Obtain properties from a property file which is taken from a system 
property
-     *
-     * @return
-     */
-    private Properties getPropertiesFromSystem() {
-        String propFileName = System.getProperty(VELOCITY_PROPERTIES);
-        File propFile = new File(propFileName);
-        if (propFile.exists()) {
-            Properties properties = new Properties();
-            try {
-                properties.load(new FileInputStream(propFile));
-                return properties;
-            } catch (IOException e) {
-                ScriptUtil.addExceptionToErrorWriter(e);
-                return null;
-            }
+import javax.script.AbstractScriptEngine;
+import javax.script.Bindings;
+import javax.script.ScriptContext;
+import javax.script.ScriptEngine;
+import javax.script.ScriptEngineFactory;
+import javax.script.ScriptException;
+import javax.script.SimpleBindings;
+
+public class VelocityScriptEngine extends AbstractScriptEngine
+{
+
+    public static final String STRING_OUTPUT_MODE_KEY = 
"org.apache.velocity.stringOutput";
+    public static final String VELOCITY_PROPERTIES_KEY = 
"org.apache.velocity.script.properties";
+
+    // my factory, may be null
+    private volatile ScriptEngineFactory factory;
+    private volatile VelocityEngine vengine;
+
+    public VelocityScriptEngine(ScriptEngineFactory factory)
+    {
+        this.factory = factory;
+    }
+
+    public VelocityScriptEngine()
+    {
+        this(null);
+    }
+
+    public VelocityEngine getVelocityEngine()
+    {
+        return vengine;
+    }
+
+    // ScriptEngine methods
+    public Object eval(String str, ScriptContext ctx)
+                       throws ScriptException
+    {
+        return eval(new StringReader(str), ctx);
+    }
+
+    public Object eval(Reader reader, ScriptContext ctx)
+                       throws ScriptException
+    {
+        initVelocityEngine(ctx);
+        String fileName = getFilename(ctx);
+        VelocityContext vctx = getVelocityContext(ctx);
+        boolean outputAsString = isStringOutputMode(ctx);
+        Writer out;
+        if (outputAsString)
+        {
+            out = new StringWriter();
+        }
+        else
+        {
+            out = ctx.getWriter();
+        }
+        try
+        {
+            vengine.evaluate(vctx, out, fileName, reader);
+            out.flush();
          }
-        //TODO log error msg saying no such property file
-        return null;
-    }
-
-    private Properties getPropertiesFromContext(ScriptContext context) {
-        Object props = context.getAttribute(VELOCITY_PROPERTIES);
-        if (props instanceof Properties) {
-            return (Properties) props;
-        } else {
-            return null;
+        catch (Exception exp)
+        {
+            throw new ScriptException(exp);
          }
+        return outputAsString ? out.toString() : null;
      }

-
-    /**
-     * Causes the immediate execution of the script whose source is the String 
passed as the first argument. The script may be
-     * re-parsed or recompiled before execution. State left in the engine from 
previous executions, including variable values and
-     * compiled procedures may be visible during this execution.
-     *
-     * @param s             The script to be executed by the script engine.
-     * @param scriptContext A ScriptContext exposing sets of attributes in 
different scopes. The meanings of the
-     *                      scopes ScriptContext.GLOBAL_SCOPE, and 
ScriptContext.ENGINE_SCOPE are defined in the specification.
-     * @return The value returned from the execution of the script.
-     * @throws ScriptException
-     */
-    public Object eval(String s, ScriptContext scriptContext) throws 
ScriptException {
-            return eval(new StringReader(s),scriptContext);
-    }
-
-
-    /**
-     * Same as eval(String, ScriptContext) where the source of the script is 
read from a Reader.
-     *
-     * @param reader        The source of the script to be executed by the 
script engine.
-     * @param scriptContext The ScriptContext passed to the script engine.
-     * @return The value returned from the execution of the script.
-     * @throws ScriptException if an error occurrs in script.
-     *                         java.lang.NullPointerException - if either 
argument is null.
-     */
-    public Object eval(Reader reader, ScriptContext scriptContext) throws 
ScriptException {
-
-        if (reader == 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;
-
-        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){
+    public ScriptEngineFactory getFactory()
+    {
+        if (factory == null)
+        {
+            synchronized (this)
+            {
+                   if (factory == null)
+                {
+                       factory = new VelocityScriptEngineFactory();
+                   }
+            }
+        }
+        return factory;
+    }
+
+    public Bindings createBindings()
+    {
+        return new SimpleBindings();
+    }
+
+    // internals only below this point
+    private void initVelocityEngine(ScriptContext ctx)
+    {
+        if (vengine == null)
+        {
+            synchronized (this)
+            {
+                if (vengine != null) return;
+
+                Properties props = getVelocityProperties(ctx);
+                VelocityEngine tmpEngine = new VelocityEngine();
+                try
+                {
+                    if (props != null)
+                    {
+                        tmpEngine.init(props);
+                    }
+                    else
+                    {
+                        tmpEngine.init();
                      }
-
                  }
+                catch (RuntimeException rexp)
+                {
+                    throw rexp;
+                }
+                catch (Exception exp)
+                {
+                    throw new RuntimeException(exp);
+                }
+                vengine = tmpEngine;
              }
-
-            result = velocityEngine.evaluate(velocityContext, outPut, 
VelocityScriptEngine.DEFAULT_LOG_TAG, reader);
-
-        } catch (Exception exp) {
-            ScriptUtil.addExceptionToErrorWriter(exp);
-            throw new ScriptException(exp);
          }
-        return String.valueOf(result);
      }

-    /**
-     * Executes the specified script. The default ScriptContext for the 
ScriptEngine is used.
-     *
-     * @param s The script language source to be executed.
-     * @return The value returned from the execution of the script.
-     * @throws ScriptException - if error occurrs in script.
-     *                         java.lang.NullPointerException - if either 
argument is null.
-     */
-    public Object eval(String s) throws ScriptException {
-        return eval(s, scriptContext);
-    }
-
-
-    /**
-     * Same as eval(String) except that the source of the script is provided 
as a Reader
-     *
-     * @param reader The source of the script.
-     * @return The value returned by the script.
-     * @throws ScriptException
-     */
-    public Object eval(Reader reader) throws ScriptException {
-        return eval(reader, scriptContext);
-    }
-
-
-    /**
-     * Executes the script using the Bindings argument as the ENGINE_SCOPE 
Bindings of the ScriptEngine during the script
-     * execution. The Reader, Writer and non-ENGINE_SCOPE Bindings of the 
default ScriptContext are used.
-     * The ENGINE_SCOPE Bindings of the ScriptEngine is not changed, and its 
mappings are unaltered by the script execution.
-     *
-     * @param s        The source for the script.
-     * @param bindings The Bindings of attributes to be used for script 
execution.
-     * @return The value returned by the script.
-     * @throws ScriptException
-     */
-    public Object eval(String s, Bindings bindings) throws ScriptException {
-        ScriptContext scriptContext = 
getGeneratedScriptContextFromBinding(bindings);
-        return eval(new StringReader(s), scriptContext);
-    }
-
-
-    /**
-     * Same as eval(String, Bindings) except that the source of the script is 
provided as a Reader.
-     *
-     * @param reader   The source of the script.
-     * @param bindings The Bindings of attributes to be used for script 
execution.
-     * @return The value returned by the script.
-     * @throws ScriptException
-     */
-    public Object eval(Reader reader, Bindings bindings) throws 
ScriptException {
-        ScriptContext scriptContext = 
getGeneratedScriptContextFromBinding(bindings);
-        return eval(reader, scriptContext);
-    }
-
-    private ScriptContext getGeneratedScriptContextFromBinding(Bindings 
bindings) {
-        ScriptContext tmpContext = new VelocityScriptContext();
-        Bindings globalScope = 
scriptContext.getBindings(ScriptContext.GLOBAL_SCOPE);
-
-        //Setting global and engine scopes to context
-        if (globalScope != null) {
-            tmpContext.setBindings(globalScope, ScriptContext.GLOBAL_SCOPE);
-        }
-
-        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.");
-        }
-
-        tmpContext.setReader(scriptContext.getReader());
-        tmpContext.setWriter(scriptContext.getWriter());
-        tmpContext.setErrorWriter(scriptContext.getErrorWriter());
-
-        return tmpContext;
-    }
-
-    /**
-     * Sets a key/value pair in the state of the ScriptEngine that may either 
create a Java Language Binding to be used in the
-     * execution of scripts or be used in some other way, depending on whether 
the key is reserved. Must have the same effect
-     * as getBindings(ScriptContext.ENGINE_SCOPE).put.
-     *
-     * @param s The name of named value to add
-     * @param o The value of named value to add.
-     *          Throws:
-     *          java.lang.NullPointerException - if key is null.
-     *          java.lang.IllegalArgumentException - if key is empty.
-     */
-    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");
-        }
-
-        Bindings engineScope = 
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE);
-        engineScope.put(s, o);
-    }
-
-
-    /**
-     * Retrieves a value set in the state of this engine. The value might be 
one which was set using setValue or some other value in
-     * the state of the ScriptEngine, depending on the implementation. Must 
have the same effect as getBindings
-     * (ScriptContext.ENGINE_SCOPE).get
-     *
-     * @param s The key whose value is to be returned
-     * @return the value for the given key
-     *         Throws:
-     *         java.lang.NullPointerException - if key is null.
-     *         java.lang.IllegalArgumentException - if key is empty.
-     */
-    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");
-        }
-
-        Bindings engineScope = 
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE);
-        return engineScope.get(s);
-    }
-
-
-    /**
-     * The Bindings instances that are returned must be identical to those 
returned by the getBindings method of ScriptContext
-     * called with corresponding arguments on the default ScriptContext of the 
ScriptEngine.
-     *
-     * @param i scope
-     * @return The Bindings with the specified scope.
-     */
-    public Bindings getBindings(int i) {
-        return scriptContext.getBindings(i);
-    }
-
-
-    /**
-     * Sets a scope of named values to be used by scripts. The possible scopes 
are:
-     * ScriptContext.ENGINE_SCOPE - The specified Bindings replaces the engine 
scope of the ScriptEngine.
-     * ScriptContext.GLOBAL_SCOPE - The specified Bindings must be visible as 
the GLOBAL_SCOPE.
-     * Any other value of scope defined in the default ScriptContext of the 
ScriptEngine.
-     *
-     * @param bindings The Bindings for the specified scope.
-     * @param i        The specified scope. Either ScriptContext.ENGINE_SCOPE, 
ScriptContext.GLOBAL_SCOPE, or any other valid value of scope.
-     */
-    public void setBindings(Bindings bindings, int i) {
-        scriptContext.setBindings(bindings, i);
-    }
-
-
-    /**
-     * @return A Bindings that can be used to replace the state of this 
ScriptEngine.
-     */
-    public Bindings createBindings() {
-        return new VelocityBindings();
-    }
-
-    /**
-     * Returns the default ScriptContext of the ScriptEngine whose Bindings, 
Reader and Writers are used for script executions when no ScriptContext is 
specified.
-     *
-     * @return The default ScriptContext of the ScriptEngine.
-     */
-    public ScriptContext getContext() {
-        return scriptContext;
-    }
-
-
-    /**
-     * Sets the default ScriptContext of the ScriptEngine whose Bindings, 
Reader and Writers are used for script executions when no ScriptContext is 
specified.
-     *
-     * @param scriptContext A ScriptContext that will replace the default 
ScriptContext in the ScriptEngine.
-     *                      Throws: java.lang.NullPointerException - if 
context is null.
-     */
-    public void setContext(ScriptContext scriptContext) {
-        if (scriptContext == null) {
-            throw new NullPointerException("script context cannot be null");
-        }
-
-        this.scriptContext = scriptContext;
-    }
-
-    private VelocityContext getVelocityContext(ScriptContext ctx) {
+    private static VelocityContext getVelocityContext(ScriptContext ctx)
+    {
+        ctx.setAttribute("context", ctx, ScriptContext.ENGINE_SCOPE);
+        Bindings globalScope = ctx.getBindings(ScriptContext.GLOBAL_SCOPE);
          Bindings engineScope = ctx.getBindings(ScriptContext.ENGINE_SCOPE);
-        if (ctx.getBindings(ScriptContext.GLOBAL_SCOPE) == null) {
+        if (globalScope != null)
+        {
+            return new VelocityContext(engineScope, new 
VelocityContext(globalScope));
+        }
+        else
+        {
              return new VelocityContext(engineScope);
-        } else {
-            return new VelocityContext(engineScope, new 
VelocityContext(ctx.getBindings(ScriptContext.GLOBAL_SCOPE)));
          }
      }

-    private String getTargetFilename(ScriptContext ctx) {
+    private static String getFilename(ScriptContext ctx)
+    {
          Object fileName = ctx.getAttribute(ScriptEngine.FILENAME);
-        if (fileName != null) {
-            return fileName.toString();
-        } else {
-            return "No-Such-File";
+        return fileName != null? fileName.toString() : "<unknown>";
+    }
+
+    private static boolean isStringOutputMode(ScriptContext ctx)
+    {
+        Object flag = ctx.getAttribute(STRING_OUTPUT_MODE_KEY);
+        return Boolean.parseBoolean(String.valueOf(flag));
+    }
+
+    private static Properties getVelocityProperties(ScriptContext ctx)
+    {
+        try
+        {
+            Object props = ctx.getAttribute(VELOCITY_PROPERTIES_KEY);
+            if (props instanceof Properties)
+            {
+                return (Properties) props;
+            }
+            else
+            {
+                String propsName = System.getProperty(VELOCITY_PROPERTIES_KEY);
+                if (propsName != null)
+                {
+                    File propsFile = new File(propsName);
+                    if (propsFile.exists() && propsFile.canRead())
+                    {
+                        Properties p = new Properties();
+                        p.load(new FileInputStream(propsFile));
+                        return p;
+                    }
+                }
+            }
          }
+        catch (Exception exp)
+        {
+            System.err.println(exp);
+        }
+        return null;
      }
  }

Modified: 
velocity/engine/trunk/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityScriptEngineFactory.java
URL: 
http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityScriptEngineFactory.java?rev=1752882&r1=1752881&r2=1752882&view=diff
==============================================================================
--- 
velocity/engine/trunk/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityScriptEngineFactory.java
 (original)
+++ 
velocity/engine/trunk/velocity-engine-scripting/src/main/java/org/apache/velocity/script/VelocityScriptEngineFactory.java
 Fri Jul 15 22:30:59 2016
@@ -1,304 +1,184 @@
-package org.apache.velocity.script;
-/*
- * 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.
- */
-
-import javax.script.ScriptEngine;
-import javax.script.ScriptEngineFactory;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * VelocityScriptEngineFactory is used to describe and instantiate 
ScriptEngines.
- * There are two fundamental ways to instantiate this.
- *
- *   1. Create a factory by providing only name and version and allows to 
inherit default factory settings.
- *   2. Create a factory by providing all required attributes i.e  List<String> 
names, List<String> extensions
- *       List<String> mimeTypes , String name,String version, String langName, 
String langVersion
- */
-public class VelocityScriptEngineFactory implements ScriptEngineFactory {
-
-    /**
-     *  names of the script engine
-     */
-    private List<String> names;
-
-
-    /**
-     * List of  extensions for script engine
-     */
-    private List<String> extensions;
-
-
-    /**
-     *  List of mime types for script engine
-     */
-    private List<String> mimeTypes;
-
-    /**
-     *  Default name of the engine
-     */
-    private String name = "velocity";
-
-
-    /**
-     * Default version of the engine
-     */
-    private String version = "1.8";
-
-
-    /**
-     *  Default script language name
-     */
-    private String langName = "velocity";
-
-
-    /**
-     * Default  version of the script language
-     */
-    private String langVersion = "1.8";
-
-
-    /**
-     * Provides full capability to change default engine settings
-     *
-     * @param names       Override default names for script engine
-     * @param extensions  Override default extensions for script engine
-     * @param mimeTypes   Override default mime types for script engine
-     * @param name        Override default name for script engine
-     * @param version     Override default version for script engine
-     * @param langName    Override default language names for script engine
-     * @param langVersion Override default language version for script engine
-     */
-    public VelocityScriptEngineFactory(List<String> names, List<String> 
extensions
-            , List<String> mimeTypes
-            , String name
-            , String version
-            , String langName
-            , String langVersion
-    ) {
-        this.names = Collections.unmodifiableList(names);
-        this.extensions = Collections.unmodifiableList(extensions);
-        this.mimeTypes = Collections.unmodifiableList(mimeTypes);
-        this.name = name;
-        this.version = version;
-        this.langName = langName;
-        this.langVersion = langVersion;
-    }
-
-    /**
-     * @param name    Override default name for script engine
-     * @param version Override default version for script engine
-     */
-    public VelocityScriptEngineFactory(String name, String version) {
-        this.name = name;
-        this.version = version;
-        initDefaultSettings();
-    }
-
-    /**
-     * Simple Factory with all default settings
-     */
-    public VelocityScriptEngineFactory() {
-        initDefaultSettings();
-    }
-
-    private void initDefaultSettings() {
-        names = new ArrayList<String>(1);
-        names.add("Velocity");
-        names = Collections.unmodifiableList(names);
-        extensions = new ArrayList<String>(3);
-        extensions.add("vm");
-        extensions.add("vtl");
-        extensions.add("vhtml");
-        extensions = Collections.unmodifiableList(extensions);
-        mimeTypes = new ArrayList<String>(1);
-        mimeTypes.add("text/x-velocity");
-        mimeTypes = Collections.unmodifiableList(mimeTypes);
-    }
-
-  /**
-     *  Returns the full name of the ScriptEngine.
-     * @return
-     */
-    public String getEngineName() {
-        return name;
-    }
-
-
-  /**
-     *  Returns the version of the ScriptEngine.
-     * @return
-     */
-    public String getEngineVersion() {
-        return version;
-    }
-
-
-  /**
-     *  Returns an immutable list of filename extensions, which generally 
identify scripts written in the language
-     *  supported by this ScriptEngine.
-     * @return
-     */
-    public List<String> getExtensions() {
-        return extensions;
-    }
-
-
-  /**
-     *  Returns an immutable list of mimetypes, associated with scripts that 
can be executed by the engine.
-     * @return
-     */
-    public List<String> getMimeTypes() {
-        return mimeTypes;
-    }
-
-
-  /**
-     * Returns an immutable list of short names for the ScriptEngine, which 
may be used to identify the ScriptEngine by the ScriptEngineManager.
-     * @return
-     */
-    public List<String> getNames() {
-        return names;
-    }
-
-
-  /**
-     *  Returns the name of the scripting langauge supported by this 
ScriptEngine.
-     * @return
-     */
-    public String getLanguageName() {
-        return langName;
-    }
-
-
-  /**
-     *  Returns the version of the scripting language supported by this 
ScriptEngine.
-     * @return
-     */
-    public String getLanguageVersion() {
-        return langVersion;
-    }
-
-
-
-   /**
-     *   Returns the value of an attribute whose meaning may be 
implementation-specific.
-     * @param s
-     * @return
-     */
-    public Object getParameter(String s) {
-        if (s.equals(ScriptEngine.ENGINE)) {
-            return getEngineName();
-        } else if (s.equals(ScriptEngine.NAME)) {
-            return getNames().get(0);
-        } else if (s.equals(ScriptEngine.LANGUAGE)) {
-            return getLanguageName();
-        } else if (s.equals(ScriptEngine.ENGINE_VERSION)) {
-            return getEngineVersion();
-        } else if (s.equals(ScriptEngine.LANGUAGE_VERSION)) {
-            return getLanguageVersion();
-        } else if (s.equals("THREADING")) {
-            return "MULTITHREADED";
-        } else {
-            return null;
-        }
-    }
-
-
-
-    /**
-     *
-     * @param s   Name of the Object to whom the method belongs to
-     * @param s1  Name of the method
-     * @param strings method arguments to be passed
-     * @return  the method syntax for velocity script
-     */
-    public String getMethodCallSyntax(String s, String s1, String... strings) {
-        StringBuilder syntax = new StringBuilder();
-        syntax.append("$");
-        syntax.append("{");
-        syntax.append(s);
-        syntax.append(".");
-        syntax.append(s1);
-        syntax.append("(");
-        if (strings.length != 0) {
-            int i = 0;
-            for (; i < strings.length - 1; i++) {
-                syntax.append("$" + strings[i]);
-                syntax.append(", ");
-            }
-            syntax.append("$" + strings[i]);
-        }
-        syntax.append(")");
-        syntax.append("}");
-        return syntax.toString();
-    }
-
-
-
-    /**
-     *
-     * @param s  String to display
-     * @return     //TODO
-     */
-    public String getOutputStatement(String s) {
-        StringBuilder output = new StringBuilder();
-        output.append("${context.getWriter().write(\"");
-        for (int i = 0; i < s.length(); i++) {
-            char ch = s.charAt(i);
-            switch (ch) {
-            case '"':
-                output.append("\\\"");
-                break;
-            case '\\':
-                output.append("\\\\");
-                break;
-            default:
-                output.append(ch);
-                break;
-            }
-        }
-        output.append("\")}");
-        return output.toString();
-    }
-
-
-  /**
-     *   Returns A valid scripting language executable progam with given 
statements.
-     * @param strings  scripting statements provided
-     * @return the program from the statements given
-     */
-    public String getProgram(String... strings) {
-        StringBuilder program = new StringBuilder();
-        for (int i = 0; i < strings.length; i++) {
-            program.append(strings[i]);
-            program.append("\n");
-        }
-        return program.toString();
-    }
-
-    /**
-     *  Returns an instance of the ScriptEngine associated with this 
ScriptEngineFactory
-     * @return
-     */
-    public ScriptEngine getScriptEngine() {
-        return new VelocityScriptEngine(this);
-    }
-}
+package org.apache.velocity.script;
+
+/* dual licencing... */
+
+/*
+ * 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.
+ */
+
+/*
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ *
+ * Redistribution and use in source and binary forms, with or without 
modification, are
+ * permitted provided that the following conditions are met: Redistributions 
of source code
+ * must retain the above copyright notice, this list of conditions and the 
following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, 
this list of
+ * conditions and the following disclaimer in the documentation and/or other 
materials
+ * provided with the distribution. Neither the name of the Sun Microsystems 
nor the names of
+ * is contributors may be used to endorse or promote products derived from 
this software
+ * without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
COPYRIGHT OWNER
+ * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
(INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * Factory class for the Velocity scripting interface. Please refer to the
+ * javax.script.ScriptEngineFactory documentation for details.
+ *
+ * @author A. Sundararajan
+ * @author <a href="mailto:claude.bris...@gmail.com";>Claude Brisson</a>
+ * @version $Id: VelocityScriptEngineFactory.java$
+ */
+
+import javax.script.ScriptEngine;
+import javax.script.ScriptEngineFactory;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Properties;
+
+public class VelocityScriptEngineFactory implements ScriptEngineFactory
+{
+
+    private static final String VELOCITY_NAME = "Velocity";
+    private static final String VELOCITY_VERSION = "2.0";
+    private static final String VELOCITY_LANGUAGE = "VTL";
+
+    private static List<String> names;
+    private static List<String> extensions;
+    private static List<String> mimeTypes;
+
+    private static Properties parameters;
+
+    static
+    {
+        names = new ArrayList();
+        names.add("velocity");
+        names.add("Velocity");
+        names = Collections.unmodifiableList(names);
+        extensions = new ArrayList();
+        extensions.add("vm");
+        extensions.add("vtl");
+        extensions.add("vhtml");
+        extensions = Collections.unmodifiableList(extensions);
+        mimeTypes = new ArrayList();
+        mimeTypes.add("text/x-velocity");
+        mimeTypes = Collections.unmodifiableList(mimeTypes);
+        parameters = new Properties();
+        parameters.put(ScriptEngine.NAME, VELOCITY_NAME);
+        parameters.put(ScriptEngine.ENGINE_VERSION, VELOCITY_VERSION);
+        parameters.put(ScriptEngine.ENGINE, VELOCITY_NAME);
+        parameters.put(ScriptEngine.LANGUAGE, VELOCITY_LANGUAGE);
+        parameters.put(ScriptEngine.LANGUAGE_VERSION, VELOCITY_VERSION);
+        parameters.put("THREADING", "MULTITHREADED");
+    }
+
+    public String getEngineName()
+    {
+        return VELOCITY_NAME;
+    }
+
+    public String getEngineVersion()
+    {
+        return VELOCITY_VERSION;
+    }
+
+    public List<String> getExtensions()
+    {
+        return extensions;
+    }
+
+    public String getLanguageName()
+    {
+        return VELOCITY_NAME;
+    }
+
+    public String getLanguageVersion()
+    {
+        return VELOCITY_VERSION;
+    }
+
+    public String getMethodCallSyntax(String obj, String m, String... args)
+    {
+        StringBuilder buf = new StringBuilder();
+        buf.append("${");
+        buf.append(obj);
+        buf.append(".");
+        buf.append(m);
+        buf.append("(");
+        if (args.length != 0)
+        {
+            int i = 0;
+            for (; i < args.length - 1; i++)
+            {
+                buf.append("$" + args[i]);
+                buf.append(", ");
+            }
+            buf.append("$" + args[i]);
+        }
+        buf.append(")}");
+        return buf.toString();
+    }
+
+    public List<String> getMimeTypes()
+    {
+        return mimeTypes;
+    }
+
+    public List<String> getNames()
+    {
+        return names;
+    }
+
+    public String getOutputStatement(String toDisplay)
+    {
+        StringBuilder buf = new StringBuilder();
+        buf.append("#[[").append(toDisplay).append("]]#");
+        return buf.toString();
+    }
+
+    public String getParameter(String key)
+    {
+        return parameters.getProperty(key);
+    }
+
+    public String getProgram(String... statements)
+    {
+        StringBuilder buf = new StringBuilder();
+        for (int i = 0; i < statements.length; i++)
+        {
+            buf.append(statements[i]);
+            buf.append("\n");
+        }
+        return buf.toString();
+    }
+
+    public ScriptEngine getScriptEngine()
+    {
+        return new VelocityScriptEngine(this);
+    }
+}

Modified: 
velocity/engine/trunk/velocity-engine-scripting/src/test/java/org/apache/velocity/script/test/ScriptEngineTest.java
URL: 
http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-scripting/src/test/java/org/apache/velocity/script/test/ScriptEngineTest.java?rev=1752882&r1=1752881&r2=1752882&view=diff
==============================================================================
--- 
velocity/engine/trunk/velocity-engine-scripting/src/test/java/org/apache/velocity/script/test/ScriptEngineTest.java
 (original)
+++ 
velocity/engine/trunk/velocity-engine-scripting/src/test/java/org/apache/velocity/script/test/ScriptEngineTest.java
 Fri Jul 15 22:30:59 2016
@@ -65,29 +65,13 @@ public class ScriptEngineTest extends Ab
      }

      public void testEngineEvals() throws ScriptException {
-        String path = 
ScriptEngineTest.class.getProtectionDomain().getCodeSource().getLocation().getPath();
-        String propertyFile = 
path.substring(0,path.indexOf("target/test-classes")) +
-                
"src/test/java/org/apache/velocity/script/test/resources/velocity.properties";
-        System.setProperty(VelocityScriptEngine.VELOCITY_PROPERTIES,  
propertyFile) ;
-        //Comment test case
-
+        String path = System.getProperty("test.resources.dir");
          Writer writer = new StringWriter();
          engine.getContext().setWriter(writer);
-        String script = "<html>\n" +
-                "<body>\n" +
-                "#set( $foo = \"Velocity\" )\n" +
-                "Hello $foo World!\n" +
-                "</body>\n" +
-                "<html>";
-//        String script = "## This is a comment ";
+        engine.getContext().setAttribute(VelocityScriptEngine.VELOCITY_PROPERTIES_KEY, 
path + "/test-classes/velocity.properties", ScriptContext.ENGINE_SCOPE);
+        engine.getContext().setAttribute(VelocityScriptEngine.STRING_OUTPUT_MODE_KEY, 
"true", ScriptContext.ENGINE_SCOPE);
+        String script = "<html><body>#set( $foo = 'Velocity' )Hello $foo 
World!</body><html>";
          Object result = engine.eval(script);
-        assertTrue(Boolean.valueOf(result.toString()));
-        System.out.println(">>>"+writer);
-        //TODO add more engine script evaluation test cases
-
+        assertEquals(String.valueOf(result), "<html><body>Hello Velocity 
World!</body><html>");
      }
-
-
-
-
  }

Modified: 
velocity/engine/trunk/velocity-engine-scripting/src/test/java/org/apache/velocity/script/test/VelocityScriptContextTest.java
URL: 
http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-scripting/src/test/java/org/apache/velocity/script/test/VelocityScriptContextTest.java?rev=1752882&r1=1752881&r2=1752882&view=diff
==============================================================================
--- 
velocity/engine/trunk/velocity-engine-scripting/src/test/java/org/apache/velocity/script/test/VelocityScriptContextTest.java
 (original)
+++ 
velocity/engine/trunk/velocity-engine-scripting/src/test/java/org/apache/velocity/script/test/VelocityScriptContextTest.java
 Fri Jul 15 22:30:59 2016
@@ -19,8 +19,9 @@ package org.apache.velocity.script.test;
  * under the License.
  */

-import org.apache.velocity.script.VelocityBindings;
+import javax.script.Bindings;
  import javax.script.ScriptContext;
+import javax.script.SimpleBindings;
  import java.util.List;


@@ -41,7 +42,7 @@ public class VelocityScriptContextTest e

      public void testScopes() {

-        VelocityBindings velocityBindings = new VelocityBindings();
+        Bindings velocityBindings = new SimpleBindings();
          engine.getContext().setBindings(velocityBindings, 
ScriptContext.ENGINE_SCOPE);
          assertNotNull(engine.getBindings(ScriptContext.ENGINE_SCOPE));
          assertNotNull("Engines Registered through manager sets the global 
scope", engine.getBindings(ScriptContext.GLOBAL_SCOPE));
@@ -88,7 +89,7 @@ public class VelocityScriptContextTest e
          }

          try {
-            context.setBindings(new VelocityBindings(), invalidScope);
+            context.setBindings(new SimpleBindings(), invalidScope);
              fail("Cannot pass invalid scope");
          } catch (IllegalArgumentException n) {
              //Success
@@ -156,5 +157,3 @@ public class VelocityScriptContextTest e

      }
  }
-
-


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@velocity.apache.org
For additional commands, e-mail: dev-h...@velocity.apache.org



Reply via email to