private String toSource()

in src/main/java/org/apache/maven/plugins/scripting/engine/JavaEngine.java [193:253]


    private String toSource(String pck, String name, String script) {
        final String[] importsAndScript = splitImportsAndScript(script);
        return "package " + pck + ";\n"
                + "\n"
                + "import java.io.*;\n"
                + "import java.net.*;\n"
                + "import java.util.*;\n"
                + "import java.util.stream.*;\n"
                + "import java.nio.file.*;\n"
                + "import org.apache.maven.project.MavenProject;\n"
                + "import org.apache.maven.plugin.logging.Log;\n"
                + "\n"
                + "import javax.script.Bindings;\n"
                + "import javax.script.CompiledScript;\n"
                + "import javax.script.ScriptContext;\n"
                + "import javax.script.ScriptEngine;\n"
                + "import javax.script.ScriptException;\n"
                + "\n"
                + importsAndScript[0] + '\n'
                + "\n"
                + "public class " + name + " extends CompiledScript implements AutoCloseable {\n"
                + "    private final ScriptEngine $engine;\n"
                + "    private final URLClassLoader $loader;\n"
                + "\n"
                + "    public " + name + "( ScriptEngine engine, URLClassLoader loader) {\n"
                + "        this.$engine = engine;\n"
                + "        this.$loader = loader;\n"
                + "    }\n"
                + "\n"
                + "    @Override\n"
                + "    public Object eval( ScriptContext $context) throws ScriptException {\n"
                + "        final Thread $thread = Thread.currentThread();\n"
                + "        final ClassLoader $oldClassLoader = $thread.getContextClassLoader();\n"
                + "        $thread.setContextClassLoader($loader);\n"
                + "        try {\n"
                + "           final Bindings $bindings = $context.getBindings(ScriptContext.GLOBAL_SCOPE);\n"
                + "           final MavenProject $project = MavenProject.class.cast($bindings.get(\"project\"));\n"
                + "           final Log $log = Log.class.cast($bindings.get(\"log\"));\n"
                + "           " + importsAndScript[1] + "\n"
                + "           return null;\n" // assume the script doesn't return anything for now
                + "        } catch ( Exception e) {\n"
                + "            if (RuntimeException.class.isInstance(e)) {\n"
                + "                throw RuntimeException.class.cast(e);\n"
                + "            }\n"
                + "            throw new IllegalStateException(e);\n"
                + "        } finally {\n"
                + "            $thread.setContextClassLoader($oldClassLoader);\n"
                + "        }\n"
                + "    }\n"
                + "\n"
                + "    @Override\n"
                + "    public ScriptEngine getEngine() {\n"
                + "        return $engine;\n"
                + "    }\n"
                + "\n"
                + "    @Override\n"
                + "    public void close() throws Exception {\n"
                + "        $loader.close();\n"
                + "    }\n"
                + "}";
    }