use of org.drools.compiler.compiler.io.Folder in project drools by kiegroup.
the class MemoryFileSystem method writeJarEntries.
private void writeJarEntries(Folder f, ZipOutputStream out) throws IOException {
for (Resource rs : f.getMembers()) {
String rname = rs.getPath().toPortableString();
if (rs instanceof Folder) {
// a folder name must end with / according to ZIP spec
rname = rname.endsWith("/") ? rname : rname + "/";
ZipEntry entry = new ZipEntry(rname);
out.putNextEntry(entry);
writeJarEntries((Folder) rs, out);
} else {
ZipEntry entry = new ZipEntry(rname);
out.putNextEntry(entry);
byte[] contents = getFileContents((MemoryFile) rs);
if (contents == null) {
IOException e = new IOException("No content found for: " + rs);
log.error(e.getMessage(), e);
throw e;
}
out.write(contents);
out.closeEntry();
}
}
}
use of org.drools.compiler.compiler.io.Folder in project drools by kiegroup.
the class MemoryFileSystem method copyFolder.
private static int copyFolder(MemoryFileSystem srcMfs, Folder srcFolder, MemoryFileSystem trgMfs, Folder trgFolder, int count, String... filters) {
if (!trgFolder.exists()) {
trgMfs.getFolder(trgFolder.getPath()).create();
}
if (srcFolder != null) {
for (Resource rs : srcFolder.getMembers()) {
if (rs instanceof Folder) {
count = copyFolder(srcMfs, (Folder) rs, trgMfs, trgFolder.getFolder(((Folder) rs).getName()), count, filters);
} else {
MemoryFile trgFile = (MemoryFile) trgFolder.getFile(((org.drools.compiler.compiler.io.File) rs).getName());
boolean accept = false;
if (filters == null || filters.length == 0) {
accept = true;
} else {
for (String filter : filters) {
if (trgFile.getName().endsWith(filter)) {
accept = true;
break;
}
}
}
if (accept) {
try {
trgMfs.setFileContents(trgFile, srcMfs.getFileContents((MemoryFile) rs));
count++;
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
}
return count;
}
use of org.drools.compiler.compiler.io.Folder 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;
}
use of org.drools.compiler.compiler.io.Folder in project drools by kiegroup.
the class MemoryFileTest method testFilePath.
@Test
public void testFilePath() {
FileSystem fs = new MemoryFileSystem();
Folder mres = fs.getFolder("src/main/java/org/domain");
File f1 = mres.getFile("MyClass.java");
assertEquals("src/main/java/org/domain/MyClass.java", f1.getPath().toPortableString());
}
use of org.drools.compiler.compiler.io.Folder in project drools by kiegroup.
the class MemoryFileTest method testRelativeToParentFilePath.
@Test
public void testRelativeToParentFilePath() {
FileSystem fs = new MemoryFileSystem();
Folder mres = fs.getFolder("src/main/java/org/domain");
Folder f2 = fs.getFolder("src/main/java/org/domain/f1/f2/");
File f1 = mres.getFile("MyClass.java");
assertEquals("../../MyClass.java", f1.getPath().toRelativePortableString(f2.getPath()));
}
Aggregations