aboutsummaryrefslogtreecommitdiff
path: root/libjava/java
diff options
context:
space:
mode:
authormkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4>2003-08-02 06:31:02 +0000
committermkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4>2003-08-02 06:31:02 +0000
commita690c9b3bc25330653ab86d5b29ca0845550a9ce (patch)
tree7b2f6e5c392024b377e477d45f23442dc5a9e8fa /libjava/java
parent1fb0405c117b75e57016134e185a4aa8bfb50873 (diff)
2003-08-02 Michael Koch <konqueror@gmx.de>
* java/net/URL.java (URL): Added paragraph about the gnu.java.net.nocache_protocol_handlers property. (ph_cache): Renamed from handlers to match classpath's implementation. Reordered it with factory and serialVersionUID member variables. (cache_handlers): New member variable. (static): New static initializer to initialize cache_handlers from gnu.java.net.nocache_protocol_handlers property. (URL): Use ph_cache instead of handlers, reformatted some code to match classpath's implementation. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@70098 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/java')
-rw-r--r--libjava/java/net/URL.java43
1 files changed, 34 insertions, 9 deletions
diff --git a/libjava/java/net/URL.java b/libjava/java/net/URL.java
index fa6f660ffb7..2db8c4dd1cd 100644
--- a/libjava/java/net/URL.java
+++ b/libjava/java/net/URL.java
@@ -98,6 +98,14 @@ import java.util.StringTokenizer;
* <p>
* Please note that a protocol handler must be a subclass of
* URLStreamHandler.
+ * <p>
+ * Normally, this class caches protocol handlers. Once it finds a handler
+ * for a particular protocol, it never tries to look up a new handler
+ * again. However, if the system property
+ * gnu.java.net.nocache_protocol_handlers is set, then this
+ * caching behavior is disabled. This property is specific to this
+ * implementation. Sun's JDK may or may not do protocol caching, but it
+ * almost certainly does not examine this property.
*
* @author Aaron M. Renn <arenn@urbanophile.com>
* @author Warren Levy <warrenl@cygnus.com>
@@ -150,18 +158,32 @@ public final class URL implements Serializable
transient URLStreamHandler ph;
/**
+ * If an application installs its own protocol handler factory, this is
+ * where we keep track of it.
+ */
+ private static URLStreamHandlerFactory factory;
+
+ private static final long serialVersionUID = -7627629688361524110L;
+
+ /**
* This a table where we cache protocol handlers to avoid the overhead
* of looking them up each time.
*/
- private static Hashtable handlers = new Hashtable();
+ private static Hashtable ph_cache = new Hashtable();
/**
- * If an application installs its own protocol handler factory, this is
- * where we keep track of it.
+ * Whether or not to cache protocol handlers.
*/
- private static URLStreamHandlerFactory factory;
+ private static boolean cache_handlers;
- private static final long serialVersionUID = -7627629688361524110L;
+ static
+ {
+ String s = System.getProperty("gnu.java.net.nocache_protocol_handlers");
+ if (s == null)
+ cache_handlers = true;
+ else
+ cache_handlers = false;
+ }
/**
* Constructs a URL and loads a protocol handler for the values passed as
@@ -732,12 +754,14 @@ public final class URL implements Serializable
URLStreamHandler ph;
// See if a handler has been cached for this protocol.
- if ((ph = (URLStreamHandler) handlers.get(protocol)) != null)
+ if ((ph = (URLStreamHandler) ph_cache.get(protocol)) != null)
return ph;
// If a non-default factory has been set, use it to find the protocol.
if (factory != null)
- ph = factory.createURLStreamHandler(protocol);
+ {
+ ph = factory.createURLStreamHandler(protocol);
+ }
else if (protocol.equals ("core"))
{
ph = new gnu.gcj.protocol.core.Handler ();
@@ -788,9 +812,10 @@ public final class URL implements Serializable
}
// Update the hashtable with the new protocol handler.
- if (ph != null)
+ if (ph != null
+ && cache_handlers)
if (ph instanceof URLStreamHandler)
- handlers.put(protocol, ph);
+ ph_cache.put(protocol, ph);
else
ph = null;