OSDN Git Service

2003-08-02 Michael Koch <konqueror@gmx.de>
authormkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 2 Aug 2003 06:31:02 +0000 (06:31 +0000)
committermkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 2 Aug 2003 06:31:02 +0000 (06:31 +0000)
* 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

libjava/ChangeLog
libjava/java/net/URL.java

index 71b863f..b497299 100644 (file)
@@ -1,3 +1,16 @@
+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.
+
 2003-08-01  Tom Tromey  <tromey@redhat.com>
 
        Fix for PR libgcj/11241:
index fa6f660..2db8c4d 100644 (file)
@@ -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;