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]

Reply via email to