From 5ef0d62ff1115c8a8fccffc6c8abfb3133631cdb Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Tue, 29 Mar 2005 22:54:04 +0000 Subject: [PATCH] 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 --- .../gnu/gcj/runtime/HelperClassLoader.java | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 libjava/gnu/gcj/runtime/HelperClassLoader.java 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); + } + } +}