summaryrefslogtreecommitdiff
path: root/gnu/java/net
diff options
context:
space:
mode:
authorMichael Koch <konqueror@gmx.de>2004-01-04 21:10:42 +0000
committerMichael Koch <konqueror@gmx.de>2004-01-04 21:10:42 +0000
commitf26bbbb50440b176c2c52b4f77202f048c4ef1e0 (patch)
treedf8ac38597e4e405e9e2e7711011c650f8c84ecd /gnu/java/net
parent6b9b26d3ad7de847b0fde28390b1fbc25a579bc2 (diff)
downloadclasspath-f26bbbb50440b176c2c52b4f77202f048c4ef1e0.tar.gz
2004-01-04 Michael Koch <konqueror@gmx.de>
* java/net/JarURLConnection.java (jarFileURLConnection): New field. * gnu/java/net/protocol/jar/Connection.java (Connection): Made class final. (Connection): Made constructor protected. (getJarFile): Check doInput. (getInputStream): Likewise.
Diffstat (limited to 'gnu/java/net')
-rw-r--r--gnu/java/net/protocol/jar/Connection.java40
1 files changed, 24 insertions, 16 deletions
diff --git a/gnu/java/net/protocol/jar/Connection.java b/gnu/java/net/protocol/jar/Connection.java
index fd3f54bee..29b8bd694 100644
--- a/gnu/java/net/protocol/jar/Connection.java
+++ b/gnu/java/net/protocol/jar/Connection.java
@@ -44,6 +44,7 @@ import java.io.InputStream;
import java.io.IOException;
import java.net.JarURLConnection;
import java.net.MalformedURLException;
+import java.net.ProtocolException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Hashtable;
@@ -57,7 +58,7 @@ import java.util.zip.ZipFile;
*
* @author Kresten Krab Thorup <krab@gnu.org>
*/
-public class Connection extends JarURLConnection
+public final class Connection extends JarURLConnection
{
private JarFile jar_file;
private JarEntry jar_entry;
@@ -120,17 +121,18 @@ public class Connection extends JarURLConnection
}
}
- public Connection(URL url)
+ protected Connection(URL url)
throws MalformedURLException
{
super(url);
}
-
- public void connect() throws IOException
+
+ public synchronized void connect() throws IOException
{
+ // Call is ignored if already connected.
if (connected)
return;
-
+
jar_url = getJarFileURL();
jar_file = JarFileCache.get (jar_url);
String entry_name = getEntryName();
@@ -143,29 +145,35 @@ public class Connection extends JarURLConnection
if(jar_entry == null)
throw new IOException ("No entry for " + entry_name + " exists.");
}
-
+
connected = true;
}
-
- public JarFile getJarFile() throws IOException
- {
- if (!connected)
- connect();
-
- return jar_file;
- }
-
+
public InputStream getInputStream() throws IOException
{
if (!connected)
connect();
+
+ if (! doInput)
+ throw new ProtocolException("Can't open InputStream if doInput is false");
if (jar_entry == null)
throw new IOException (jar_url + " couldn't be found.");
return jar_file.getInputStream (jar_entry);
}
-
+
+ public synchronized JarFile getJarFile() throws IOException
+ {
+ if (!connected)
+ connect();
+
+ if (! doInput)
+ throw new ProtocolException("Can't open JarFile if doInput is false");
+
+ return jar_file;
+ }
+
public int getContentLength()
{
if (!connected)