diff options
author | Michael Koch <konqueror@gmx.de> | 2003-09-27 12:38:05 +0000 |
---|---|---|
committer | Michael Koch <mkoch@gcc.gnu.org> | 2003-09-27 12:38:05 +0000 |
commit | 4ada1976c90d133790ae647ef649b4aab7d2b487 (patch) | |
tree | bd343e17cde3ce8c7460374042e97685cbdf6aa0 /libjava | |
parent | 9415397d87dbecbdd0d2e96e6c57098494012f6b (diff) | |
download | gcc-4ada1976c90d133790ae647ef649b4aab7d2b487.zip gcc-4ada1976c90d133790ae647ef649b4aab7d2b487.tar.gz gcc-4ada1976c90d133790ae647ef649b4aab7d2b487.tar.bz2 |
URL.java (getURLStreamHandler): Check if we have to use cache before trying to retrieve handler from cache.
2003-09-27 Michael Koch <konqueror@gmx.de>
* java/net/URL.java (getURLStreamHandler):
Check if we have to use cache before trying to retrieve handler from
cache. Rename facName to clsName to match classpath more. Reformated
some little pieces.
From-SVN: r71852
Diffstat (limited to 'libjava')
-rw-r--r-- | libjava/ChangeLog | 7 | ||||
-rw-r--r-- | libjava/java/net/URL.java | 53 |
2 files changed, 39 insertions, 21 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 7a6d4bf..8cd4e1e 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,5 +1,12 @@ 2003-09-27 Michael Koch <konqueror@gmx.de> + * java/net/URL.java (getURLStreamHandler): + Check if we have to use cache before trying to retrieve handler from + cache. Rename facName to clsName to match classpath more. Reformated + some little pieces. + +2003-09-27 Michael Koch <konqueror@gmx.de> + * gnu/java/nio/SelectionKeyImpl.java (ch): Make package-private again. Jikes found this bug. Jeff Sturm submitted PR12426 for this to bugzilla diff --git a/libjava/java/net/URL.java b/libjava/java/net/URL.java index 2db8c4d..0e0f318 100644 --- a/libjava/java/net/URL.java +++ b/libjava/java/net/URL.java @@ -753,18 +753,21 @@ public final class URL implements Serializable { URLStreamHandler ph; - // See if a handler has been cached for this protocol. - if ((ph = (URLStreamHandler) ph_cache.get(protocol)) != null) - return ph; + // First, see if a protocol handler is in our cache. + if (cache_handlers) + { + 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 (); + ph = new gnu.gcj.protocol.core.Handler(); } else if (protocol.equals ("file")) { @@ -778,7 +781,7 @@ public final class URL implements Serializable // fix this problem. If other protocols are required in a // statically linked application they will need to be handled in // the same way as "file". - ph = new gnu.gcj.protocol.file.Handler (); + ph = new gnu.gcj.protocol.file.Handler(); } // Non-default factory may have returned null or a factory wasn't set. @@ -793,22 +796,30 @@ public final class URL implements Serializable propVal = (propVal == null) ? "" : (propVal + "|"); propVal = propVal + "gnu.gcj.protocol|sun.net.www.protocol"; - StringTokenizer pkgPrefix = new StringTokenizer(propVal, "|"); + // Finally loop through our search path looking for a match. + StringTokenizer pkgPrefix = new StringTokenizer (ph_search_path, "|"); + do - { - String facName = pkgPrefix.nextToken() + "." + protocol + - ".Handler"; - try - { - ph = (URLStreamHandler) Class.forName(facName).newInstance(); - } - catch (Exception e) - { - // Can't instantiate; handler still null, go on to next element. - } - } while ((ph == null || - ! (ph instanceof URLStreamHandler)) && - pkgPrefix.hasMoreTokens()); + { + String clsName = pkgPrefix.nextToken() + "." + protocol + ".Handler"; + + try + { + Object obj = Class.forName (clsName).newInstance(); + + if (!(obj instanceof URLStreamHandler)) + continue; + else + ph = (URLStreamHandler) obj; + } + catch (Exception e) + { + // Can't instantiate; handler still null, go on to next element. + } + } + while ((ph == null || + !(ph instanceof URLStreamHandler)) + && pkgPrefix.hasMoreTokens()); } // Update the hashtable with the new protocol handler. |