@Override public String getName() { return kieFile.getName(); }
@Override public InputStream openInputStream() throws IOException { return kieFile.getContents(); }
@Override public String getRelativePath() { return kieFile.getPath().toPortableString(); }
@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() ) ); }
@Test public void testFileRemoval() throws IOException { FileSystem fs = new MemoryFileSystem(); Folder mres = fs.getFolder( "src/main/java/org/domain" ); mres.create(); File f1 = mres.getFile( "MyClass.java" ); f1.create( new ByteArrayInputStream( "ABC".getBytes() ) ); assertTrue( f1.exists() ); assertEquals( "ABC", StringUtils.toString( f1.getContents() ) ); fs.remove( f1 ); f1 = mres.getFile( "MyClass.java" ); assertFalse( f1.exists() ); try { f1.getContents(); fail( "Should throw IOException" ); } catch( IOException e ) { } }
file.create( new ByteArrayInputStream( "ABC1".getBytes() ) ); file = fld.getFile( "MyClass2.java" ); file.create( new ByteArrayInputStream( "ABC2".getBytes() ) ); file.create( new ByteArrayInputStream( "ABC3".getBytes() ) ); file = fld.getFile( "MyClass4.java" ); file.create( new ByteArrayInputStream( "ABC4".getBytes() ) ); file.create( new ByteArrayInputStream( "ABC5".getBytes() ) ); assertTrue( fs.getFile( "src/main/MyClass1.java" ).exists() ); assertTrue( fs.getFile( "src/main/MyClass2.java" ).exists() ); assertTrue( fs.getFile( "src/main/resources/org/MyClass3.java" ).exists() ); assertTrue( fs.getFile( "src/main/resources/org/MyClass4.java" ).exists() ); assertTrue( fs.getFile( "src/main/resources/org/domain/MyClass4.java" ).exists() ); assertFalse( fs.getFile( "src/main/MyClass1.java" ).exists() ); assertFalse( fs.getFile( "src/main/MyClass2.java" ).exists() ); assertFalse( fs.getFile( "src/main/resources/org/MyClass3.java" ).exists() ); assertFalse( fs.getFile( "src/main/resources/org/MyClass4.java" ).exists() ); assertFalse( fs.getFile( "src/main/resources/org/domain/MyClass4.java" ).exists() );
@Override public Iterable<Vfs.File> getFiles() { List<Vfs.File> vfsFileList = new ArrayList<>(); Deque<Resource> resourceDeque = new ArrayDeque<>(); Collection<? extends Resource> mainMembers = kieFolder.getMembers(); if (mainMembers != null) { resourceDeque.addAll(mainMembers); } while (!resourceDeque.isEmpty()) { Resource resource = resourceDeque.pop(); if (resource instanceof File) { File file = (File) resource; if (file.getName().endsWith(".class")) { vfsFileList.add(new ReflectionsKieVfsFile(file)); } } else if (resource instanceof Folder) { Collection<? extends Resource> members = ((Folder) resource).getMembers(); if (members != null) { resourceDeque.addAll(members); } } else { throw new IllegalStateException("Unsupported resource class (" + resource.getClass() + ") for resource (" + resource + ")."); } } return vfsFileList; }
@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 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 testGetEnglishFileName() throws Exception { final File file = memoryFileSystem.getFile( "path/path/File.java" ); assertEquals( "File.java", file.getName() ); }
@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() ) ); } }
public void writeFs(MemoryFileSystem mfs, Folder f, java.io.File file1) { for ( Resource rs : f.getMembers() ) { if ( rs instanceof Folder ) { java.io.File file2 = new java.io.File( file1, ((Folder) rs).getName()); file2.mkdir(); writeFs( mfs, (Folder) rs, file2 ); } else { byte[] bytes = mfs.getFileContents( (MemoryFile) rs ); try { IoUtils.write(new java.io.File(file1, ((File) rs).getName()), bytes); } catch ( IOException e ) { fail( "Unable to write project to file system\n" + e.getMessage() ); } } } } }
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 ); } } } }