remm        2004/10/26 17:07:45

  Modified:    catalina/src/share/org/apache/catalina/loader
                        WebappClassLoader.java
  Log:
  - Fix condition which seems to not have been properly updated after adding 
entry.binaryContent = null a little below.
  - Remove useless sync trick.
  - Submitted by Joe Zhou as bug 31903.
  
  Revision  Changes    Path
  1.45      +17 -20    
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java
  
  Index: WebappClassLoader.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- WebappClassLoader.java    5 Oct 2004 16:46:15 -0000       1.44
  +++ WebappClassLoader.java    27 Oct 2004 00:07:45 -0000      1.45
  @@ -1566,7 +1566,8 @@
   
           entry = findResourceInternal(name, classPath);
   
  -        if ((entry == null) || (entry.binaryContent == null))
  +        if ((entry == null) || (entry.binaryContent == null
  +                && entry.loadedClass == null))
               throw new ClassNotFoundException(name);
   
           Class clazz = entry.loadedClass;
  @@ -1620,26 +1621,22 @@
   
           }
   
  -        if (entry.loadedClass == null) {
  -            synchronized (this) {
  -                if (entry.loadedClass == null) {
  -                    clazz = defineClass(name, entry.binaryContent, 0,
  -                                        entry.binaryContent.length, 
  -                                        codeSource);
  -                    entry.loadedClass = clazz;
  -                    entry.binaryContent = null;
  -                    entry.source = null;
  -                    entry.codeBase = null;
  -                    entry.manifest = null;
  -                    entry.certificates = null;
  -                } else {
  -                    clazz = entry.loadedClass;
  -                }
  +        synchronized (this) {
  +            if (entry.loadedClass == null) {
  +                clazz = defineClass(name, entry.binaryContent, 0,
  +                        entry.binaryContent.length, 
  +                        codeSource);
  +                entry.loadedClass = clazz;
  +                entry.binaryContent = null;
  +                entry.source = null;
  +                entry.codeBase = null;
  +                entry.manifest = null;
  +                entry.certificates = null;
  +            } else {
  +                clazz = entry.loadedClass;
               }
  -        } else {
  -            clazz = entry.loadedClass;
           }
  -
  +        
           return clazz;
   
       }
  
  
  

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

Reply via email to