Skip to content

Commit 80424eb

Browse files
Improved ScriptEngine handling
1 parent 6a8aee4 commit 80424eb

File tree

1 file changed

+10
-1
lines changed
  • typescript-generator-core/src/main/java/cz/habarta/typescript/generator/compiler

1 file changed

+10
-1
lines changed

typescript-generator-core/src/main/java/cz/habarta/typescript/generator/compiler/SymbolTable.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import java.util.*;
77
import javax.script.Invocable;
88
import javax.script.ScriptEngine;
9+
import javax.script.ScriptEngineFactory;
910
import javax.script.ScriptEngineManager;
1011
import javax.script.ScriptException;
1112

@@ -162,8 +163,16 @@ private static boolean isUndefined(Object variable) {
162163

163164
private CustomTypeNamingFunction getCustomTypeNamingFunction() throws ScriptException {
164165
if (customTypeNamingFunction == null) {
166+
final String engineMimeType = "application/javascript";
165167
final ScriptEngineManager manager = new ScriptEngineManager();
166-
final ScriptEngine engine = manager.getEngineByName("javascript");
168+
final ScriptEngine engine = manager.getEngineByMimeType(engineMimeType);
169+
if (engine == null) {
170+
System.out.println(String.format("Error: Script engine for '%s' MIME type not found. Available engines: %s", engineMimeType, manager.getEngineFactories().size()));
171+
for (ScriptEngineFactory factory : manager.getEngineFactories()) {
172+
System.out.println(String.format(" %s %s - MIME types: %s", factory.getEngineName(), factory.getEngineVersion(), factory.getMimeTypes()));
173+
}
174+
throw new RuntimeException("Cannot evaluate function specified using 'customTypeNamingFunction' parameter. See log for details.");
175+
}
167176
engine.eval("var getName = " + settings.customTypeNamingFunction);
168177
final Invocable invocable = (Invocable) engine;
169178
customTypeNamingFunction = invocable.getInterface(CustomTypeNamingFunction.class);

0 commit comments

Comments
 (0)