On Monday 22 December 2008 10:17, j16sdiz at freenetproject.org wrote:
> Author: j16sdiz
> Date: 2008-12-22 10:17:00 +0000 (Mon, 22 Dec 2008)
> New Revision: 24728
> 
> Modified:
>    trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
>    trunk/freenet/src/freenet/support/JarClassLoader.java
> Log:
> force close the jar file when plugin unload

Is it safe to close it when the only reason we want to close it is it's not 
unloading properly?
> 
> Modified: trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
> ===================================================================
> --- trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java    
2008-12-22 09:52:06 UTC (rev 24727)
> +++ trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java    
2008-12-22 10:17:00 UTC (rev 24728)
> @@ -4,7 +4,9 @@
>  import java.util.HashSet;
>  
>  import freenet.l10n.L10n;
> +import freenet.support.JarClassLoader;
>  import freenet.support.Logger;
> +import freenet.support.io.Closer;
>  
>  public class PluginInfoWrapper {
>  
> @@ -130,6 +132,13 @@
>                               }
>                       }
>               }
> +             
> +             // Close the jar file, so we may delete / reload it
> +             ClassLoader cl = plug.getClass().getClassLoader();
> +             if (cl instanceof JarClassLoader) {
> +                     Closer.close((JarClassLoader) cl);
> +             }
> +             
>               // always remove plugin
>               manager.removePlugin(this);
>       }
> 
> Modified: trunk/freenet/src/freenet/support/JarClassLoader.java
> ===================================================================
> --- trunk/freenet/src/freenet/support/JarClassLoader.java     2008-12-22 
09:52:06 UTC (rev 24727)
> +++ trunk/freenet/src/freenet/support/JarClassLoader.java     2008-12-22 
10:17:00 UTC (rev 24728)
> @@ -19,6 +19,7 @@
>  package freenet.support;
>  
>  import java.io.ByteArrayOutputStream;
> +import java.io.Closeable;
>  import java.io.File;
>  import java.io.FileOutputStream;
>  import java.io.IOException;
> @@ -38,7 +39,7 @@
>   * @author <a href="mailto:dr at ina-germany.de">David Roden</a>
>   * @version $Id$
>   */
> -public class JarClassLoader extends ClassLoader {
> +public class JarClassLoader extends ClassLoader implements Closeable {
>  
>       /** The temporary jar file. */
>       private JarFile tempJarFile;
> @@ -166,4 +167,7 @@
>               return name.replace('.', '/') + ".class";
>       }
>  
> +     public void close() throws IOException {
> +             tempJarFile.close();
> +     }
>  }
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 827 bytes
Desc: not available
URL: 
<https://emu.freenetproject.org/pipermail/devl/attachments/20090110/b8ce3c00/attachment.pgp>

Reply via email to