You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by "Rice Yeh (JIRA)" <ji...@apache.org> on 2006/09/27 11:47:50 UTC

[jira] Created: (COCOON-1921) A bug in org.apache.cocoon.classloader.DefaultClassLoader

A bug in org.apache.cocoon.classloader.DefaultClassLoader
---------------------------------------------------------

                 Key: COCOON-1921
                 URL: http://issues.apache.org/jira/browse/COCOON-1921
             Project: Cocoon
          Issue Type: Bug
          Components: * Cocoon Core
    Affects Versions: 2.2-dev (Current SVN)
            Reporter: Rice Yeh


On the implementation of loadClass(String name, boolean resolve) in DefaultClassLoader , when there is no class found in child (that is, this classloader) classloader, the parent's loadClass() method is called. However, on present implementation it is parent.loadClass(name) called, which is the java.lang.ClassLoader's loadClass() called and it uses parent-first loading strategy. In order to use child-first strategy (if the parent is also a DefaultClassLoader), the following patch should be applied:

Index: C:/apache/cocoon.home/svn/trunk/core/cocoon-bootstrap/src/main/java/org/apache/cocoon/classloader/DefaultClassLoader.java
===================================================================
--- C:/apache/cocoon.home/svn/trunk/core/cocoon-bootstrap/src/main/java/org/apache/cocoon/classloader/DefaultClassLoader.java	(revision 449580)
+++ C:/apache/cocoon.home/svn/trunk/core/cocoon-bootstrap/src/main/java/org/apache/cocoon/classloader/DefaultClassLoader.java	(working copy)
@@ -130,7 +130,10 @@
                     throw new ClassNotFoundException(name);
                 } else {
                     // Will throw a CFNE if not found in parent
-                    clazz = parent.loadClass(name);
+                	if (parent instanceof DefaultClassLoader)
+                		clazz = ((DefaultClassLoader) parent).loadClass(name, resolve);
+                	else
+                		clazz = parent.loadClass(name);
                 }
             }
         }


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Closed: (COCOON-1921) A bug in org.apache.cocoon.classloader.DefaultClassLoader

Posted by "Carsten Ziegeler (JIRA)" <ji...@apache.org>.
     [ http://issues.apache.org/jira/browse/COCOON-1921?page=all ]

Carsten Ziegeler closed COCOON-1921.
------------------------------------

    Resolution: Won't Fix

We discussed this some time ago on the mailing list: the patch is not required

> A bug in org.apache.cocoon.classloader.DefaultClassLoader
> ---------------------------------------------------------
>
>                 Key: COCOON-1921
>                 URL: http://issues.apache.org/jira/browse/COCOON-1921
>             Project: Cocoon
>          Issue Type: Bug
>          Components: * Cocoon Core
>    Affects Versions: 2.2-dev (Current SVN)
>            Reporter: Rice Yeh
>
> On the implementation of loadClass(String name, boolean resolve) in DefaultClassLoader , when there is no class found in child (that is, this classloader) classloader, the parent's loadClass() method is called. However, on present implementation it is parent.loadClass(name) called, which is the java.lang.ClassLoader's loadClass() called and it uses parent-first loading strategy. In order to use child-first strategy (if the parent is also a DefaultClassLoader), the following patch should be applied:
> Index: C:/apache/cocoon.home/svn/trunk/core/cocoon-bootstrap/src/main/java/org/apache/cocoon/classloader/DefaultClassLoader.java
> ===================================================================
> --- C:/apache/cocoon.home/svn/trunk/core/cocoon-bootstrap/src/main/java/org/apache/cocoon/classloader/DefaultClassLoader.java	(revision 449580)
> +++ C:/apache/cocoon.home/svn/trunk/core/cocoon-bootstrap/src/main/java/org/apache/cocoon/classloader/DefaultClassLoader.java	(working copy)
> @@ -130,7 +130,10 @@
>                      throw new ClassNotFoundException(name);
>                  } else {
>                      // Will throw a CFNE if not found in parent
> -                    clazz = parent.loadClass(name);
> +                	if (parent instanceof DefaultClassLoader)
> +                		clazz = ((DefaultClassLoader) parent).loadClass(name, resolve);
> +                	else
> +                		clazz = parent.loadClass(name);
>                  }
>              }
>          }

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira