Skip to content

Commit 760865f

Browse files
authored
refactor: remove ExecutorService dependency from script compilation and initialization logic (#2517)
1 parent fff2a95 commit 760865f

8 files changed

Lines changed: 19 additions & 20 deletions

File tree

core/src/main/java/com/predic8/membrane/core/interceptor/groovy/GroovyInterceptor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public EnumSet<Flow> getAppliedFlow() {
5656
@Override
5757
protected void initInternal() {
5858
try {
59-
script = new GroovyLanguageSupport().compileScript(router.getBackgroundInitializer(), null, src);
59+
script = new GroovyLanguageSupport().compileScript(null, src);
6060
} catch (MultipleCompilationErrorsException e) {
6161
logGroovyError(e);
6262
throw new ConfigurationException("Error in Groovy script initialization.",e);

core/src/main/java/com/predic8/membrane/core/interceptor/javascript/LanguageAdapter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public static LanguageAdapter instance(Router router) {
9191
}
9292

9393
public Function<Map<String, Object>, Object> compileScript(String script) {
94-
return languageSupport.compileScript(router.getBackgroundInitializer(), getClassLoader(), prepareScript(script));
94+
return languageSupport.compileScript(getClassLoader(), prepareScript(script));
9595
}
9696

9797
private @Nullable ClassLoader getClassLoader() {

core/src/main/java/com/predic8/membrane/core/lang/LanguageSupport.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,10 @@
1515
package com.predic8.membrane.core.lang;
1616

1717
import java.util.*;
18-
import java.util.concurrent.*;
1918
import java.util.function.*;
2019

2120
public interface LanguageSupport {
2221

23-
Function<Map<String, Object>, Object> compileScript(ExecutorService executorService, ClassLoader classLoader, String script);
22+
Function<Map<String, Object>, Object> compileScript(ClassLoader classLoader, String script);
2423

2524
}

core/src/main/java/com/predic8/membrane/core/lang/ScriptExecutorPool.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ public abstract class ScriptExecutorPool<T, R> implements Function<Map<String, O
2626
private static final int concurrency = Runtime.getRuntime().availableProcessors() * 2;
2727
final ArrayBlockingQueue<T> scripts = new ArrayBlockingQueue<>(concurrency);
2828

29-
public void init(ExecutorService executorService) {
29+
public void init() {
3030
scripts.add(createOneScript());
31-
executorService.execute(() -> {
31+
Thread.ofVirtual().start(() -> {
3232
try {
3333
for (int i = 1; i < concurrency; i++)
3434
scripts.add(createOneScript());

core/src/main/java/com/predic8/membrane/core/lang/groovy/GroovyExchangeExpression.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public GroovyExchangeExpression(Interceptor interceptor, String source) {
3939
super(source);
4040
this.router = interceptor.getRouter();
4141
try {
42-
script = new GroovyLanguageSupport().compileScript(router.getBackgroundInitializer(), null, source);
42+
script = new GroovyLanguageSupport().compileScript( null, source);
4343
} catch (MultipleCompilationErrorsException e) {
4444
throw new ConfigurationException("Cannot compile Groovy Script.",e);
4545
}

core/src/main/java/com/predic8/membrane/core/lang/groovy/GroovyLanguageSupport.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ private abstract static class GroovyScriptExecutorPool<R> extends
2727
ScriptExecutorPool<Script, R> {
2828
private final String groovyCode;
2929

30-
private GroovyScriptExecutorPool(ExecutorService executorService, String expression) {
30+
private GroovyScriptExecutorPool(String expression) {
3131
this.groovyCode = expression;
32-
init(executorService);
32+
init();
3333
}
3434

3535
@Override
@@ -56,8 +56,8 @@ private static Binding getBinding(Map<String, Object> parameters) {
5656
private static final GroovyShell shell = new GroovyShell();
5757

5858
@Override
59-
public Function<Map<String, Object>, Object> compileScript(ExecutorService executorService, ClassLoader classLoader, String script) {
60-
return new GroovyScriptExecutorPool<>(executorService, addImports(script)) {
59+
public Function<Map<String, Object>, Object> compileScript(ClassLoader classLoader, String script) {
60+
return new GroovyScriptExecutorPool<>(addImports(script)) {
6161
@Override
6262
public Object apply(Map<String, Object> parameters) {
6363
return this.execute(parameters);

core/src/main/java/com/predic8/membrane/core/lang/javascript/GraalVMJavascriptSupport.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@ private abstract static class GraalVMJavascriptExecutorPool<R> extends ScriptExe
3838

3939
private final String javascriptCode;
4040

41-
private GraalVMJavascriptExecutorPool(ExecutorService executorService, String expression) {
41+
private GraalVMJavascriptExecutorPool(String expression) {
4242
this.javascriptCode = expression;
43-
init(executorService);
43+
init();
4444
}
4545

4646
@Override
@@ -79,11 +79,11 @@ protected Source createOneScript() {
7979
}
8080

8181
@Override
82-
public Function<Map<String, Object>, Object> compileScript(ExecutorService executorService, ClassLoader cl, String script) {
83-
return new GraalVMJavascriptSupport.GraalVMJavascriptExecutorPool<>(executorService, script) {
82+
public Function<Map<String, Object>, Object> compileScript(ClassLoader cl, String script) {
83+
return new GraalVMJavascriptSupport.GraalVMJavascriptExecutorPool<>(script) {
8484
@Override
8585
public Object apply(Map<String, Object> parameters) {
86-
return this.execute(parameters);
86+
return execute(parameters);
8787
}
8888
};
8989
}

core/src/main/java/com/predic8/membrane/core/lang/javascript/RhinoJavascriptLanguageSupport.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,14 @@ private abstract static class JavascriptScriptExecutorPool<R> extends ScriptExec
3535
protected final ScriptEngineManager sce;
3636
protected final static String javascriptEngineName = "rhino";
3737

38-
private JavascriptScriptExecutorPool(ExecutorService executorService, ClassLoader classLoader, String expression) {
38+
private JavascriptScriptExecutorPool(ClassLoader classLoader, String expression) {
3939
this.javascriptCode = expression;
4040

4141
// The ScriptEngineManager should search the engine in the classloader of the router
4242
// otherwise the engine will not be found
4343
sce = new ScriptEngineManager(classLoader);
4444

45-
init(executorService);
45+
init();
4646
}
4747

4848
@Override
@@ -67,8 +67,8 @@ protected ScriptEngine createOneScript() {
6767
}
6868

6969
@Override
70-
public Function<Map<String, Object>, Object> compileScript(ExecutorService executorService, ClassLoader classLoader, String script) {
71-
return new JavascriptScriptExecutorPool<>(executorService, classLoader, script) {
70+
public Function<Map<String, Object>, Object> compileScript(ClassLoader classLoader, String script) {
71+
return new JavascriptScriptExecutorPool<>(classLoader, script) {
7272
@Override
7373
public Object apply(Map<String, Object> parameters) {
7474
return this.execute(parameters);

0 commit comments

Comments
 (0)