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++) {


Reply via email to