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

bmarwell pushed a commit to branch support-java-scripting
in repository https://gitbox.apache.org/repos/asf/maven-scripting-plugin.git

commit f99c295e2e56f8ac2b2d80a4f01f78860de576cc
Author: Romain Manni-Bucau <[email protected]>
AuthorDate: Tue Apr 19 21:03:50 2022 +0200

    ensure to not leak resources using java engine
---
 .../maven/plugins/scripting/engine/JavaEngine.java   | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git 
a/src/main/java/org/apache/maven/plugins/scripting/engine/JavaEngine.java 
b/src/main/java/org/apache/maven/plugins/scripting/engine/JavaEngine.java
index e238d51..e9d06af 100644
--- a/src/main/java/org/apache/maven/plugins/scripting/engine/JavaEngine.java
+++ b/src/main/java/org/apache/maven/plugins/scripting/engine/JavaEngine.java
@@ -292,7 +292,12 @@ public class JavaEngine extends AbstractScriptEngine 
implements Compilable, Cont
 
     @Override
     public Object eval(String script, ScriptContext context) throws 
ScriptException {
-        return compile(script).eval(context);
+        final CompiledScript compile = compile(script);
+        try {
+            return compile.eval(context);
+        } finally {
+            doClose(compile);
+        }
     }
 
     @Override
@@ -315,6 +320,19 @@ public class JavaEngine extends AbstractScriptEngine 
implements Compilable, Cont
         return factory;
     }
 
+    private void doClose(final CompiledScript compile) {
+        if (!AutoCloseable.class.isInstance(compile)) {
+            return;
+        }
+        try {
+            AutoCloseable.class.cast(compile).close();
+        } catch (Exception e) {
+            if (log != null) {
+                log.debug(e);
+            }
+        }
+    }
+
     private String load(Reader reader) {
         return new BufferedReader(reader).lines().collect(joining("\n"));
     }

Reply via email to