public File getClassesRoot(File archiveRoot) { if ( classesRoot == null ) { classesRoot = makeDirectoryStructure( archiveRoot, getClassesRoot() ); } return classesRoot; }
public File getLibraryRoot(File archiveRoot) { if ( librariesRoot == null ) { librariesRoot = makeDirectoryStructure( archiveRoot, getLibrariesRoot() ); } return librariesRoot; }
private static void copyClass(String className, File root) throws IOException { InputStream clazzStream = null; try { String classFilePathName = getClassFileName( className ); String directoryName = classFilePathName.substring( 0, classFilePathName.lastIndexOf( "/" ) ); String classFileName = classFilePathName.substring( classFilePathName.lastIndexOf( "/" ) + 1 ); File packageDirectory = makeDirectoryStructure( root, directoryName ); File classFile = new File( packageDirectory, classFileName ); classFile.createNewFile(); classFile.deleteOnExit(); clazzStream = loadResourceAsStream( classFilePathName ); if ( clazzStream == null ) { throw new IllegalStateException( "Eror loading " + className + " (" + classFilePathName + ")" ); } Files.copy( clazzStream, classFile ); } finally { if ( clazzStream != null ) { clazzStream.close(); } } }
private static void copyResource(ResourceDescriptor resourceDescriptorImpl, File root) throws IOException { String directoryName; String fileName; if ( resourceDescriptorImpl.getName().lastIndexOf( "/" ) > 0 ) { directoryName = resourceDescriptorImpl.getName() .substring( 0, resourceDescriptorImpl.getName().lastIndexOf( "/" ) ); fileName = resourceDescriptorImpl.getName() .substring( resourceDescriptorImpl.getName().lastIndexOf( "/" ) + 1 ); } else { directoryName = ""; fileName = resourceDescriptorImpl.getName(); } if ( isEmpty( fileName ) ) { throw new IllegalArgumentException( "Unable to determine source file name of " + resourceDescriptorImpl ); } File directory = makeDirectoryStructure( root, directoryName ); File file = new File( directory, fileName ); file.createNewFile(); file.deleteOnExit(); Files.copy( resourceDescriptorImpl.getSource().openStream(), file ); }