leosutic 2003/08/12 14:59:05
Modified: attributes/api/src/java/org/apache/avalon/attributes
URLClassLoaderScanner.java
Log:
Fixed bug: JarFile wasn't closed.
Revision Changes Path
1.2 +21 -16
avalon-sandbox/attributes/api/src/java/org/apache/avalon/attributes/URLClassLoaderScanner.java
Index: URLClassLoaderScanner.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/attributes/api/src/java/org/apache/avalon/attributes/URLClassLoaderScanner.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- URLClassLoaderScanner.java 12 Aug 2003 00:09:18 -0000 1.1
+++ URLClassLoaderScanner.java 12 Aug 2003 21:59:05 -0000 1.2
@@ -16,25 +16,30 @@
return URLClassLoader.class;
}
- private Collection getAllClassesFromJarFile (ClassLoader cl, JarFile jar)
throws Exception {
- HashSet result = new HashSet ();
- Enumeration enum = jar.entries ();
- while (enum.hasMoreElements ()) {
- JarEntry entry = (JarEntry) enum.nextElement ();
- if (!entry.isDirectory ()) {
- String className = entry.getName ();
- if (className.endsWith (".class")) {
- className = className.substring (0, className.length () - 6);
- className.replace ('/', '.').replace ('\\', '.').replace (':',
'.');
- try {
- Class clazz = cl.loadClass (className);
- result.add (clazz);
- } catch (Exception e) {
+ private Collection getAllClassesFromJarFile (ClassLoader cl, File file) throws
Exception {
+ JarFile jar = new JarFile (file);
+ try {
+ HashSet result = new HashSet ();
+ Enumeration enum = jar.entries ();
+ while (enum.hasMoreElements ()) {
+ JarEntry entry = (JarEntry) enum.nextElement ();
+ if (!entry.isDirectory ()) {
+ String className = entry.getName ();
+ if (className.endsWith (".class")) {
+ className = className.substring (0, className.length () -
6);
+ className.replace ('/', '.').replace ('\\', '.').replace
(':', '.');
+ try {
+ Class clazz = cl.loadClass (className);
+ result.add (clazz);
+ } catch (Exception e) {
+ }
}
}
}
+ return result;
+ } finally {
+ jar.close ();
}
- return result;
}
private Collection getAllClassesFromDirectory (ClassLoader cl, File dir, String
prefix) throws Exception {
@@ -67,7 +72,7 @@
if (f.isDirectory ()) {
return getAllClassesFromDirectory (cl, f);
} else {
- return getAllClassesFromJarFile (cl, new JarFile (f));
+ return getAllClassesFromJarFile (cl, f);
}
} else {
return new ArrayList (0);
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]