Author: nextgens Date: 2007-06-30 01:21:28 +0000 (Sat, 30 Jun 2007) New Revision: 13841
Modified: trunk/freenet/src/freenet/pluginmanager/PluginManager.java trunk/freenet/src/freenet/support/io/FileUtil.java Log: Refactor some code in the pluginmanager, create a new utility method in FileUtils Modified: trunk/freenet/src/freenet/pluginmanager/PluginManager.java =================================================================== --- trunk/freenet/src/freenet/pluginmanager/PluginManager.java 2007-06-30 00:58:11 UTC (rev 13840) +++ trunk/freenet/src/freenet/pluginmanager/PluginManager.java 2007-06-30 01:21:28 UTC (rev 13841) @@ -3,13 +3,9 @@ * http://www.gnu.org/ for further details of the GPL. */ package freenet.pluginmanager; -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; import java.io.BufferedReader; -import java.io.DataInputStream; import java.io.File; import java.io.FileNotFoundException; -import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; @@ -37,7 +33,6 @@ import freenet.support.URIPreEncoder; import freenet.support.api.HTTPRequest; import freenet.support.api.StringArrCallback; -import freenet.support.io.BucketTools; import freenet.support.io.FileUtil; public class PluginManager { @@ -337,19 +332,13 @@ filename = null; URL url; - DataInputStream dis; InputStream is = null; - BufferedInputStream bis = null; - FileOutputStream fos = null; - BufferedOutputStream bos = null; try { url = new URL("http://downloads.freenetproject.org/alpha/plugins/" + pluginname + ".jar.url"); if(logMINOR) Logger.minor(this, "Downloading "+url); is = url.openStream(); - bis = new BufferedInputStream(is); - dis = new DataInputStream(bis); - + File pluginsDirectory = new File("plugins"); if(!pluginsDirectory.exists()) { Logger.normal(this, "The plugin directory hasn't been found, let's create it"); @@ -358,23 +347,12 @@ } File finalFile = new File("plugins/" + pluginname + ".jar"); - File f = File.createTempFile(pluginname, ".tmp", pluginsDirectory); - fos = new FileOutputStream(f); - bos = new BufferedOutputStream(fos); - - int len = 0; - byte[] buffer = new byte[4096]; - while ((len = dis.read(buffer)) > 0) { - bos.write(buffer, 0, len); - } - bos.close(); - fos.close(); - bos = null; - fos = null; - if(!f.renameTo(finalFile)) - Logger.error(this, "Failed to rename "+f+" into "+finalFile); + if(!FileUtil.writeTo(is, finalFile)); + Logger.error(this, "Failed to rename the temporary file into "+finalFile); + filename = "*@file://" + FileUtil.getCanonicalFile(finalFile); if(logMINOR) Logger.minor(this, "Rewritten to "+filename); + } catch (MalformedURLException mue) { Logger.error(this, "MAlformedURLException has occured : "+ mue, mue); return null; @@ -387,10 +365,7 @@ return null; } finally { try { - if(bis != null) bis.close(); if(is != null) is.close(); - if(bos != null) bos.close(); - if(fos != null) fos.close(); } catch (IOException ioe) {} } if(filename == null) Modified: trunk/freenet/src/freenet/support/io/FileUtil.java =================================================================== --- trunk/freenet/src/freenet/support/io/FileUtil.java 2007-06-30 00:58:11 UTC (rev 13840) +++ trunk/freenet/src/freenet/support/io/FileUtil.java 2007-06-30 01:21:28 UTC (rev 13841) @@ -4,10 +4,14 @@ package freenet.support.io; import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; +import java.io.FileOutputStream; import java.io.IOException; +import java.io.InputStream; import java.io.InputStreamReader; import freenet.client.DefaultMIMETypes; @@ -100,7 +104,37 @@ } return result.toString(); } + + public static boolean writeTo(InputStream input, File target) throws FileNotFoundException, IOException { + BufferedInputStream bis = null; + DataInputStream dis = null; + FileOutputStream fos = null; + BufferedOutputStream bos = null; + File file = File.createTempFile("temp", ".tmp"); + + try { + bis = new BufferedInputStream(input); + dis = new DataInputStream(bis); + fos = new FileOutputStream(file); + bos= new BufferedOutputStream(fos); + int len = 0; + byte[] buffer = new byte[4096]; + while ((len = dis.read(buffer)) > 0) { + bos.write(buffer, 0, len); + } + } catch (IOException e) { + throw e; + } finally { + if(dis != null) dis.close(); + if(bis != null) bis.close(); + if(fos != null) fos.close(); + if(bos != null) bos.close(); + } + + return file.renameTo(target); + } + public static String sanitize(String s) { StringBuffer sb = new StringBuffer(s.length()); for(int i=0;i<s.length();i++) {
