use of org.kie.workbench.common.services.backend.compiler.nio.impl.ClassLoaderProviderImpl in project kie-wb-common by kiegroup.
the class KieClassLoaderProviderTest method loadProjectClassloaderFromStringTest.
@Test
public void loadProjectClassloaderFromStringTest() throws Exception {
// we use NIO for this part of the test because Uberfire lack the implementation to copy a tree
Path tmpRoot = Files.createTempDirectory("repo");
Path tmp = Files.createDirectories(Paths.get(tmpRoot.toString(), "dummy"));
TestUtil.copyTree(Paths.get("src/test/projects/dummy_kie_multimodule_classloader"), tmp);
AFCompiler compiler = KieMavenCompilerFactory.getCompiler(KieDecorator.NONE);
Path uberfireTmp = Paths.get(tmp.toAbsolutePath().toString());
WorkspaceCompilationInfo info = new WorkspaceCompilationInfo(uberfireTmp);
CompilationRequest req = new DefaultCompilationRequest(mavenRepo.toAbsolutePath().toString(), info, new String[] { MavenCLIArgs.CLEAN, MavenCLIArgs.COMPILE, MavenCLIArgs.INSTALL }, new HashMap<>(), Boolean.FALSE);
CompilationResponse res = compiler.compileSync(req);
if (res.getMavenOutput().isPresent() && !res.isSuccessful()) {
TestUtil.writeMavenOutputIntoTargetFolder(res.getMavenOutput().get(), "KieClassLoaderProviderTest.loadProjectClassloaderFromStringTest");
}
assertTrue(res.isSuccessful());
AFClassLoaderProvider kieClazzLoaderProvider = new ClassLoaderProviderImpl();
Optional<ClassLoader> clazzLoader = kieClazzLoaderProvider.loadDependenciesClassloaderFromProject(uberfireTmp.toAbsolutePath().toString(), mavenRepo.toAbsolutePath().toString());
assertNotNull(clazzLoader);
assertTrue(clazzLoader.isPresent());
ClassLoader prjClassloader = clazzLoader.get();
// we try to load the only dep in the prj with a simple call method to see if is loaded or not
Class clazz;
try {
clazz = prjClassloader.loadClass("org.slf4j.LoggerFactory");
assertFalse(clazz.isInterface());
Method m = clazz.getMethod("getLogger", String.class);
Logger logger = (Logger) m.invoke(clazz, "Dummy");
assertTrue(logger.getName().equals("Dummy"));
logger.info("dependency loaded from the prj classpath");
} catch (ClassNotFoundException e) {
fail();
}
TestUtil.rm(tmpRoot.toFile());
}
Aggregations