diff options
author | gary <gary@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-01-15 10:25:38 +0000 |
---|---|---|
committer | gary <gary@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-01-15 10:25:38 +0000 |
commit | 1b6d342ee8adef6fef52f76be20dc6e4d39f6938 (patch) | |
tree | 4fd1e5d43e9e9e5d5e92941734f010014917598e /libjava/gnu/java/net/loader/Load_gcjlib.java | |
parent | ac8d4d796aa34fbea4dfb1505840689faba5ec1f (diff) | |
download | ppe42-gcc-1b6d342ee8adef6fef52f76be20dc6e4d39f6938.tar.gz ppe42-gcc-1b6d342ee8adef6fef52f76be20dc6e4d39f6938.zip |
2007-01-15 Gary Benson <gbenson@redhat.com>
* java/net/URLClassLoader.java: Removed.
* gnu/java/net/loader/Load_gcjlib.java: New file.
* gnu/gcj/runtime/BootClassLoader.java: Ensure core
URL handler is present in static executables.
* sources.am, Makefile.in: Rebuilt.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120791 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/gnu/java/net/loader/Load_gcjlib.java')
-rw-r--r-- | libjava/gnu/java/net/loader/Load_gcjlib.java | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/libjava/gnu/java/net/loader/Load_gcjlib.java b/libjava/gnu/java/net/loader/Load_gcjlib.java new file mode 100644 index 00000000000..ea392041f91 --- /dev/null +++ b/libjava/gnu/java/net/loader/Load_gcjlib.java @@ -0,0 +1,77 @@ +/* Copyright (C) 2007 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package gnu.java.net.loader; + +import gnu.gcj.runtime.SharedLibHelper; +import java.io.InputStream; +import java.io.IOException; +import java.net.URL; +import java.net.URLClassLoader; +import java.net.URLConnection; +import java.net.URLStreamHandlerFactory; + +/** + * A <code>Load_gcjlib</code> is a type of <code>URLLoader</code> + * that loads classes and resources from a shared library. + */ +public final class Load_gcjlib extends URLLoader +{ + private SharedLibHelper helper; + + public Load_gcjlib(URLClassLoader classloader, + URLStreamHandlerCache cache, + URLStreamHandlerFactory factory, + URL url, URL absoluteUrl) + { + super(classloader, cache, factory, url, absoluteUrl); + helper = SharedLibHelper.findHelper(classloader, url.getFile(), + noCertCodeSource, true); + } + + public Class getClass(String className) + { + return helper.findClass(className); + } + + public Resource getResource(String name) + { + URL url = helper.findResource(name); + if (url == null) + return null; + return new SoResource(this, url); + } + + final static class SoResource extends Resource + { + private final URL url; + + SoResource(Load_gcjlib loader, URL url) + { + super(loader); + this.url = url; + } + + public InputStream getInputStream() throws IOException + { + URLConnection conn = url.openConnection(); + return conn.getInputStream(); + } + + public int getLength() + { + // FIXME we could find this by asking the core object. + return -1; + } + + public URL getURL () + { + return url; + } + } +} |