use of org.kie.workbench.common.services.backend.compiler.nio.WorkspaceCompilationInfo in project kie-wb-common by kiegroup.
the class KieMavenOutputTest method testOutputWithTakari.
@Test
public void testOutputWithTakari() throws Exception {
Path tmpRoot = Files.createTempDirectory("repo");
Path tmpNio = Files.createDirectories(Paths.get(tmpRoot.toString(), "dummy"));
TestUtil.copyTree(Paths.get("src/test/projects/dummy"), tmpNio);
Path tmp = Paths.get(tmpNio.toAbsolutePath().toString());
AFCompiler compiler = KieMavenCompilerFactory.getCompiler(KieDecorator.LOG_OUTPUT_AFTER);
WorkspaceCompilationInfo info = new WorkspaceCompilationInfo(tmp);
CompilationRequest req = new DefaultCompilationRequest(mavenRepo.toAbsolutePath().toString(), info, new String[] { MavenCLIArgs.CLEAN, MavenCLIArgs.COMPILE }, new HashMap<>(), Boolean.TRUE);
CompilationResponse res = compiler.compileSync(req);
if (res.getMavenOutput().isPresent() && !res.isSuccessful()) {
TestUtil.writeMavenOutputIntoTargetFolder(res.getMavenOutput().get(), "KieMavenOutputTest.testOutputWithTakari");
}
assertTrue(res.isSuccessful());
assertTrue(res.getMavenOutput().isPresent());
assertTrue(res.getMavenOutput().get().size() > 0);
TestUtil.rm(tmpRoot.toFile());
}
use of org.kie.workbench.common.services.backend.compiler.nio.WorkspaceCompilationInfo in project kie-wb-common by kiegroup.
the class JGITCompilerBeforeDecorator method compileSync.
@Override
public T compileSync(CompilationRequest _req) {
final Path path = _req.getInfo().getPrjPath();
final CompilationRequest req;
Git repo;
if (path.getFileSystem() instanceof JGitFileSystem) {
final JGitFileSystem fs = (JGitFileSystem) path.getFileSystem();
if (!gitMap.containsKey(fs)) {
repo = JGitUtils.tempClone(fs, _req.getRequestUUID());
gitMap.put(fs, repo);
}
repo = gitMap.get(fs);
JGitUtils.applyBefore(repo);
req = new DefaultCompilationRequest(_req.getMavenRepo(), new WorkspaceCompilationInfo(Paths.get(repo.getRepository().getDirectory().toPath().getParent().resolve(path.getFileName().toString()).normalize().toUri())), _req.getOriginalArgs(), _req.getMap(), _req.getLogRequested());
} else {
req = _req;
}
return compiler.compileSync(req);
}
use of org.kie.workbench.common.services.backend.compiler.nio.WorkspaceCompilationInfo 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());
}
use of org.kie.workbench.common.services.backend.compiler.nio.WorkspaceCompilationInfo in project kie-wb-common by kiegroup.
the class KieDefaultMavenCompilerTest method buildWithJGitDecoratorTest.
@Test
public void buildWithJGitDecoratorTest() throws Exception {
AFCompiler compiler = KieMavenCompilerFactory.getCompiler(KieDecorator.JGIT_BEFORE);
String MASTER_BRANCH = "master";
// Setup origin in memory
final URI originRepo = URI.create("git://repo");
final JGitFileSystem origin = (JGitFileSystem) ioService.newFileSystem(originRepo, new HashMap<String, Object>() {
{
put("init", Boolean.TRUE);
put("internal", Boolean.TRUE);
put("listMode", "ALL");
}
});
assertNotNull(origin);
ioService.startBatch(origin);
ioService.write(origin.getPath("/dummy/pom.xml"), new String(java.nio.file.Files.readAllBytes(new File("src/test/projects/dummy_multimodule_untouched/pom.xml").toPath())));
ioService.write(origin.getPath("/dummy/dummyA/src/main/java/dummy/DummyA.java"), new String(java.nio.file.Files.readAllBytes(new File("src/test/projects/dummy_multimodule_untouched/dummyA/src/main/java/dummy/DummyA.java").toPath())));
ioService.write(origin.getPath("/dummy/dummyB/src/main/java/dummy/DummyB.java"), new String(java.nio.file.Files.readAllBytes(new File("src/test/projects/dummy_multimodule_untouched/dummyB/src/main/java/dummy/DummyB.java").toPath())));
ioService.write(origin.getPath("/dummy/dummyA/pom.xml"), new String(java.nio.file.Files.readAllBytes(new File("src/test/projects/dummy_multimodule_untouched/dummyA/pom.xml").toPath())));
ioService.write(origin.getPath("/dummy/dummyB/pom.xml"), new String(java.nio.file.Files.readAllBytes(new File("src/test/projects/dummy_multimodule_untouched/dummyB/pom.xml").toPath())));
ioService.endBatch();
RevCommit lastCommit = origin.getGit().resolveRevCommit(origin.getGit().getRef(MASTER_BRANCH).getObjectId());
assertNotNull(lastCommit);
// @TODO refactor and use only one between the URI or Git
// @TODO find a way to resolve the problem of the prjname inside .git folder
WorkspaceCompilationInfo info = new WorkspaceCompilationInfo(origin.getPath("/dummy/"));
CompilationRequest req = new DefaultCompilationRequest(mavenRepo.toAbsolutePath().toString(), info, new String[] { MavenCLIArgs.CLEAN, MavenCLIArgs.COMPILE }, new HashMap<>(), Boolean.FALSE);
CompilationResponse res = compiler.compileSync(req);
if (res.getMavenOutput().isPresent() && !res.isSuccessful()) {
TestUtil.writeMavenOutputIntoTargetFolder(res.getMavenOutput().get(), "KieDefaultMavenCompilerTest.buildWithJGitDecoratorTest");
}
assertTrue(res.isSuccessful());
lastCommit = origin.getGit().resolveRevCommit(origin.getGit().getRef(MASTER_BRANCH).getObjectId());
;
assertNotNull(lastCommit);
ioService.write(origin.getPath("/dummy/dummyA/src/main/java/dummy/DummyA.java"), new String(java.nio.file.Files.readAllBytes(new File("src/test/projects/DummyA.java").toPath())));
RevCommit commitBefore = origin.getGit().resolveRevCommit(origin.getGit().getRef(MASTER_BRANCH).getObjectId());
assertNotNull(commitBefore);
assertFalse(lastCommit.getId().toString().equals(commitBefore.getId().toString()));
// recompile
res = compiler.compileSync(req);
// assert commits
assertTrue(res.isSuccessful());
}
use of org.kie.workbench.common.services.backend.compiler.nio.WorkspaceCompilationInfo in project kie-wb-common by kiegroup.
the class KieDefaultMavenCompilerTest method buildWithCloneTest.
@Test
public void buildWithCloneTest() throws Exception {
final String repoName = "myrepo";
final JGitFileSystem fs = (JGitFileSystem) ioService.newFileSystem(URI.create("git://" + repoName), new HashMap<String, Object>() {
{
put("init", Boolean.TRUE);
put("internal", Boolean.TRUE);
}
});
ioService.startBatch(fs);
ioService.write(fs.getPath("/dummy/pom.xml"), new String(java.nio.file.Files.readAllBytes(new File("target/test-classes/dummy_multimodule_untouched/pom.xml").toPath())));
ioService.write(fs.getPath("/dummy/dummyA/src/main/java/dummy/DummyA.java"), new String(java.nio.file.Files.readAllBytes(new File("target/test-classes/dummy_multimodule_untouched/dummyA/src/main/java/dummy/DummyA.java").toPath())));
ioService.write(fs.getPath("/dummy/dummyB/src/main/java/dummy/DummyB.java"), new String(java.nio.file.Files.readAllBytes(new File("target/test-classes/dummy_multimodule_untouched/dummyB/src/main/java/dummy/DummyB.java").toPath())));
ioService.write(fs.getPath("/dummy/dummyA/pom.xml"), new String(java.nio.file.Files.readAllBytes(new File("target/test-classes/dummy_multimodule_untouched/dummyA/pom.xml").toPath())));
ioService.write(fs.getPath("/dummy/dummyB/pom.xml"), new String(java.nio.file.Files.readAllBytes(new File("target/test-classes/dummy_multimodule_untouched/dummyB/pom.xml").toPath())));
ioService.endBatch();
Path tmpRootCloned = Files.createTempDirectory("cloned");
Path tmpCloned = Files.createDirectories(Paths.get(tmpRootCloned.toString(), "dummy"));
final File gitClonedFolder = new File(tmpCloned.toFile(), ".clone.git");
final Git cloned = Git.cloneRepository().setURI(fs.getGit().getRepository().getDirectory().toURI().toString()).setBare(false).setDirectory(gitClonedFolder).call();
assertNotNull(cloned);
// Compile the repo
AFCompiler compiler = KieMavenCompilerFactory.getCompiler(KieDecorator.LOG_OUTPUT_AFTER);
Path prjFolder = Paths.get(gitClonedFolder + "/dummy/");
byte[] encoded = Files.readAllBytes(Paths.get(prjFolder + "/pom.xml"));
String pomAsAstring = new String(encoded, StandardCharsets.UTF_8);
Assert.assertFalse(pomAsAstring.contains("<artifactId>takari-lifecycle-plugin</artifactId>"));
WorkspaceCompilationInfo info = new WorkspaceCompilationInfo(prjFolder);
CompilationRequest req = new DefaultCompilationRequest(mavenRepo.toAbsolutePath().toString(), info, new String[] { MavenCLIArgs.COMPILE }, new HashMap<>(), Boolean.TRUE);
CompilationResponse res = compiler.compileSync(req);
if (res.getMavenOutput().isPresent() && !res.isSuccessful()) {
TestUtil.writeMavenOutputIntoTargetFolder(res.getMavenOutput().get(), "KieDefaultMavenCompilerTest.buildWithCloneTest");
}
assertTrue(res.getMavenOutput().isPresent());
assertTrue(res.isSuccessful());
Path incrementalConfiguration = Paths.get(prjFolder + "/target/incremental/io.takari.maven.plugins_takari-lifecycle-plugin_compile_compile");
assertTrue(incrementalConfiguration.toFile().exists());
encoded = Files.readAllBytes(Paths.get(prjFolder + "/pom.xml"));
pomAsAstring = new String(encoded, StandardCharsets.UTF_8);
assertTrue(pomAsAstring.contains("<artifactId>takari-lifecycle-plugin</artifactId>"));
TestUtil.rm(tmpRootCloned.toFile());
}
Aggregations