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]>