You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2020/03/01 05:52:21 UTC

[groovy] branch master updated (3515da9 -> 66e932d)

This is an automated email from the ASF dual-hosted git repository.

sunlan pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git.


    from 3515da9  Revert "add an IF statement in the method check genercis"
     new 14e1772  GROOVY-9430: Added support for ScriptEngine.FILENAME behaviour(closes #1178)
     new 66e932d  GROOVY-9430: Add a test(closes #1178)

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../groovy/jsr223/GroovyScriptEngineImpl.java      | 22 ++++++++++++++++++----
 .../org/codehaus/groovy/jsr223/JSR223Test.groovy   |  7 +++++++
 2 files changed, 25 insertions(+), 4 deletions(-)


[groovy] 02/02: GROOVY-9430: Add a test(closes #1178)

Posted by su...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sunlan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git

commit 66e932dca8a639d88e03409041c6840701a48f04
Author: Daniel Sun <su...@apache.org>
AuthorDate: Sun Mar 1 13:49:49 2020 +0800

    GROOVY-9430: Add a test(closes #1178)
---
 .../java/org/codehaus/groovy/jsr223/GroovyScriptEngineImpl.java    | 5 +++++
 .../src/test/groovy/org/codehaus/groovy/jsr223/JSR223Test.groovy   | 7 +++++++
 2 files changed, 12 insertions(+)

diff --git a/subprojects/groovy-jsr223/src/main/java/org/codehaus/groovy/jsr223/GroovyScriptEngineImpl.java b/subprojects/groovy-jsr223/src/main/java/org/codehaus/groovy/jsr223/GroovyScriptEngineImpl.java
index 9994013..15948f2 100644
--- a/subprojects/groovy-jsr223/src/main/java/org/codehaus/groovy/jsr223/GroovyScriptEngineImpl.java
+++ b/subprojects/groovy-jsr223/src/main/java/org/codehaus/groovy/jsr223/GroovyScriptEngineImpl.java
@@ -322,6 +322,11 @@ public class GroovyScriptEngineImpl extends AbstractScriptEngine implements Comp
         }
     }
 
+    Class<?> getScriptClass(String script)
+            throws CompilationFailedException {
+        return getScriptClass(script, null);
+    }
+
     Class<?> getScriptClass(String script, ScriptContext context)
             throws CompilationFailedException {
         Class<?> clazz = classMap.get(script);
diff --git a/subprojects/groovy-jsr223/src/test/groovy/org/codehaus/groovy/jsr223/JSR223Test.groovy b/subprojects/groovy-jsr223/src/test/groovy/org/codehaus/groovy/jsr223/JSR223Test.groovy
index ccb1014..b6427ba 100644
--- a/subprojects/groovy-jsr223/src/test/groovy/org/codehaus/groovy/jsr223/JSR223Test.groovy
+++ b/subprojects/groovy-jsr223/src/test/groovy/org/codehaus/groovy/jsr223/JSR223Test.groovy
@@ -243,4 +243,11 @@ class JSR223Test extends GroovyTestCase {
         '''
     }
 
+    void testGroovy9430() {
+        ScriptEngineFactory factory = new GroovyScriptEngineFactory()
+        ScriptEngine engine = factory.getScriptEngine()
+        ScriptContext context = new SimpleScriptContext()
+        context.setAttribute(ScriptEngine.FILENAME, "testGroovy9430.groovy", ScriptContext.ENGINE_SCOPE)
+        assert 'testGroovy9430.groovy' == engine.generateScriptName(context)
+    }
 }


[groovy] 01/02: GROOVY-9430: Added support for ScriptEngine.FILENAME behaviour(closes #1178)

Posted by su...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sunlan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git

commit 14e177243885a82de593d5f4fa67477a827fcd90
Author: Alberto Ingenito <al...@gmail.com>
AuthorDate: Sat Feb 29 08:24:28 2020 +0100

    GROOVY-9430: Added support for ScriptEngine.FILENAME behaviour(closes #1178)
    
    When set in the bindings, FILENAME should be used as the file name
    for the script being processed
---
 .../groovy/jsr223/GroovyScriptEngineImpl.java         | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/subprojects/groovy-jsr223/src/main/java/org/codehaus/groovy/jsr223/GroovyScriptEngineImpl.java b/subprojects/groovy-jsr223/src/main/java/org/codehaus/groovy/jsr223/GroovyScriptEngineImpl.java
index c2c5d4e..9994013 100644
--- a/subprojects/groovy-jsr223/src/main/java/org/codehaus/groovy/jsr223/GroovyScriptEngineImpl.java
+++ b/subprojects/groovy-jsr223/src/main/java/org/codehaus/groovy/jsr223/GroovyScriptEngineImpl.java
@@ -70,6 +70,7 @@ import javax.script.CompiledScript;
 import javax.script.Invocable;
 import javax.script.ScriptContext;
 import javax.script.ScriptEngineFactory;
+import javax.script.ScriptEngine;
 import javax.script.ScriptException;
 import javax.script.SimpleBindings;
 import java.io.IOException;
@@ -150,7 +151,7 @@ public class GroovyScriptEngineImpl extends AbstractScriptEngine implements Comp
         } catch (ClassCastException cce) { /*ignore.*/ }
 
         try {
-            Class<?> clazz = getScriptClass(script);
+            Class<?> clazz = getScriptClass(script, ctx);
             if (clazz == null) throw new ScriptException("Script class is null");
             return eval(clazz, ctx);
         } catch (Exception e) {
@@ -178,7 +179,7 @@ public class GroovyScriptEngineImpl extends AbstractScriptEngine implements Comp
     public CompiledScript compile(String scriptSource) throws ScriptException {
         try {
             return new GroovyCompiledScript(this,
-                    getScriptClass(scriptSource));
+                    getScriptClass(scriptSource, context));
         } catch (CompilationFailedException ee) {
             throw new ScriptException(ee);
         }
@@ -321,14 +322,14 @@ public class GroovyScriptEngineImpl extends AbstractScriptEngine implements Comp
         }
     }
 
-    Class<?> getScriptClass(String script)
+    Class<?> getScriptClass(String script, ScriptContext context)
             throws CompilationFailedException {
         Class<?> clazz = classMap.get(script);
         if (clazz != null) {
             return clazz;
         }
 
-        clazz = loader.parseClass(script, generateScriptName());
+        clazz = loader.parseClass(script, generateScriptName(context));
         classMap.put(script, clazz);
         return clazz;
     }
@@ -400,7 +401,15 @@ public class GroovyScriptEngineImpl extends AbstractScriptEngine implements Comp
     }
 
     // generate a unique name for top-level Script classes
-    private static synchronized String generateScriptName() {
+    private static synchronized String generateScriptName(ScriptContext	context) {
+        // If context is available, and contains FILENAME,
+        // use it as script name
+        if (context != null) {
+            Object filename = context.getAttribute(ScriptEngine.FILENAME);
+            if (filename != null) {
+                return filename.toString();
+            }
+        }
         return "Script" + (++counter) + ".groovy";
     }