From: Michael Koch Date: Sat, 2 Aug 2003 06:31:02 +0000 (+0000) Subject: 2003-08-02 Michael Koch X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=15b68e0201298c5b54ec278f3ee223075d3b3134;p=gcc.git 2003-08-02 Michael Koch * 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. From-SVN: r70098 --- diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 71b863f2679..b497299a81f 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,16 @@ +2003-08-02 Michael Koch + + * 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. + 2003-08-01 Tom Tromey Fix for PR libgcj/11241: 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; *

* Please note that a protocol handler must be a subclass of * URLStreamHandler. + *

+ * 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 * @author Warren Levy @@ -149,19 +157,33 @@ 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;