Search in sources :

Example 16 with Folder

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();
        }
    }
}
Also used : ZipEntry(java.util.zip.ZipEntry) Resource(org.drools.compiler.compiler.io.Resource) IOException(java.io.IOException) Folder(org.drools.compiler.compiler.io.Folder)

Example 17 with Folder

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;
}
Also used : Resource(org.drools.compiler.compiler.io.Resource) IOException(java.io.IOException) Folder(org.drools.compiler.compiler.io.Folder) ZipFile(java.util.zip.ZipFile) File(org.drools.compiler.compiler.io.File)

Example 18 with Folder

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;
}
Also used : KieBaseModel(org.kie.api.builder.model.KieBaseModel) EclipseJavaCompiler(org.drools.compiler.commons.jci.compilers.EclipseJavaCompiler) ArrayList(java.util.ArrayList) CompilationResult(org.drools.compiler.commons.jci.compilers.CompilationResult) Folder(org.drools.compiler.compiler.io.Folder) EclipseJavaCompilerSettings(org.drools.compiler.commons.jci.compilers.EclipseJavaCompilerSettings)

Example 19 with Folder

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());
}
Also used : MemoryFileSystem(org.drools.compiler.compiler.io.memory.MemoryFileSystem) FileSystem(org.drools.compiler.compiler.io.FileSystem) MemoryFileSystem(org.drools.compiler.compiler.io.memory.MemoryFileSystem) Folder(org.drools.compiler.compiler.io.Folder) File(org.drools.compiler.compiler.io.File) Test(org.junit.Test)

Example 20 with Folder

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()));
}
Also used : MemoryFileSystem(org.drools.compiler.compiler.io.memory.MemoryFileSystem) FileSystem(org.drools.compiler.compiler.io.FileSystem) MemoryFileSystem(org.drools.compiler.compiler.io.memory.MemoryFileSystem) Folder(org.drools.compiler.compiler.io.Folder) File(org.drools.compiler.compiler.io.File) Test(org.junit.Test)

Aggregations

Folder (org.drools.compiler.compiler.io.Folder)22 MemoryFileSystem (org.drools.compiler.compiler.io.memory.MemoryFileSystem)12 Test (org.junit.Test)12 FileSystem (org.drools.compiler.compiler.io.FileSystem)11 File (org.drools.compiler.compiler.io.File)10 IOException (java.io.IOException)6 Resource (org.drools.compiler.compiler.io.Resource)6 MemoryFolder (org.drools.compiler.compiler.io.memory.MemoryFolder)6 ByteArrayInputStream (java.io.ByteArrayInputStream)3 ZipFile (java.util.zip.ZipFile)3 ZipEntry (java.util.zip.ZipEntry)2 StringReader (java.io.StringReader)1 ArrayList (java.util.ArrayList)1 CompilationResult (org.drools.compiler.commons.jci.compilers.CompilationResult)1 EclipseJavaCompiler (org.drools.compiler.commons.jci.compilers.EclipseJavaCompiler)1 EclipseJavaCompilerSettings (org.drools.compiler.commons.jci.compilers.EclipseJavaCompilerSettings)1 MemoryFile (org.drools.compiler.compiler.io.memory.MemoryFile)1 MemoryKieModule (org.drools.compiler.kie.builder.impl.MemoryKieModule)1 InternalKieContainer (org.drools.core.impl.InternalKieContainer)1 KieServices (org.kie.api.KieServices)1