@Test public void testGetResourceForFolderWithFilesAndSubFolders() throws Exception { MemoryFileSystem mfs = new MemoryFileSystem(); mfs.createFolder(new MemoryFolder(mfs, "src/main/java")); mfs.createFolder(new MemoryFolder(mfs, "src/main/java/org")); mfs.createFolder(new MemoryFolder(mfs, "src/main/java/com")); mfs.setFileContents(new MemoryFile(mfs, "my-file1", mfs.getFolder("src/main/java")), new byte[10]); mfs.setFileContents(new MemoryFile(mfs, "my-file2", mfs.getFolder("src/main/java")), new byte[10]); MemoryKieModule mkm = new MemoryKieModule(releaseId, kieModuleModel, mfs); ResourceProvider resourceProvider = mkm.createResourceProvider(); String folderContents = IOUtils.toString(resourceProvider.getResource("src/main/java").openStream()); Assertions.assertThat(folderContents).hasLineCount(4).contains("com", "org", "my-file1", "my-file2"); }
@Test public void testCreateAndCopyFolder() { MemoryFileSystem memoryFileSystem = new MemoryFileSystem(); // this also creates a folder if it doesn't exist final Folder emptyFolder = memoryFileSystem.getFolder("emptyfolder"); final MemoryFolder destinationFolder = new MemoryFolder(memoryFileSystem, "destinationfolder"); memoryFileSystem.createFolder(destinationFolder); memoryFileSystem.copyFolder(emptyFolder, memoryFileSystem, destinationFolder); } }
@Test public void testGetResourceForFolderWithOnlySubFolders() throws Exception { MemoryFileSystem mfs = new MemoryFileSystem(); mfs.createFolder(new MemoryFolder(mfs, "src/main/java")); mfs.createFolder(new MemoryFolder(mfs, "src/main/java/org")); mfs.createFolder(new MemoryFolder(mfs, "src/main/java/com")); MemoryKieModule mkm = new MemoryKieModule(releaseId, kieModuleModel, mfs); ResourceProvider resourceProvider = mkm.createResourceProvider(); String folderContents = IOUtils.toString(resourceProvider.getResource("src/main/java").openStream()); Assertions.assertThat(folderContents).hasLineCount(2).contains("com", "org"); }
"end\n"; KieServices ks = KieServices.Factory.get(); ReleaseId releaseId = ks.newReleaseId("org.kie", "cache-accumulate", "1.0"); KieFileSystem kfs = ks.newKieFileSystem() .generateAndWritePomXML(releaseId) .write("src/main/resources/KBase1/org/pkg1/r1.drl", drl1) .writeKModuleXML(createKieProjectWithPackagesAnd2KieBases(ks).toXML()); ks.newKieBuilder( kfs ).buildAll(); InternalKieModule kieModule = (InternalKieModule) ks.getRepository().getKieModule( releaseId ); byte[] jar = kieModule.getBytes(); MemoryFileSystem mfs = MemoryFileSystem.readFromJar( jar ); File file = mfs.getFile( KieBuilderImpl.getCompilationCachePath( releaseId, "KBase1") ); assertNotNull( file );
.setClockType( ClockTypeOption.get( "pseudo" ) ); KieServices ks = KieServices.Factory.get(); KieFileSystemImpl kfs = ( KieFileSystemImpl ) ks.newKieFileSystem(); kfs.write( "src/main/resources/META-INF/beans.xml", generateBeansXML( ) ); kfs.writeKModuleXML( ((KieModuleModelImpl)kproj).toXML() ); ReleaseId releaseId = ks.newReleaseId(namespace, "art1", version); kfs.generateAndWritePomXML(releaseId); KieBuilder kBuilder = ks.newKieBuilder( kfs ); MemoryFileSystem trgMfs = kieModule.getMemoryFileSystem(); trgMfs.writeAsJar(fileManager.getRootDirectory(), namespace + "-" + version); } else { java.io.File file = fileManager.newFile( namespace + "-" + version ); trgMfs.writeAsFs( file );
@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()); }
@Test public void testOnDisc() throws ClassNotFoundException, InterruptedException, IOException { String namespace = "org.kie.test"; KieModuleModel kProj = createKieProject(namespace); ReleaseId releaseId = KieServices.Factory.get().newReleaseId(namespace, "memory", "1.0"); KieFileSystem kfs = KieServices.Factory.get().newKieFileSystem(); generateAll(kfs, namespace, releaseId, kProj); MemoryFileSystem mfs = ((KieFileSystemImpl)kfs).asMemoryFileSystem(); File file = fileManager.getRootDirectory() ; mfs.writeAsFs( file ); createAndTestKieContainer(releaseId, createKieBuilder(kfs), namespace); }
KieServices ks = KieServices.Factory.get(); setSystemProperties(properties); final KieBuilderImpl kieBuilder = (KieBuilderImpl) ks.newKieBuilder(projectDir); kieBuilder.buildAll(ExecutableModelMavenProject.SUPPLIER, s -> { return !s.contains("src/test/java"); }); InternalKieModule kieModule = (InternalKieModule) kieBuilder.getKieModule(); List<String> generatedFiles = kieModule.getFileNames() .stream() ((MemoryKieModule) ((CanonicalKieModule) kieModule).getInternalKieModule()).getMemoryFileSystem() : ((MemoryKieModule) kieModule).getMemoryFileSystem(); final MemoryFile f = (MemoryFile) mfs.getFile(generatedFile); final Path newFile = Paths.get(targetDirectory.getPath(), droolsModelCompilerPath, final MemoryFile packagesMemoryFile = (MemoryFile) mfs.getFile(CanonicalKieModule.MODEL_FILE); final String packagesMemoryFilePath = packagesMemoryFile.getFolder().getPath().toPortableString(); final Path packagesDestinationPath = Paths.get(targetDirectory.getPath(), "classes", packagesMemoryFilePath, packagesMemoryFile.getName());
private void addPMMLPojos(PMML4Compiler compiler, Resource resource) { KieFileSystem javaSource = KieServices.Factory.get().newKieFileSystem(); Map<String, String> javaSources = new HashMap<>(); Map<String, String> modelSources = null; KnowledgeBuilderConfigurationImpl kconf = new KnowledgeBuilderConfigurationImpl(classLoader); JavaDialectConfiguration javaConf = (JavaDialectConfiguration) kconf.getDialectConfiguration("java"); MemoryFileSystem trgMfs = new MemoryFileSystem(); compileJavaClasses(javaConf, rootClassLoader, javaFileNames, JAVA_ROOT, src, trgMfs); Map<String, byte[]> classesMap = new HashMap<>(); for (String name : trgMfs.getFileNames()) { classesMap.put(name, trgMfs.getBytes(name));
@Before public void setup() { memoryFileSystem = new MemoryFileSystem(); }
@Override public void writeProjectOutput(MemoryFileSystem trgMfs, ResultsImpl messages) { MemoryFileSystem srcMfs = new MemoryFileSystem(); List<String> modelFiles = new ArrayList<>(); ModelWriter modelWriter = new ModelWriter(); for (ModelBuilderImpl modelBuilder : modelBuilders) { ModelWriter.Result result = modelWriter.writeModel(srcMfs, modelBuilder.getPackageModels()); modelFiles.addAll(result.getModelFiles()); final Folder sourceFolder = srcMfs.getFolder("src/main/java"); final Folder targetFolder = trgMfs.getFolder("."); srcMfs.copyFolder(sourceFolder, trgMfs, targetFolder); } modelWriter.writeModelFile(modelFiles, trgMfs); } }
@Override public Vfs.Dir createDir(URL url) { KieModule kieModule = ((InternalKieContainer) kieContainer).getMainKieModule(); if (!(kieModule instanceof MemoryKieModule)) { throw new IllegalStateException("The classpath url (" + url + ") has an mfs protocol but the kieModule (" + kieModule + ") is not an instance of " + MemoryKieModule.class.getSimpleName() + "."); } MemoryFileSystem memoryFileSystem = ((MemoryKieModule) kieModule).getMemoryFileSystem(); Folder folder = memoryFileSystem.getFolder(url.toExternalForm().substring("mfs:/".length())); return new ReflectionsKieVfsDir(folder); }
@Test public void testi18NFile () throws Exception { String fileStr = "com/myspace/test/" + URLEncoder.encode("あ", "UTF-8") + ".java"; List<String> classes = new ArrayList<>(); classes.add(fileStr); MemoryFileSystem fs = new MemoryFileSystem(); MemoryFile file = (MemoryFile) fs.getFile(fileStr); String fileContents = "package com.myspace.test; public class あ { }"; fs.setFileContents(file, fileContents.getBytes()); 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()] ), fs, fs ); assertEquals(res.getErrors().length, 0); } }
public void copyFolder(MemoryFileSystem srcMfs, Folder srcFolder, MemoryFileSystem trgMfs, Folder trgFolder, KieModuleModel kproj) { if ( !trgFolder.exists() ) { trgMfs.getFolder( trgFolder.getPath() ).create(); } Collection<Resource> col = (Collection<Resource>) srcFolder.getMembers(); if (col == null) { return; } for ( Resource rs : col ) { if ( rs instanceof Folder ) { copyFolder( srcMfs, (Folder) rs, trgMfs, trgFolder.getFolder( ((Folder) rs).getName() ), kproj ); } else { MemoryFile trgFile = (MemoryFile) trgFolder.getFile( ((File) rs).getName() ); try { trgMfs.setFileContents( trgFile, srcMfs.getFileContents( (MemoryFile) rs ) ); } catch ( IOException e ) { throw new RuntimeException( e ); } } } }
@Test public void testGetEnglishFileName() throws Exception { final File file = memoryFileSystem.getFile( "path/path/File.java" ); assertEquals( "File.java", file.getName() ); }
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; }
@Test public void testClone() throws Exception { KieFileSystem clonedKieFileSystem = kieFileSystem.clone(); MemoryFileSystem clonedMfs = ( (KieFileSystemImpl) clonedKieFileSystem ).getMfs(); Collection<String> clonedFileNames = clonedMfs.getFileNames(); assertTrue( kieFileSystem != clonedKieFileSystem ); assertTrue( kieFileSystem.getMfs() != clonedMfs ); assertEquals( kieFileSystem.getMfs().getFileNames(), clonedFileNames ); } }
"end\n"; KieServices ks = KieServices.Factory.get(); KieFileSystem kfs = ks.newKieFileSystem().write( "src/main/resources/r1.drl", drl ); ks.newKieBuilder( kfs ).buildAll(); ReleaseId releaseId = ks.getRepository().getDefaultReleaseId(); InternalKieModule kieModule = (InternalKieModule) ks.getRepository().getKieModule( releaseId ); byte[] jar = kieModule.getBytes(); MemoryFileSystem mfs = MemoryFileSystem.readFromJar( jar ); File file = mfs.getFile( KieBuilderImpl.getCompilationCachePath( releaseId, "KBase1") ); assertNotNull( file );
KieServices ks = KieServices.Factory.get(); setSystemProperties(properties); final KieBuilderImpl kieBuilder = (KieBuilderImpl) ks.newKieBuilder(projectDir); kieBuilder.buildAll(ExecutableModelMavenProject.SUPPLIER, s -> { return !s.contains("src/test/java"); }); InternalKieModule kieModule = (InternalKieModule) kieBuilder.getKieModule(); List<String> generatedFiles = kieModule.getFileNames() .stream() ((MemoryKieModule) ((CanonicalKieModule) kieModule).getInternalKieModule()).getMemoryFileSystem() : ((MemoryKieModule) kieModule).getMemoryFileSystem(); final MemoryFile f = (MemoryFile) mfs.getFile(generatedFile); final Path newFile = Paths.get(targetDirectory.getPath(), droolsModelCompilerPath, final MemoryFile packagesMemoryFile = (MemoryFile) mfs.getFile(CanonicalKieModule.MODEL_FILE); final String packagesMemoryFilePath = packagesMemoryFile.getFolder().getPath().toPortableString(); final Path packagesDestinationPath = Paths.get(targetDirectory.getPath(), "classes", packagesMemoryFilePath, packagesMemoryFile.getName());
@Test public void testFileCreation() throws IOException { FileSystem fs = new MemoryFileSystem(); Folder mres = fs.getFolder( "src/main/java/org/domain" ); File f1 = mres.getFile( "MyClass.java" ); f1.create( new ByteArrayInputStream( "ABC".getBytes() ) ); mres.create(); f1 = mres.getFile( "MyClass.java" ); assertTrue( f1.exists()); f1.create( new ByteArrayInputStream( "ABC".getBytes() ) ); f1 = mres.getFile( "MyClass.java" ); assertTrue( f1.exists() ); assertEquals( "ABC", StringUtils.toString( f1.getContents() ) ); f1.create( new ByteArrayInputStream( "ABC".getBytes() ) ); f1.setContents( new ByteArrayInputStream( "DEF".getBytes() ) ); assertEquals( "DEF", StringUtils.toString( f1.getContents() ) ); }