/* 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]); } HelperClassLoader(ClassLoader parent) { super(new URL[0], parent); } /** * 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); } } }