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;
}
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);
}
}
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);
}
}
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());
}
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();
}
}
Aggregations