peterreilly    2004/01/19 08:48:44

  Modified:    src/main/org/apache/tools/ant/loader Tag: ANT_16_BRANCH
                        AntClassLoader2.java
  Log:
  sync with HEAD
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.7.2.1   +41 -26    
ant/src/main/org/apache/tools/ant/loader/AntClassLoader2.java
  
  Index: AntClassLoader2.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/main/org/apache/tools/ant/loader/AntClassLoader2.java,v
  retrieving revision 1.7
  retrieving revision 1.7.2.1
  diff -u -r1.7 -r1.7.2.1
  --- AntClassLoader2.java      17 Jul 2003 10:36:27 -0000      1.7
  +++ AntClassLoader2.java      19 Jan 2004 16:48:44 -0000      1.7.2.1
  @@ -1,7 +1,7 @@
   /*
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 2003 The Apache Software Foundation.  All rights
  + * Copyright (c) 2003-2004 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -68,6 +68,9 @@
   import java.net.URL;
   import java.net.MalformedURLException;
   import java.util.zip.ZipEntry;
  +import java.util.Collections;
  +import java.util.HashMap;
  +import java.util.Map;
   import java.util.StringTokenizer;
   import org.apache.tools.ant.util.FileUtils;
   
  @@ -81,6 +84,9 @@
       /** Instance of a utility class to use for file operations. */
       private FileUtils fileUtils;
   
  +    /** Static map of jar file/time to manifiest class-path entries */
  +    private static Map pathMap = Collections.synchronizedMap(new HashMap());
  +
       /**
        * Constructor
        */
  @@ -272,36 +278,45 @@
               return;
           }
   
  -        String classpath = null;
  -        ZipFile jarFile = null;
  -        InputStream manifestStream = null;
  -        try {
  -            jarFile = new ZipFile(pathComponent);
  -            manifestStream
  -                = jarFile.getInputStream(new 
ZipEntry("META-INF/MANIFEST.MF"));
  -
  -            if (manifestStream == null) {
  -                return;
  -            }
  -            Reader manifestReader
  -                = new InputStreamReader(manifestStream, "UTF-8");
  -            org.apache.tools.ant.taskdefs.Manifest manifest
  -                = new org.apache.tools.ant.taskdefs.Manifest(manifestReader);
  -            classpath
  -                = manifest.getMainSection().getAttributeValue("Class-Path");
  +        String absPathPlusTimeAndLength =
  +            pathComponent.getAbsolutePath() + pathComponent.lastModified() + 
"-"
  +            + pathComponent.length();
  +        String classpath = (String) pathMap.get(absPathPlusTimeAndLength);
  +        if (classpath == null) {
  +            ZipFile jarFile = null;
  +            InputStream manifestStream = null;
  +            try {
  +                jarFile = new ZipFile(pathComponent);
  +                manifestStream
  +                    = jarFile.getInputStream(new 
ZipEntry("META-INF/MANIFEST.MF"));
  +
  +                if (manifestStream == null) {
  +                    return;
  +                }
  +                Reader manifestReader
  +                    = new InputStreamReader(manifestStream, "UTF-8");
  +                org.apache.tools.ant.taskdefs.Manifest manifest
  +                    = new 
org.apache.tools.ant.taskdefs.Manifest(manifestReader);
  +                classpath
  +                    = 
manifest.getMainSection().getAttributeValue("Class-Path");
   
  -        } catch (org.apache.tools.ant.taskdefs.ManifestException e) {
  -            // ignore
  -        } finally {
  -            if (manifestStream != null) {
  -                manifestStream.close();
  +            } catch (org.apache.tools.ant.taskdefs.ManifestException e) {
  +                // ignore
  +            } finally {
  +                if (manifestStream != null) {
  +                    manifestStream.close();
  +                }
  +                if (jarFile != null) {
  +                    jarFile.close();
  +                }
               }
  -            if (jarFile != null) {
  -                jarFile.close();
  +            if (classpath == null) {
  +                classpath = "";
               }
  +            pathMap.put(absPathPlusTimeAndLength, classpath);
           }
   
  -        if (classpath != null) {
  +        if (!"".equals(classpath)) {
               URL baseURL = fileUtils.getFileURL(pathComponent);
               StringTokenizer st = new StringTokenizer(classpath);
               while (st.hasMoreTokens()) {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to