summaryrefslogtreecommitdiff
path: root/libjava/gnu/gcj/runtime/SharedLibLoader.java
diff options
context:
space:
mode:
authorupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
committerupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
commit554fd8c5195424bdbcabf5de30fdc183aba391bd (patch)
tree976dc5ab7fddf506dadce60ae936f43f58787092 /libjava/gnu/gcj/runtime/SharedLibLoader.java
downloadcbb-gcc-4.6.4-upstream.tar.bz2
cbb-gcc-4.6.4-upstream.tar.xz
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository.
Diffstat (limited to 'libjava/gnu/gcj/runtime/SharedLibLoader.java')
-rw-r--r--libjava/gnu/gcj/runtime/SharedLibLoader.java79
1 files changed, 79 insertions, 0 deletions
diff --git a/libjava/gnu/gcj/runtime/SharedLibLoader.java b/libjava/gnu/gcj/runtime/SharedLibLoader.java
new file mode 100644
index 000000000..b8e6a57de
--- /dev/null
+++ b/libjava/gnu/gcj/runtime/SharedLibLoader.java
@@ -0,0 +1,79 @@
+/* Copyright (C) 2001, 2003 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.gcj.runtime;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.security.CodeSource;
+import java.util.Enumeration;
+import java.util.Vector;
+
+/**
+ * A ClassLoader backed by a gcj-compiled shared library.
+ * @author Per Bothner <per@bothner.com>, Brainfood Inc.
+ */
+
+public class SharedLibLoader extends ClassLoader
+{
+ /** Load a shared library, and associate a ClassLoader with it.
+ * @param libname named of shared library (passed to dlopen)
+ * @param parent the parent ClassLoader
+ * @parem flags passed to dlopen
+ */
+ public SharedLibLoader(String libname, ClassLoader parent, int flags)
+ {
+ super(parent);
+ URL url;
+ try
+ {
+ url = new URL("file", "", libname);
+ }
+ catch (MalformedURLException _)
+ {
+ url = null;
+ }
+ helper = SharedLibHelper.findHelper(this, libname,
+ new CodeSource(url, null), true);
+ }
+
+ /** Load a shared library, and asociate a ClassLoader with it.
+ * @param libname named of shared library (passed to dlopen)
+ */
+ public SharedLibLoader(String libname)
+ {
+ this(libname, getSystemClassLoader(), 0);
+ }
+
+ public Class findClass(String name)
+ throws ClassNotFoundException
+ {
+ Class cls = helper.findClass(name);
+ if (cls == null)
+ throw new ClassNotFoundException(name);
+ return cls;
+ }
+
+ public URL findResource (String name)
+ {
+ return helper.findResource(name);
+ }
+
+ public Enumeration findResources (String name) throws IOException
+ {
+ URL url = findResource(name);
+ if (url == null)
+ return null;
+ Vector v = new Vector(1);
+ v.add(url);
+ return v.elements();
+ }
+
+ /** The helper that does the work for us. */
+ SharedLibHelper helper;
+}