diff options
author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-03-29 22:54:04 +0000 |
---|---|---|
committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-03-29 22:54:04 +0000 |
commit | 2e2d68d40ac0675a5749bc6f52ba393bbb15fe6c (patch) | |
tree | 2d4449e7e3a3876a2087356b50a265ed2e971520 /libjava | |
parent | 36fff22ec275c978af45966e60f3e2dc69fbef16 (diff) | |
download | gcc-2e2d68d40ac0675a5749bc6f52ba393bbb15fe6c.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@97212 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava')
-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 00000000000..9b81b522ffa --- /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); + } + } +} |