From 7c3082a0930e7937c0507021fc0ca6a2d25e1d0a Mon Sep 17 00:00:00 2001 From: Gian Mario Contessa Date: Fri, 24 May 2019 08:09:59 +0100 Subject: [PATCH 1/4] BAEL-2899: project structure and example classes --- java-groovy-joint/pom.xml | 132 ++++++++++++++++++ .../main/groovy/com.baeldung/CalcMath.groovy | 19 +++ .../groovy/com.baeldung/CalcScript.groovy | 19 +++ .../src/main/java/com/baeldung/App.java | 54 +++++++ 4 files changed, 224 insertions(+) create mode 100644 java-groovy-joint/pom.xml create mode 100644 java-groovy-joint/src/main/groovy/com.baeldung/CalcMath.groovy create mode 100644 java-groovy-joint/src/main/groovy/com.baeldung/CalcScript.groovy create mode 100644 java-groovy-joint/src/main/java/com/baeldung/App.java diff --git a/java-groovy-joint/pom.xml b/java-groovy-joint/pom.xml new file mode 100644 index 0000000000..67365cf999 --- /dev/null +++ b/java-groovy-joint/pom.xml @@ -0,0 +1,132 @@ + + + + 4.0.0 + java-groovy-joint + 0.1.0-SNAPSHOT + java-groovy-joint + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + UTF-8 + 3.9 + 1.8 + 3.8.1 + 1.2.3 + 2.5.7 + + + + + bintray + Groovy Bintray + https://dl.bintray.com/groovy/maven + + never + + + false + + + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + ch.qos.logback + logback-classic + ${logback.version} + + + org.codehaus.groovy + groovy-all + ${groovy.version} + pom + + + junit + junit + 4.11 + test + + + + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.1.2 + + + + com.baeldung.App + true + + + + + + maven-compiler-plugin + 3.8.0 + + groovy-eclipse-compiler + ${java.version} + ${java.version} + + + + org.codehaus.groovy + groovy-eclipse-compiler + 3.3.0-01 + + + org.codehaus.groovy + groovy-eclipse-batch + ${groovy.version}-01 + + + + + + org.apache.maven.plugins + maven-assembly-plugin + 3.1.0 + + + + jar-with-dependencies + + + + + com.baeldung.App + + + + + + + make-assembly + + package + + single + + + + + + + + + diff --git a/java-groovy-joint/src/main/groovy/com.baeldung/CalcMath.groovy b/java-groovy-joint/src/main/groovy/com.baeldung/CalcMath.groovy new file mode 100644 index 0000000000..d9709653c7 --- /dev/null +++ b/java-groovy-joint/src/main/groovy/com.baeldung/CalcMath.groovy @@ -0,0 +1,19 @@ +package com.baeldung + +import org.slf4j.LoggerFactory + +class CalcMath { + def log = LoggerFactory.getLogger(this.getClass()) + + def calcSum(x, y) { + log.info "Executing $x + $y" + x + y + } + + def calcSum2(x, y) { + log.info "Executing $x + $y" + // DANGER! This won't throw a compilation issue and fail only at runtime!!! + calcSum3() + log.info("Logging an undefined variable: $z") + } +} \ No newline at end of file diff --git a/java-groovy-joint/src/main/groovy/com.baeldung/CalcScript.groovy b/java-groovy-joint/src/main/groovy/com.baeldung/CalcScript.groovy new file mode 100644 index 0000000000..2278f0dab8 --- /dev/null +++ b/java-groovy-joint/src/main/groovy/com.baeldung/CalcScript.groovy @@ -0,0 +1,19 @@ +package com.baeldung + +import org.slf4j.LoggerFactory + +abstract class CalcScript extends Script { + def log = LoggerFactory.getLogger(this.getClass()) + + def calcSum(x, y) { + log.info "Executing $x + $y" + x + y + } + + def calcSum2(x, y) { + log.info "Executing $x + $y" + // DANGER! This won't throw a compilation issue and fail only at runtime!!! + calcSum3() + log.info("Logging an undefined variable: $z") + } +} \ No newline at end of file diff --git a/java-groovy-joint/src/main/java/com/baeldung/App.java b/java-groovy-joint/src/main/java/com/baeldung/App.java new file mode 100644 index 0000000000..0a201d12e2 --- /dev/null +++ b/java-groovy-joint/src/main/java/com/baeldung/App.java @@ -0,0 +1,54 @@ +package com.baeldung; + +import groovy.lang.Binding; +import groovy.lang.GroovyClassLoader; +import groovy.lang.GroovyShell; +import org.codehaus.groovy.control.CompilerConfiguration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Hello world! + * + */ +public class App { + private final static Logger LOG = LoggerFactory.getLogger(App.class); + private final GroovyClassLoader loader; + private final GroovyShell shell; + + private App() { + loader = new GroovyClassLoader(this.getClass().getClassLoader()); + CompilerConfiguration config = new CompilerConfiguration(); + config.setScriptBaseClass("com.baeldung.CalcScript"); + shell = new GroovyShell(loader, new Binding(), config); + } + + private void runScript(int x, int y) { + Object script = shell.parse(String.format("calcSum(%d,%d)", x, y)); + assert script instanceof CalcScript; + Object result = ((CalcScript) script).run(); + LOG.info("Result of run() method is {}", result); + + Object script2 = shell.parse("CalcScript"); + Object result2 = ((CalcScript) script2).calcSum(x + 7, y + 7); + LOG.info("Result of calcSum() method is {}", result2); + + } + + private void runClass(int x, int y) throws ClassNotFoundException, IllegalAccessException, InstantiationException { + Class calcClass = loader.loadClass("com.baeldung.CalcMath"); + Object calc = calcClass.newInstance(); + assert calc instanceof CalcMath; + + Object result = ((CalcMath) calc).calcSum(x, y); + LOG.info("Result is {}", result); + } + + public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException { + App app = new App(); + LOG.info("Running a groovy script..."); + app.runScript(5, 10); + LOG.info("Running a groovy class..."); + app.runClass(1, 3); + } +} From 653717e25ef14bf7aadaed736d268fb9fe4a371c Mon Sep 17 00:00:00 2001 From: Gian Mario Contessa Date: Sun, 26 May 2019 01:09:20 +0100 Subject: [PATCH 2/4] BAEL-2899: adding some more case scenarios --- java-groovy-joint/gmavenplus-pom.xml | 148 ++++++++++++++++++ java-groovy-joint/pom.xml | 1 + .../groovy/com.baeldung/CalcScript.groovy | 19 --- .../baeldung}/CalcMath.groovy | 6 + .../groovy/com/baeldung/CalcScript.groovy | 10 ++ .../src/main/java/com/baeldung/App.java | 74 +++++++-- 6 files changed, 228 insertions(+), 30 deletions(-) create mode 100644 java-groovy-joint/gmavenplus-pom.xml delete mode 100644 java-groovy-joint/src/main/groovy/com.baeldung/CalcScript.groovy rename java-groovy-joint/src/main/groovy/{com.baeldung => com/baeldung}/CalcMath.groovy (76%) create mode 100644 java-groovy-joint/src/main/groovy/com/baeldung/CalcScript.groovy diff --git a/java-groovy-joint/gmavenplus-pom.xml b/java-groovy-joint/gmavenplus-pom.xml new file mode 100644 index 0000000000..b34eeb292d --- /dev/null +++ b/java-groovy-joint/gmavenplus-pom.xml @@ -0,0 +1,148 @@ + + + + 4.0.0 + java-groovy-joint + 0.1.0-SNAPSHOT + java-groovy-joint + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + UTF-8 + 3.9 + 1.8 + 3.8.1 + 1.2.3 + 2.5.7 + + + + + bintray + Groovy Bintray + https://dl.bintray.com/groovy/maven + + never + + + false + + + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + ch.qos.logback + logback-classic + ${logback.version} + + + org.codehaus.groovy + groovy-all + ${groovy.version} + pom + + + junit + junit + 4.11 + test + + + + + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.1.2 + + + + com.baeldung.App + true + + + + + + org.codehaus.gmavenplus + gmavenplus-plugin + 1.7.0 + + + + execute + addSources + addTestSources + generateStubs + compile + generateTestStubs + compileTests + removeStubs + removeTestStubs + + + + + + org.codehaus.groovy + groovy-all + + 2.5.6 + runtime + pom + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + + + + org.apache.maven.plugins + maven-assembly-plugin + 3.1.0 + + + + jar-with-dependencies + + + + + com.baeldung.App + + + + + + + make-assembly + + package + + single + + + + + + + + + diff --git a/java-groovy-joint/pom.xml b/java-groovy-joint/pom.xml index 67365cf999..5ac4768865 100644 --- a/java-groovy-joint/pom.xml +++ b/java-groovy-joint/pom.xml @@ -27,6 +27,7 @@ Groovy Bintray https://dl.bintray.com/groovy/maven + never diff --git a/java-groovy-joint/src/main/groovy/com.baeldung/CalcScript.groovy b/java-groovy-joint/src/main/groovy/com.baeldung/CalcScript.groovy deleted file mode 100644 index 2278f0dab8..0000000000 --- a/java-groovy-joint/src/main/groovy/com.baeldung/CalcScript.groovy +++ /dev/null @@ -1,19 +0,0 @@ -package com.baeldung - -import org.slf4j.LoggerFactory - -abstract class CalcScript extends Script { - def log = LoggerFactory.getLogger(this.getClass()) - - def calcSum(x, y) { - log.info "Executing $x + $y" - x + y - } - - def calcSum2(x, y) { - log.info "Executing $x + $y" - // DANGER! This won't throw a compilation issue and fail only at runtime!!! - calcSum3() - log.info("Logging an undefined variable: $z") - } -} \ No newline at end of file diff --git a/java-groovy-joint/src/main/groovy/com.baeldung/CalcMath.groovy b/java-groovy-joint/src/main/groovy/com/baeldung/CalcMath.groovy similarity index 76% rename from java-groovy-joint/src/main/groovy/com.baeldung/CalcMath.groovy rename to java-groovy-joint/src/main/groovy/com/baeldung/CalcMath.groovy index d9709653c7..0e233793b2 100644 --- a/java-groovy-joint/src/main/groovy/com.baeldung/CalcMath.groovy +++ b/java-groovy-joint/src/main/groovy/com/baeldung/CalcMath.groovy @@ -10,6 +10,12 @@ class CalcMath { x + y } + /** + * example of method that in java would throw error at compile time + * @param x + * @param y + * @return + */ def calcSum2(x, y) { log.info "Executing $x + $y" // DANGER! This won't throw a compilation issue and fail only at runtime!!! diff --git a/java-groovy-joint/src/main/groovy/com/baeldung/CalcScript.groovy b/java-groovy-joint/src/main/groovy/com/baeldung/CalcScript.groovy new file mode 100644 index 0000000000..688928468a --- /dev/null +++ b/java-groovy-joint/src/main/groovy/com/baeldung/CalcScript.groovy @@ -0,0 +1,10 @@ +package com.baeldung + +def calcSum(x, y) { + x + y +} + +def calcSum2(x, y) { + // DANGER! This won't throw a compilation issue and fail only at runtime!!! + calcSum3() +} diff --git a/java-groovy-joint/src/main/java/com/baeldung/App.java b/java-groovy-joint/src/main/java/com/baeldung/App.java index 0a201d12e2..7cfeba2024 100644 --- a/java-groovy-joint/src/main/java/com/baeldung/App.java +++ b/java-groovy-joint/src/main/java/com/baeldung/App.java @@ -1,12 +1,20 @@ package com.baeldung; -import groovy.lang.Binding; -import groovy.lang.GroovyClassLoader; -import groovy.lang.GroovyShell; +import groovy.lang.*; +import groovy.util.GroovyScriptEngine; +import groovy.util.ResourceException; +import groovy.util.ScriptException; import org.codehaus.groovy.control.CompilerConfiguration; +import org.codehaus.groovy.jsr223.GroovyScriptEngineFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.script.Compilable; +import javax.script.ScriptEngine; +import java.io.File; +import java.io.IOException; +import java.net.URL; + /** * Hello world! * @@ -15,40 +23,84 @@ public class App { private final static Logger LOG = LoggerFactory.getLogger(App.class); private final GroovyClassLoader loader; private final GroovyShell shell; + private final GroovyScriptEngine engine; - private App() { + private App() throws IOException { loader = new GroovyClassLoader(this.getClass().getClassLoader()); CompilerConfiguration config = new CompilerConfiguration(); config.setScriptBaseClass("com.baeldung.CalcScript"); shell = new GroovyShell(loader, new Binding(), config); + engine = new GroovyScriptEngine(new URL[] { new File("src/main/groovy/com/baeldung/").toURI().toURL() }, this.getClass().getClassLoader()); } - private void runScript(int x, int y) { - Object script = shell.parse(String.format("calcSum(%d,%d)", x, y)); + private void runCompiledClasses(int x, int y) { + Object result1 = new CalcScript().calcSum(x, y); + LOG.info("Result of calcSum() method is {}", result1); + + Object result2 = new CalcMath().calcSum(x, y); + LOG.info("Result of calcSum() method is {}", result2); + } + + private void runShellScript(int x, int y) { + Script script = shell.parse(String.format("calcSum(%d,%d)", x, y)); assert script instanceof CalcScript; - Object result = ((CalcScript) script).run(); + Object result = script.run(); LOG.info("Result of run() method is {}", result); Object script2 = shell.parse("CalcScript"); + assert script2 instanceof CalcScript; Object result2 = ((CalcScript) script2).calcSum(x + 7, y + 7); LOG.info("Result of calcSum() method is {}", result2); + Script script3 = shell.parse(""); + assert script3 instanceof CalcScript; + Object result3 = script3.invokeMethod("calcSum", new Object[] { x + 14, y + 14 }); + LOG.info("Result of run() method is {}", result3); + } - private void runClass(int x, int y) throws ClassNotFoundException, IllegalAccessException, InstantiationException { + private void runClassWithLoader(int x, int y) throws ClassNotFoundException, IllegalAccessException, InstantiationException { Class calcClass = loader.loadClass("com.baeldung.CalcMath"); Object calc = calcClass.newInstance(); assert calc instanceof CalcMath; Object result = ((CalcMath) calc).calcSum(x, y); LOG.info("Result is {}", result); + + Object result2 = ((GroovyObject) calc).invokeMethod("calcSum", new Object[] { x + 14, y + 14 }); + LOG.info("Result is {}", result2); + } - public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException { + private void runClassWithEngine(int x, int y) throws ClassNotFoundException, IllegalAccessException, InstantiationException, ResourceException, ScriptException { + + Class calcClass = engine.loadScriptByName("CalcMath.groovy"); + GroovyObject calc = calcClass.newInstance(); + Object result = calc.invokeMethod("calcSum", new Object[] { x, y }); + //WARNING the following will throw a ClassCastException + //((CalcMath)calc).calcSum(1,2); + LOG.info("Result is {}", result); + } + + private void runClassWithEngineFactory(int x, int y) throws ClassNotFoundException, IllegalAccessException, InstantiationException, ResourceException, ScriptException, javax.script.ScriptException { + ScriptEngine engine = new GroovyScriptEngineFactory().getScriptEngine(); + Class calcClass = (Class) ((Compilable) engine).compile("com.baeldung.CalcMath").eval(); + Object calc = calcClass.newInstance(); + Object result = ((CalcMath) calc).calcSum(1, 20); + LOG.info("Result is {}", result); + } + + public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, ResourceException, ScriptException, IOException, javax.script.ScriptException { App app = new App(); + LOG.info("Running an already compiled groovy class instance..."); + app.runCompiledClasses(5, 10); LOG.info("Running a groovy script..."); - app.runScript(5, 10); + app.runShellScript(5, 10); LOG.info("Running a groovy class..."); - app.runClass(1, 3); + app.runClassWithLoader(1, 3); + LOG.info("Running a groovy class using the engine..."); + app.runClassWithEngine(10, 30); + LOG.info("Running a groovy class using the engine factory..."); + app.runClassWithEngineFactory(10, 30); } } From b9999c1af1ae2cce154d765ad74d5153cf274e07 Mon Sep 17 00:00:00 2001 From: Gian Mario Contessa Date: Mon, 27 May 2019 11:25:19 +0100 Subject: [PATCH 3/4] BAEL-2899: separating static and dynamic classes examples --- .../src/main/java/com/baeldung/App.java | 97 +++++++++---------- 1 file changed, 45 insertions(+), 52 deletions(-) diff --git a/java-groovy-joint/src/main/java/com/baeldung/App.java b/java-groovy-joint/src/main/java/com/baeldung/App.java index 7cfeba2024..7e24ec2c16 100644 --- a/java-groovy-joint/src/main/java/com/baeldung/App.java +++ b/java-groovy-joint/src/main/java/com/baeldung/App.java @@ -4,14 +4,14 @@ import groovy.lang.*; import groovy.util.GroovyScriptEngine; import groovy.util.ResourceException; import groovy.util.ScriptException; -import org.codehaus.groovy.control.CompilerConfiguration; import org.codehaus.groovy.jsr223.GroovyScriptEngineFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.script.Compilable; import javax.script.ScriptEngine; import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; import java.io.IOException; import java.net.URL; @@ -24,83 +24,76 @@ public class App { private final GroovyClassLoader loader; private final GroovyShell shell; private final GroovyScriptEngine engine; + private final ScriptEngine engineFromFactory; private App() throws IOException { loader = new GroovyClassLoader(this.getClass().getClassLoader()); - CompilerConfiguration config = new CompilerConfiguration(); - config.setScriptBaseClass("com.baeldung.CalcScript"); - shell = new GroovyShell(loader, new Binding(), config); + shell = new GroovyShell(loader, new Binding()); engine = new GroovyScriptEngine(new URL[] { new File("src/main/groovy/com/baeldung/").toURI().toURL() }, this.getClass().getClassLoader()); + engineFromFactory = new GroovyScriptEngineFactory().getScriptEngine(); + } private void runCompiledClasses(int x, int y) { + LOG.info("Executing {} + {}", x, y); Object result1 = new CalcScript().calcSum(x, y); - LOG.info("Result of calcSum() method is {}", result1); + LOG.info("Result of CalcScript.calcSum() method is {}", result1); Object result2 = new CalcMath().calcSum(x, y); - LOG.info("Result of calcSum() method is {}", result2); + LOG.info("Result of CalcMath.calcSum() method is {}", result2); } - private void runShellScript(int x, int y) { - Script script = shell.parse(String.format("calcSum(%d,%d)", x, y)); - assert script instanceof CalcScript; - Object result = script.run(); - LOG.info("Result of run() method is {}", result); - - Object script2 = shell.parse("CalcScript"); - assert script2 instanceof CalcScript; - Object result2 = ((CalcScript) script2).calcSum(x + 7, y + 7); - LOG.info("Result of calcSum() method is {}", result2); - - Script script3 = shell.parse(""); - assert script3 instanceof CalcScript; - Object result3 = script3.invokeMethod("calcSum", new Object[] { x + 14, y + 14 }); - LOG.info("Result of run() method is {}", result3); - + private void runDynamicShellScript(int x, int y) throws IOException { + Script script = shell.parse(new File("src/main/groovy/com/baeldung/", "CalcScript.groovy")); + LOG.info("Executing {} + {}", x, y); + Object result = script.invokeMethod("calcSum", new Object[] { x, y }); + LOG.info("Result of CalcScript.calcSum() method is {}", result); } - private void runClassWithLoader(int x, int y) throws ClassNotFoundException, IllegalAccessException, InstantiationException { - Class calcClass = loader.loadClass("com.baeldung.CalcMath"); + private void runDynamicClassWithLoader(int x, int y) throws IllegalAccessException, InstantiationException, IOException { + Class calcClass = loader.parseClass(new File("src/main/groovy/com/baeldung/", "CalcMath.groovy")); Object calc = calcClass.newInstance(); - assert calc instanceof CalcMath; - - Object result = ((CalcMath) calc).calcSum(x, y); - LOG.info("Result is {}", result); - - Object result2 = ((GroovyObject) calc).invokeMethod("calcSum", new Object[] { x + 14, y + 14 }); - LOG.info("Result is {}", result2); - + Object result = ((GroovyObject) calc).invokeMethod("calcSum", new Object[] { x + 14, y + 14 }); + LOG.info("Result of CalcMath.calcSum() method is {}", result); } - private void runClassWithEngine(int x, int y) throws ClassNotFoundException, IllegalAccessException, InstantiationException, ResourceException, ScriptException { + private void runDynamicClassWithEngine(int x, int y) throws IllegalAccessException, InstantiationException, ResourceException, ScriptException { Class calcClass = engine.loadScriptByName("CalcMath.groovy"); GroovyObject calc = calcClass.newInstance(); - Object result = calc.invokeMethod("calcSum", new Object[] { x, y }); //WARNING the following will throw a ClassCastException //((CalcMath)calc).calcSum(1,2); - LOG.info("Result is {}", result); + Object result = calc.invokeMethod("calcSum", new Object[] { x, y }); + LOG.info("Result of CalcMath.calcSum() method is {}", result); } - private void runClassWithEngineFactory(int x, int y) throws ClassNotFoundException, IllegalAccessException, InstantiationException, ResourceException, ScriptException, javax.script.ScriptException { - ScriptEngine engine = new GroovyScriptEngineFactory().getScriptEngine(); - Class calcClass = (Class) ((Compilable) engine).compile("com.baeldung.CalcMath").eval(); - Object calc = calcClass.newInstance(); - Object result = ((CalcMath) calc).calcSum(1, 20); - LOG.info("Result is {}", result); + private void runDynamicClassWithEngineFactory(int x, int y) throws IllegalAccessException, InstantiationException, javax.script.ScriptException, FileNotFoundException { + Class calcClas = (Class) engineFromFactory.eval(new FileReader(new File("src/main/groovy/com/baeldung/", "CalcMath.groovy"))); + GroovyObject calc = (GroovyObject) calcClas.newInstance(); + Object result = calc.invokeMethod("calcSum", new Object[] { x, y }); + LOG.info("Result of CalcMath.calcSum() method is {}", result); + } + + private void runStaticCompiledClasses() { + LOG.info("Running the Groovy classes compiled statically..."); + runCompiledClasses(5, 10); + + } + + private void runDynamicCompiledClasses() throws IOException, IllegalAccessException, InstantiationException, ClassNotFoundException, ResourceException, ScriptException, javax.script.ScriptException { + LOG.info("Running a dynamic groovy script..."); + runDynamicShellScript(5, 10); + LOG.info("Running a dynamic groovy class with GroovyClassLoader..."); + runDynamicClassWithLoader(10, 30); + LOG.info("Running a dynamic groovy class with GroovyScriptEngine..."); + runDynamicClassWithEngine(15, 0); + LOG.info("Running a dynamic groovy class with GroovyScriptEngine JSR223..."); + runDynamicClassWithEngineFactory(5, 6); } public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, ResourceException, ScriptException, IOException, javax.script.ScriptException { App app = new App(); - LOG.info("Running an already compiled groovy class instance..."); - app.runCompiledClasses(5, 10); - LOG.info("Running a groovy script..."); - app.runShellScript(5, 10); - LOG.info("Running a groovy class..."); - app.runClassWithLoader(1, 3); - LOG.info("Running a groovy class using the engine..."); - app.runClassWithEngine(10, 30); - LOG.info("Running a groovy class using the engine factory..."); - app.runClassWithEngineFactory(10, 30); + app.runStaticCompiledClasses(); + app.runDynamicCompiledClasses(); } } From 224ceb98d5f99f3c445647d65c7d2d864838e6c8 Mon Sep 17 00:00:00 2001 From: Gian Mario Contessa Date: Mon, 27 May 2019 12:33:09 +0100 Subject: [PATCH 4/4] BAEL-2899: formatting --- .../src/main/java/com/baeldung/App.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/java-groovy-joint/src/main/java/com/baeldung/App.java b/java-groovy-joint/src/main/java/com/baeldung/App.java index 7e24ec2c16..c964d1c7cd 100644 --- a/java-groovy-joint/src/main/java/com/baeldung/App.java +++ b/java-groovy-joint/src/main/java/com/baeldung/App.java @@ -29,9 +29,10 @@ public class App { private App() throws IOException { loader = new GroovyClassLoader(this.getClass().getClassLoader()); shell = new GroovyShell(loader, new Binding()); - engine = new GroovyScriptEngine(new URL[] { new File("src/main/groovy/com/baeldung/").toURI().toURL() }, this.getClass().getClassLoader()); + engine = new GroovyScriptEngine(new URL[] { + new File("src/main/groovy/com/baeldung/").toURI().toURL() + }, this.getClass().getClassLoader()); engineFromFactory = new GroovyScriptEngineFactory().getScriptEngine(); - } private void runCompiledClasses(int x, int y) { @@ -51,9 +52,10 @@ public class App { } private void runDynamicClassWithLoader(int x, int y) throws IllegalAccessException, InstantiationException, IOException { - Class calcClass = loader.parseClass(new File("src/main/groovy/com/baeldung/", "CalcMath.groovy")); - Object calc = calcClass.newInstance(); - Object result = ((GroovyObject) calc).invokeMethod("calcSum", new Object[] { x + 14, y + 14 }); + Class calcClass = loader.parseClass( + new File("src/main/groovy/com/baeldung/", "CalcMath.groovy")); + GroovyObject calc = (GroovyObject) calcClass.newInstance(); + Object result = calc.invokeMethod("calcSum", new Object[] { x + 14, y + 14 }); LOG.info("Result of CalcMath.calcSum() method is {}", result); } @@ -68,7 +70,8 @@ public class App { } private void runDynamicClassWithEngineFactory(int x, int y) throws IllegalAccessException, InstantiationException, javax.script.ScriptException, FileNotFoundException { - Class calcClas = (Class) engineFromFactory.eval(new FileReader(new File("src/main/groovy/com/baeldung/", "CalcMath.groovy"))); + Class calcClas = (Class) engineFromFactory.eval( + new FileReader(new File("src/main/groovy/com/baeldung/", "CalcMath.groovy"))); GroovyObject calc = (GroovyObject) calcClas.newInstance(); Object result = calc.invokeMethod("calcSum", new Object[] { x, y }); LOG.info("Result of CalcMath.calcSum() method is {}", result);