diff options
author | Tom Tromey <tromey@gcc.gnu.org> | 2005-03-29 22:54:04 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2005-03-29 22:54:04 +0000 |
commit | 5ef0d62ff1115c8a8fccffc6c8abfb3133631cdb (patch) | |
tree | 2d4449e7e3a3876a2087356b50a265ed2e971520 /libjava/gnu/gcj | |
parent | 0e2ea9b837fb49cf04ac6ed974c717030d39be44 (diff) | |
download | gcc-5ef0d62ff1115c8a8fccffc6c8abfb3133631cdb.zip gcc-5ef0d62ff1115c8a8fccffc6c8abfb3133631cdb.tar.gz gcc-5ef0d62ff1115c8a8fccffc6c8abfb3133631cdb.tar.bz2 |
natRuntime.cc (insertSystemProperties): Set gnu.gcj.runtime.endorsed.dirs.
libjava:
* java/lang/natRuntime.cc (insertSystemProperties): Set
gnu.gcj.runtime.endorsed.dirs.
* Makefile.in: Rebuilt.
* Makefile.am (ordinary_java_source_files): Added
HelperClassLoader.java.
(AM_CXXFLAGS): Define GCJ_ENDORSED_DIRS.
* gnu/gcj/runtime/VMClassLoader.java (VMClassLoader): Extends
HelperClassLoader.
(init): Use addDirectoriesFromProperty.
* gnu/gcj/runtime/BootClassLoader.java (BootClassLoader): Extends
HelperClassLoader. Use addDirectoriesFromProperty. Handle
gnu.gcj.runtime.endorsed.dirs.
* gnu/gcj/runtime/HelperClassLoader.java: New file.
gcc/java:
* gcj.texi (libgcj Runtime Properties): Document
gnu.gcj.runtime.endorsed.dirs.
From-SVN: r97212
Diffstat (limited to 'libjava/gnu/gcj')
-rw-r--r-- | libjava/gnu/gcj/runtime/HelperClassLoader.java | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/libjava/gnu/gcj/runtime/HelperClassLoader.java b/libjava/gnu/gcj/runtime/HelperClassLoader.java new file mode 100644 index 0000000..9b81b52 --- /dev/null +++ b/libjava/gnu/gcj/runtime/HelperClassLoader.java @@ -0,0 +1,67 @@ +/* Copyright (C) 2005 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.File; +import java.io.FilenameFilter; +import java.io.IOException; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.StringTokenizer; + +/** + * This is a URLClassLoader that has an extra helper method for + * handling things like java.ext.dirs. + */ +class HelperClassLoader extends URLClassLoader +{ + HelperClassLoader() + { + super(new URL[0]); + } + + /** + * This is a helper method that adds all the jar and zip files from + * a given list of paths to this class loader. The paths are taken + * from a system property whose name is provided as an argument. + */ + final void addDirectoriesFromProperty(String propName) + { + StringTokenizer st + = new StringTokenizer (System.getProperty (propName, ""), + File.pathSeparator); + try + { + while (st.hasMoreElements ()) + { + String dirname = st.nextToken (); + File dir = new File (dirname); + if (dir.exists ()) + { + if (! dirname.endsWith (File.separator)) + dirname = dirname + File.separator; + String files[] = dir.list (new FilenameFilter () + { + public boolean accept (File dir, String name) + { + return name.endsWith (".jar") || name.endsWith (".zip"); + } + }); + for (int i = files.length - 1; i >= 0; i--) + addURL(new URL("file", "", -1, dirname + files[i])); + } + } + } + catch (java.net.MalformedURLException x) + { + // This should never happen. + throw new RuntimeException(x); + } + } +} |