Search in sources :

Example 11 with Folder

use of org.drools.compiler.compiler.io.Folder in project drools by kiegroup.

the class MemoryFileSystem method readFromJar.

public static MemoryFileSystem readFromJar(java.io.File jarFile) {
    MemoryFileSystem mfs = new MemoryFileSystem();
    ZipFile zipFile = null;
    try {
        zipFile = new ZipFile(jarFile);
        Enumeration<? extends ZipEntry> entries = zipFile.entries();
        while (entries.hasMoreElements()) {
            ZipEntry entry = entries.nextElement();
            int separator = entry.getName().lastIndexOf('/');
            String path = separator > 0 ? entry.getName().substring(0, separator) : "";
            String name = entry.getName().substring(separator + 1);
            Folder folder = mfs.getFolder(path);
            folder.create();
            File file = folder.getFile(name);
            file.create(zipFile.getInputStream(entry));
        }
    } catch (IOException e) {
        throw new RuntimeException(e);
    } finally {
        if (zipFile != null) {
            try {
                zipFile.close();
            } catch (IOException e) {
                log.error(e.getMessage(), e);
            }
        }
    }
    return mfs;
}
Also used : ZipFile(java.util.zip.ZipFile) ZipEntry(java.util.zip.ZipEntry) IOException(java.io.IOException) Folder(org.drools.compiler.compiler.io.Folder) ZipFile(java.util.zip.ZipFile) File(org.drools.compiler.compiler.io.File)

Example 12 with Folder

use of org.drools.compiler.compiler.io.Folder in project drools by kiegroup.

the class MemoryFileSystem method createFolder.

public void createFolder(MemoryFolder folder) {
    // create current, if it does not exist.
    if (!existsFolder(folder)) {
        // create parent if it does not exist
        if (!existsFolder((MemoryFolder) folder.getParent())) {
            createFolder((MemoryFolder) folder.getParent());
        }
        folders.put(folder.getPath().toPortableString(), new HashSet<Resource>());
        Folder parent = folder.getParent();
        folders.get(parent.getPath().toPortableString()).add(folder);
    }
}
Also used : Resource(org.drools.compiler.compiler.io.Resource) Folder(org.drools.compiler.compiler.io.Folder)

Example 13 with Folder

use of org.drools.compiler.compiler.io.Folder in project drools by kiegroup.

the class MemoryFileSystem method getFile.

public File getFile(String path) {
    path = MemoryFolder.trimLeadingAndTrailing(path);
    int lastSlashPos = path.lastIndexOf('/');
    if (lastSlashPos >= 0) {
        Folder folder = getFolder(path.substring(0, lastSlashPos));
        String name = decode(path.substring(lastSlashPos + 1));
        return new MemoryFile(this, name, folder);
    } else {
        // path is already at root
        Folder folder = getRootFolder();
        return new MemoryFile(this, path, folder);
    }
}
Also used : Folder(org.drools.compiler.compiler.io.Folder)

Example 14 with Folder

use of org.drools.compiler.compiler.io.Folder in project drools by kiegroup.

the class KieContainerTest method testMemoryFileSystemFolderUniqueness.

@Test
public void testMemoryFileSystemFolderUniqueness() {
    KieServices kieServices = KieServices.Factory.get();
    String drl = "package org.drools.test\n" + "rule R1 when\n" + "   $m : Object()\n" + "then\n" + "end\n";
    Resource resource = kieServices.getResources().newReaderResource(new StringReader(drl), "UTF-8");
    resource.setTargetPath("org/drools/test/rules.drl");
    String kmodule = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<kmodule xmlns=\"http://www.drools.org/xsd/kmodule\">\n" + "  <kbase name=\"testKbase\" packages=\"org.drools.test\">\n" + "    <ksession name=\"testKsession\"/>\n" + "  </kbase>\n" + "</kmodule>";
    // Create an in-memory jar for version 1.0.0
    ReleaseId releaseId = kieServices.newReleaseId("org.kie", "test-delete", "1.0.0");
    createAndDeployJar(kieServices, kmodule, releaseId, resource);
    KieContainer kieContainer = kieServices.newKieContainer(releaseId);
    KieModule kieModule = ((InternalKieContainer) kieContainer).getMainKieModule();
    MemoryFileSystem memoryFileSystem = ((MemoryKieModule) kieModule).getMemoryFileSystem();
    Folder rootFolder = memoryFileSystem.getFolder("");
    Object[] members = rootFolder.getMembers().toArray();
    assertEquals(2, members.length);
    Folder firstFolder = (Folder) members[0];
    Folder secondFolder = (Folder) members[1];
    assertEquals(firstFolder.getParent(), secondFolder.getParent());
}
Also used : Resource(org.kie.api.io.Resource) KieServices(org.kie.api.KieServices) ReleaseId(org.kie.api.builder.ReleaseId) Folder(org.drools.compiler.compiler.io.Folder) MemoryFileSystem(org.drools.compiler.compiler.io.memory.MemoryFileSystem) StringReader(java.io.StringReader) MemoryKieModule(org.drools.compiler.kie.builder.impl.MemoryKieModule) InternalKieContainer(org.drools.core.impl.InternalKieContainer) MemoryKieModule(org.drools.compiler.kie.builder.impl.MemoryKieModule) KieModule(org.kie.api.builder.KieModule) InternalKieContainer(org.drools.core.impl.InternalKieContainer) KieContainer(org.kie.api.runtime.KieContainer) Test(org.junit.Test)

Example 15 with Folder

use of org.drools.compiler.compiler.io.Folder in project drools by kiegroup.

the class MemoryFileSystem method remove.

public void remove(Set<Resource> members) {
    for (Iterator<Resource> it = members.iterator(); it.hasNext(); ) {
        Resource res = it.next();
        if (res instanceof Folder) {
            remove(folders.get(res.getPath().toPortableString()));
        } else {
            String fileName = res.getPath().toPortableString();
            fileContents.remove(fileName);
            if (modifiedFilesSinceLastMark != null) {
                modifiedFilesSinceLastMark.add(fileName);
            }
        }
        it.remove();
    }
}
Also used : Resource(org.drools.compiler.compiler.io.Resource) Folder(org.drools.compiler.compiler.io.Folder)

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