remm        01/11/14 18:20:32

  Modified:    catalina/src/share/org/apache/catalina/loader
                        WebappClassLoader.java
  Log:
  - Fix 4830.
  
  Revision  Changes    Path
  1.28      +56 -47    
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java
  
  Index: WebappClassLoader.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- WebappClassLoader.java    2001/11/14 00:10:44     1.27
  +++ WebappClassLoader.java    2001/11/15 02:20:32     1.28
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java,v
 1.27 2001/11/14 00:10:44 remm Exp $
  - * $Revision: 1.27 $
  - * $Date: 2001/11/14 00:10:44 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java,v
 1.28 2001/11/15 02:20:32 remm Exp $
  + * $Revision: 1.28 $
  + * $Date: 2001/11/15 02:20:32 $
    *
    * ====================================================================
    *
  @@ -122,7 +122,7 @@
    *
    * @author Remy Maucherat
    * @author Craig R. McClanahan
  - * @version $Revision: 1.27 $ $Date: 2001/11/14 00:10:44 $
  + * @version $Revision: 1.28 $ $Date: 2001/11/15 02:20:32 $
    */
   public class WebappClassLoader
       extends URLClassLoader
  @@ -1546,7 +1546,7 @@
               entry = findResourceInternal(name, classPath);
           }
   
  -        if (entry == null)
  +        if ((entry == null) || (entry.binaryContent == null))
               throw new ClassNotFoundException(name);
   
           Class clazz = entry.loadedClass;
  @@ -1653,10 +1653,9 @@
                   String fullPath = repositories[i] + path;
   
                   Object lookupResult = resources.lookup(fullPath);
  -                if (!(lookupResult instanceof Resource))
  -                    continue;
  -
  -                resource = (Resource) lookupResult;
  +                if (lookupResult instanceof Resource) {
  +                    resource = (Resource) lookupResult;
  +                }
   
                   // Note : Not getting an exception here means the resource was
                   // found
  @@ -1671,30 +1670,36 @@
                       (ResourceAttributes) resources.getAttributes(fullPath);
                   contentLength = (int) attributes.getContentLength();
                   entry.lastModified = attributes.getLastModified();
  -                try {
  -                    binaryStream = resource.streamContent();
  -                } catch (IOException e) {
  -                    return null;
  -                }
   
  -                // Register the full path for modification checking
  -                synchronized (paths) {
  +                if (resource != null) {
   
  -                    int j;
  -
  -                    long[] result2 = new long[lastModifiedDates.length + 1];
  -                    for (j = 0; j < lastModifiedDates.length; j++) {
  -                        result2[j] = lastModifiedDates[j];
  +                    try {
  +                        binaryStream = resource.streamContent();
  +                    } catch (IOException e) {
  +                        return null;
                       }
  -                    result2[lastModifiedDates.length] = entry.lastModified;
  -                    lastModifiedDates = result2;
  +
  +                    // Register the full path for modification checking
  +                    synchronized (paths) {
  +
  +                        int j;
  +
  +                        long[] result2 = 
  +                            new long[lastModifiedDates.length + 1];
  +                        for (j = 0; j < lastModifiedDates.length; j++) {
  +                            result2[j] = lastModifiedDates[j];
  +                        }
  +                        result2[lastModifiedDates.length] = entry.lastModified;
  +                        lastModifiedDates = result2;
  +
  +                        String[] result = new String[paths.length + 1];
  +                        for (j = 0; j < paths.length; j++) {
  +                            result[j] = paths[j];
  +                        }
  +                        result[paths.length] = fullPath;
  +                        paths = result;
   
  -                    String[] result = new String[paths.length + 1];
  -                    for (j = 0; j < paths.length; j++) {
  -                        result[j] = paths[j];
                       }
  -                    result[paths.length] = fullPath;
  -                    paths = result;
   
                   }
   
  @@ -1741,27 +1746,31 @@
               return null;
           }
   
  -        byte[] binaryContent = new byte[contentLength];
  +        if (binaryStream != null) {
   
  -        try {
  -            int pos = 0;
  -            while (true) {
  -                int n = binaryStream.read(binaryContent, pos,
  -                                          binaryContent.length - pos);
  -                if (n <= 0)
  -                    break;
  -                pos += n;
  -            }
  -            binaryStream.close();
  -        } catch (IOException e) {
  -            e.printStackTrace();
  -            return null;
  -        } catch (Exception e) {
  -            e.printStackTrace();
  -            return null;
  -        }
  +            byte[] binaryContent = new byte[contentLength];
  +
  +            try {
  +                int pos = 0;
  +                while (true) {
  +                    int n = binaryStream.read(binaryContent, pos,
  +                                              binaryContent.length - pos);
  +                    if (n <= 0)
  +                        break;
  +                    pos += n;
  +                }
  +                binaryStream.close();
  +            } catch (IOException e) {
  +                e.printStackTrace();
  +                return null;
  +            } catch (Exception e) {
  +                e.printStackTrace();
  +                return null;
  +            }
  +
  +            entry.binaryContent = binaryContent;
   
  -        entry.binaryContent = binaryContent;
  +        }
   
           // Add the entry in the local resource repository
           synchronized (this) {
  
  
  

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

Reply via email to