Search in sources :

Example 1 with JavaSourceCompilerImpl

use of org.abstractmeta.toolbox.compilation.compiler.impl.JavaSourceCompilerImpl in project Denizen-For-Bukkit by DenizenScript.

the class RuntimeCompiler method loader.

@SuppressWarnings("unchecked")
public void loader() {
    dB.log("Loading external dependencies for run-time compiler.");
    dependencies = new ArrayList<String>();
    try {
        File file = new File(denizen.getDataFolder() + File.separator + "externals" + File.separator + "dependencies");
        for (File f : file.listFiles(jarFilter)) {
            dependencies.add(f.getPath());
            dB.log("Loaded  " + f.getName());
        }
    } catch (Exception error) {
        dB.log("No dependencies to load or error loading dependencies: " + error.getMessage());
    }
    dB.log("Loading plugins as dependencies for run-time compiler.");
    for (File f : pluginsFolder.listFiles(jarFilter)) {
        dependencies.add(f.getPath());
        dB.log("Loaded  " + f.getName());
    }
    dB.log("Attempting to add CraftBukkit as dependency for run-time compiler.");
    try {
        File file = new File(".");
        for (File f : file.listFiles(jarFilter)) {
            dependencies.add(f.getPath());
            dB.log("Loaded  " + f.getName());
        }
    } catch (Exception error) {
        dB.log("Could not find CraftBukkit jar or error reading it: " + error.getMessage());
    }
    if (!externalsFolder.exists() || externalsFolder.list().length == 0) {
        return;
    }
    try {
        File file = new File(denizen.getDataFolder() + File.separator + "externals");
        File[] files = file.listFiles(javaFilter);
        if (files != null && files.length > 0) {
            for (File f : files) {
                String fileName = f.getName();
                dB.log("Processing '" + fileName + "'... ");
                JavaSourceCompiler javaSourceCompiler = new JavaSourceCompilerImpl();
                JavaSourceCompiler.CompilationUnit compilationUnit = javaSourceCompiler.createCompilationUnit();
                if (!dependencies.isEmpty()) {
                    compilationUnit.addClassPathEntries(dependencies);
                }
                try {
                    compilationUnit.addJavaSource(fileName.replace(".java", ""), readFile(f.getAbsolutePath()));
                    ClassLoader classLoader = javaSourceCompiler.compile(compilationUnit);
                    Class<dExternal> load = (Class<dExternal>) classLoader.loadClass(fileName.replace(".java", ""));
                    dExternal loadedClass = load.newInstance();
                    loadedClass.load();
                    loadedExternals.add(loadedClass);
                } catch (Exception e) {
                    if (e instanceof IllegalStateException) {
                        dB.echoError("No JDK found! External .java files will not be loaded.");
                        dB.echoError(e);
                    } else {
                        dB.echoError(ChatColor.RED + "Error compiling " + fileName + "!");
                        dB.echoError(e);
                    }
                }
            }
            dB.echoApproval("All externals loaded!");
        }
    } catch (Exception error) {
        dB.echoError(error);
    }
}
Also used : net.aufdemrand.denizencore.interfaces.dExternal(net.aufdemrand.denizencore.interfaces.dExternal) JavaSourceCompiler(org.abstractmeta.toolbox.compilation.compiler.JavaSourceCompiler) JavaSourceCompilerImpl(org.abstractmeta.toolbox.compilation.compiler.impl.JavaSourceCompilerImpl)

Example 2 with JavaSourceCompilerImpl

use of org.abstractmeta.toolbox.compilation.compiler.impl.JavaSourceCompilerImpl in project Denizen-For-Bukkit by DenizenScript.

the class RuntimeCompiler method runString.

public void runString(String input) {
    try {
        i++;
        JavaSourceCompiler javaSourceCompiler = new JavaSourceCompilerImpl();
        JavaSourceCompiler.CompilationUnit compilationUnit = javaSourceCompiler.createCompilationUnit();
        if (!dependencies.isEmpty()) {
            compilationUnit.addClassPathEntries(dependencies);
        }
        String complete = "import net.aufdemrand.denizen.utilities.debugging.dB;\npublic class CodeTester" + i + " extends net.aufdemrand.denizen.utilities.dExternalRunnable {\n" + "public void unload() {}\npublic void load() {}\n" + "public void run() {\n" + input + "\n}\n}";
        compilationUnit.addJavaSource("CodeTester" + i, complete);
        ClassLoader classLoader = javaSourceCompiler.compile(compilationUnit);
        Class<? extends dExternalRunnable> load = (Class<? extends dExternalRunnable>) classLoader.loadClass("CodeTester" + i);
        dExternalRunnable loadedClass = load.newInstance();
        loadedClass.load();
        loadedClass.run();
        loadedClass.unload();
    } catch (Exception e) {
        dB.echoError(e);
    }
}
Also used : JavaSourceCompiler(org.abstractmeta.toolbox.compilation.compiler.JavaSourceCompiler) JavaSourceCompilerImpl(org.abstractmeta.toolbox.compilation.compiler.impl.JavaSourceCompilerImpl)

Aggregations

JavaSourceCompiler (org.abstractmeta.toolbox.compilation.compiler.JavaSourceCompiler)2 JavaSourceCompilerImpl (org.abstractmeta.toolbox.compilation.compiler.impl.JavaSourceCompilerImpl)2 net.aufdemrand.denizencore.interfaces.dExternal (net.aufdemrand.denizencore.interfaces.dExternal)1