org.apache.tuscany.sca.contribution.service.util
Class IOHelper.SafeURLInputStream

java.lang.Object
  extended by java.io.InputStream
      extended by org.apache.tuscany.sca.contribution.service.util.IOHelper.SafeURLInputStream
All Implemented Interfaces:
java.io.Closeable
Enclosing class:
IOHelper

public static class IOHelper.SafeURLInputStream
extends java.io.InputStream

This class is a workaround for URL stream issue as illustrated below. InputStream is=url.getInputStream(); is.close(); // This line doesn't close the JAR file if the URL is a jar entry like "jar:file:/a.jar!/my.composite" We also need to turn off the JarFile cache.

See Also:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4950148

Constructor Summary
IOHelper.SafeURLInputStream(java.net.JarURLConnection connection)
           
IOHelper.SafeURLInputStream(java.net.URL url)
           
 
Method Summary
 int available()
           
 void close()
           
 void mark(int readlimit)
           
 boolean markSupported()
           
 int read()
           
 int read(byte[] b)
           
 int read(byte[] b, int off, int len)
           
 void reset()
           
 long skip(long n)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

IOHelper.SafeURLInputStream

public IOHelper.SafeURLInputStream(java.net.URL url)
                            throws java.io.IOException
Throws:
java.io.IOException

IOHelper.SafeURLInputStream

public IOHelper.SafeURLInputStream(java.net.JarURLConnection connection)
                            throws java.io.IOException
Throws:
java.io.IOException
Method Detail

available

public int available()
              throws java.io.IOException
Overrides:
available in class java.io.InputStream
Throws:
java.io.IOException

close

public void close()
           throws java.io.IOException
Specified by:
close in interface java.io.Closeable
Overrides:
close in class java.io.InputStream
Throws:
java.io.IOException

mark

public void mark(int readlimit)
Overrides:
mark in class java.io.InputStream

markSupported

public boolean markSupported()
Overrides:
markSupported in class java.io.InputStream

read

public int read()
         throws java.io.IOException
Specified by:
read in class java.io.InputStream
Throws:
java.io.IOException

read

public int read(byte[] b,
                int off,
                int len)
         throws java.io.IOException
Overrides:
read in class java.io.InputStream
Throws:
java.io.IOException

read

public int read(byte[] b)
         throws java.io.IOException
Overrides:
read in class java.io.InputStream
Throws:
java.io.IOException

reset

public void reset()
           throws java.io.IOException
Overrides:
reset in class java.io.InputStream
Throws:
java.io.IOException

skip

public long skip(long n)
          throws java.io.IOException
Overrides:
skip in class java.io.InputStream
Throws:
java.io.IOException