use of org.drools.compiler.commons.jci.compilers.CompilationResult in project drools by kiegroup.
the class JavaParserCompiler method compileAll.
public static Map<String, Class<?>> compileAll(KnowledgeBuilderImpl kbuilder, ClassLoader classLoader, List<GeneratedClassWithPackage> classes) {
if (classes == null || classes.isEmpty()) {
return Collections.emptyMap();
}
MemoryFileSystem srcMfs = new MemoryFileSystem();
MemoryFileSystem trgMfs = new MemoryFileSystem();
String[] resources = writeModel(classes, srcMfs);
CompilationResult resultCompilation = getCompiler().compile(resources, srcMfs, trgMfs, classLoader);
CompilationProblem[] errors = resultCompilation.getErrors();
if (errors.length != 0) {
classes.forEach(c -> logger.error(c.toString()));
for (CompilationProblem error : errors) {
kbuilder.addBuilderResult(new CompilationProblemErrorResult(error));
}
return Collections.emptyMap();
}
InternalClassLoader internalClassLoader = new InternalClassLoader(classLoader, trgMfs);
Map<String, Class<?>> result = new HashMap<>();
for (GeneratedClassWithPackage cls : classes) {
final String fullClassName = cls.getPackageName() + "." + cls.getGeneratedClass().getNameAsString();
try {
result.put(fullClassName, Class.forName(fullClassName, true, internalClassLoader));
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
return result;
}
use of org.drools.compiler.commons.jci.compilers.CompilationResult in project drools by kiegroup.
the class AbstractKnowledgeTest method compile.
public List<String> compile(KieModuleModel kproj, MemoryFileSystem srcMfs, MemoryFileSystem trgMfs, List<String> classes) {
for (KieBaseModel kbase : kproj.getKieBaseModels().values()) {
Folder srcFolder = srcMfs.getFolder("src/main/resources/" + kbase.getName());
Folder trgFolder = trgMfs.getFolder(kbase.getName());
copyFolder(srcMfs, srcFolder, trgMfs, trgFolder, kproj);
}
Folder srcFolder = srcMfs.getFolder("META-INF");
Folder trgFolder = trgMfs.getFolder("META-INF");
trgFolder.create();
copyFolder(srcMfs, srcFolder, trgMfs, trgFolder, kproj);
EclipseJavaCompilerSettings settings = new EclipseJavaCompilerSettings();
settings.setSourceVersion("1.5");
settings.setTargetVersion("1.5");
EclipseJavaCompiler compiler = new EclipseJavaCompiler(settings, "");
CompilationResult res = compiler.compile(classes.toArray(new String[classes.size()]), trgMfs, trgMfs);
if (res.getErrors().length > 0) {
fail(res.getErrors()[0].getMessage());
}
List<String> classes2 = new ArrayList<String>(classes.size());
for (String str : classes) {
classes2.add(filenameToClassname(str));
}
return classes2;
}
Aggregations