@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 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 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 testGetResourceAsStreamForFile() throws Exception { MemoryFileSystem mfs = new MemoryFileSystem(); mfs.setFileContents(new MemoryFile(mfs, "my-file1", mfs.getFolder("src/main/resources")), new byte[] {65, 66}); MemoryKieModule mkm = new MemoryKieModule(releaseId, kieModuleModel, mfs); ResourceProvider resourceProvider = mkm.createResourceProvider(); String folderContents = IOUtils.toString(resourceProvider.getResourceAsStream("src/main/resources/my-file1")); Assertions.assertThat(folderContents).hasLineCount(1).contains("AB"); // "AB" == new byte[] {65, 66} }
@Test public void testGetResourceAsStreamFolderWithOnlySubFolders() 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.getResourceAsStream("src/main/java")); Assertions.assertThat(folderContents).hasLineCount(2).contains("com", "org"); }
@Before public void setup() { memoryFileSystem = new MemoryFileSystem(); }
@Test public void testGetParentWithLeadingAndTrailingSlash() { MemoryFileSystem mfs = new MemoryFileSystem(); assertEquals( "", new MemoryFolder( mfs, "/src" ).getParent().getPath().toPortableString() ); assertEquals( "", new MemoryFolder( mfs, "src/" ).getParent().getPath().toPortableString() ); assertEquals( "", new MemoryFolder( mfs, "/src/" ).getParent().getPath().toPortableString() ); assertEquals( "src", new MemoryFolder( mfs, "/src/main" ).getParent().getPath().toPortableString() ); assertEquals( "src", new MemoryFolder( mfs, "src/main/" ).getParent().getPath().toPortableString() ); assertEquals( "src", new MemoryFolder( mfs, "/src/main/" ).getParent().getPath().toPortableString() ); assertEquals( "src/main", new MemoryFolder( mfs, "/src/main/java" ).getParent().getPath().toPortableString() ); assertEquals( "src/main", new MemoryFolder( mfs, "src/main/java/" ).getParent().getPath().toPortableString() ); assertEquals( "src/main", new MemoryFolder( mfs, "/src/main/java/" ).getParent().getPath().toPortableString() ); }
@Test public void testGetEnglishFileName() throws Exception { final File file = memoryFileSystem.getFile( "path/path/File.java" ); assertEquals( "File.java", file.getName() ); }
@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 ); } }
@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); }
@Test public void trimLeadingAndTrailing() { assertEquals("", MemoryFolder.trimLeadingAndTrailing("")); assertEquals("src/main", MemoryFolder.trimLeadingAndTrailing("/src/main")); assertEquals("src/main", MemoryFolder.trimLeadingAndTrailing("src/main/")); assertEquals("src/main", MemoryFolder.trimLeadingAndTrailing("/src/main/")); }
@Test public void testGetResourceTrailingSlashIgnored() throws Exception { MemoryFileSystem mfs = new MemoryFileSystem(); mfs.setFileContents(new MemoryFile(mfs, "my-file1", mfs.getFolder("src/main/resources")), new byte[] {65, 66}); MemoryKieModule mkm = new MemoryKieModule(releaseId, kieModuleModel, mfs); ResourceProvider resourceProvider = mkm.createResourceProvider(); String noTrailingSlashContents = IOUtils.toString(resourceProvider.getResourceAsStream("src/main/resources/my-file1")); Assertions.assertThat(noTrailingSlashContents).hasLineCount(1).contains("AB"); // "AB" == new byte[] {65, 66} String withTrailingSlashContents = IOUtils.toString(resourceProvider.getResourceAsStream("src/main/resources/my-file1/")); Assertions.assertThat(withTrailingSlashContents).hasLineCount(1).contains("AB"); // "AB" == new byte[] {65, 66} }
@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"); }
@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() ); }
@Test public void testGetJapaneseFileName() throws Exception { final File file = memoryFileSystem.getFile( "path/path/%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A.java" ); assertEquals( "%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A.java", file.getName() ); } }
@Test public void testGetResourceForEmptyFolder() throws Exception { MemoryFileSystem mfs = new MemoryFileSystem(); mfs.createFolder(new MemoryFolder(mfs, "src/main/java")); MemoryKieModule mkm = new MemoryKieModule(releaseId, kieModuleModel, mfs); ResourceProvider resourceProvider = mkm.createResourceProvider(); String folderContents = IOUtils.toString(resourceProvider.getResource("src/main/java").openStream()); Assertions.assertThat(folderContents).isEmpty(); }
@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() ) ); }
@Test public void testRelativeToBranchFilePath() { FileSystem fs = new MemoryFileSystem(); Folder mres = fs.getFolder( "src/main/java/org/domain" ); Folder f2 = fs.getFolder( "src/main/resources/org/domain/" ); File f1 = mres.getFile( "MyClass.java" ); assertEquals( "../../../java/org/domain/MyClass.java", f1.getPath().toRelativePortableString( f2.getPath() ) ); } }
@Test public void testRecursiveFolderCreation() { FileSystem fs = new MemoryFileSystem(); Folder mres = fs.getFolder( "src/main/resources" ); assertFalse( mres.exists() ); mres.create(); assertTrue( mres.exists() ); Folder fld = fs.getFolder( "src/main" ); assertTrue( fld.exists() ); Folder src = fs.getFolder( "src" ); assertTrue( src.exists() ); }
@Test public void testFolderGetParent() { FileSystem fs = new MemoryFileSystem(); Folder mres = fs.getFolder( "src/main/resources" ); mres.create(); assertEquals( "src/main", mres.getParent().getPath().toPortableString() ); assertEquals( "src", mres.getParent().getParent().getPath().toPortableString() ); }