/*
|
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
|
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
|
*/
|
package com.megatim.dynamicjsonparser.extender;
|
|
import org.burningwave.core.assembler.ComponentContainer;
|
import static org.burningwave.core.assembler.StaticComponentContainer.ClassLoaders;
|
import org.burningwave.core.classes.JavaMemoryCompiler;
|
import org.burningwave.core.classes.JavaMemoryCompiler.Compilation;
|
import org.burningwave.core.classes.UnitSourceGenerator;
|
import org.burningwave.core.concurrent.QueuedTaskExecutor.ProducerTask;
|
|
/**
|
*
|
* @author ASUS
|
*/
|
public class SourceCompiler {
|
|
public static Class<?> compileAndLoad(UnitSourceGenerator unitSG, String binaryFilePath, String fullQualifiedName) throws ClassNotFoundException {
|
ComponentContainer componentContainer = ComponentContainer.getInstance();
|
JavaMemoryCompiler javaMemoryCompiler = componentContainer.getJavaMemoryCompiler();
|
|
ProducerTask<Compilation.Result> compilationTask = javaMemoryCompiler.compile(
|
Compilation.Config.forUnitSourceGenerator(unitSG).storeCompiledClassesTo(binaryFilePath));
|
Compilation.Result compilationResult = compilationTask.join();
|
|
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
|
ClassLoaders.addClassPaths(classLoader, compilationResult.getDependencies());
|
ClassLoaders.addClassPath(classLoader, compilationResult.getClassPath().getAbsolutePath());
|
|
return classLoader.loadClass(fullQualifiedName);
|
}
|
|
}
|