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


The following commit(s) were added to refs/heads/master by this push:
     new 7b2b3da  Tweak `JavaShell` to compile lazily and rename method name to 
align with `GroovyShell`
7b2b3da is described below

commit 7b2b3da4cf965f6895be33ac98e53d1856eef6b7
Author: Daniel Sun <[email protected]>
AuthorDate: Sat Mar 14 20:35:21 2020 +0800

    Tweak `JavaShell` to compile lazily and rename method name to align with 
`GroovyShell`
    
    It is OK to rename `runMain` to `run` because `JavaShell` is introduced 
since 4.0.0 and 4.0.0-alpha-1 has not been released.
---
 .../java/org/apache/groovy/util/JavaShell.java     | 26 +++++++++++++---------
 .../org/apache/groovy/util/JavaShellTest.groovy    |  4 ++--
 2 files changed, 18 insertions(+), 12 deletions(-)

diff --git a/src/main/java/org/apache/groovy/util/JavaShell.java 
b/src/main/java/org/apache/groovy/util/JavaShell.java
index ee1bd21..c797cb7 100644
--- a/src/main/java/org/apache/groovy/util/JavaShell.java
+++ b/src/main/java/org/apache/groovy/util/JavaShell.java
@@ -90,7 +90,7 @@ public class JavaShell {
      * @param args arguments for main method
      * @throws Throwable
      */
-    public void runMain(String className, String src, String... args) throws 
Throwable {
+    public void run(String className, String src, String... args) throws 
Throwable {
         Class<?> c = compile(className, src);
         Method mainMethod = c.getMethod(MAIN_METHOD_NAME, String[].class);
         mainMethod.invoke(null, (Object) args);
@@ -105,7 +105,9 @@ public class JavaShell {
      * @throws ClassNotFoundException
      */
     public Class<?> compile(final String className, String src) throws 
IOException, ClassNotFoundException {
-        return compileAll(className, src).get(className);
+        doCompile(className, src);
+
+        return jscl.findClass(className);
     }
 
     /**
@@ -118,6 +120,18 @@ public class JavaShell {
      * @throws ClassNotFoundException
      */
     public Map<String, Class<?>> compileAll(final String className, String 
src) throws IOException, ClassNotFoundException {
+        doCompile(className, src);
+
+        Map<String, Class<?>> classes = new LinkedHashMap<>();
+        for (String cn : jscl.getClassMap().keySet()) {
+            Class<?> c = jscl.findClass(cn);
+            classes.put(cn, c);
+        }
+
+        return classes;
+    }
+
+    private void doCompile(String className, String src) throws IOException {
         JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
         try (BytesJavaFileManager bjfm = new 
BytesJavaFileManager(compiler.getStandardFileManager(null, locale, charset))) {
             StringBuilderWriter out = new StringBuilderWriter();
@@ -142,14 +156,6 @@ public class JavaShell {
             final Map<String, byte[]> classMap = bjfm.getClassMap();
 
             jscl.setClassMap(classMap);
-
-            Map<String, Class<?>> classes = new LinkedHashMap<>();
-            for (String cn : classMap.keySet()) {
-                Class<?> c = jscl.findClass(cn);
-                classes.put(cn, c);
-            }
-
-            return classes;
         }
     }
 
diff --git a/src/test/org/apache/groovy/util/JavaShellTest.groovy 
b/src/test/org/apache/groovy/util/JavaShellTest.groovy
index 70fa388..144ac2b 100644
--- a/src/test/org/apache/groovy/util/JavaShellTest.groovy
+++ b/src/test/org/apache/groovy/util/JavaShellTest.groovy
@@ -53,11 +53,11 @@ class JavaShellTest {
     }
 
     @Test
-    void runMain() {
+    void run() {
         JavaShell js = new JavaShell()
         final mcn = "tests.Test1"
         try {
-            js.runMain(mcn, '''
+            js.run(mcn, '''
             package tests;
             public class Test1 {
                 public static void main(String[] args) {

Reply via email to