You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Vasily Zakharov (JIRA)" <ji...@apache.org> on 2008/02/08 18:14:08 UTC

[jira] Updated: (HARMONY-5477) [classlib][beans][geronimo] PropertyEditorManager.findEditor() used wrong classloader

     [ https://issues.apache.org/jira/browse/HARMONY-5477?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Vasily Zakharov updated HARMONY-5477:
-------------------------------------

    Comment: was deleted

> [classlib][beans][geronimo] PropertyEditorManager.findEditor() used wrong classloader
> -------------------------------------------------------------------------------------
>
>                 Key: HARMONY-5477
>                 URL: https://issues.apache.org/jira/browse/HARMONY-5477
>             Project: Harmony
>          Issue Type: Bug
>          Components: App-Oriented Bug Reports, Classlib
>    Affects Versions: 5.0M5
>            Reporter: Vasily Zakharov
>            Assignee: Vasily Zakharov
>
> PropertyEditorManager.findEditor() always uses the target class loader to locate the editor, while it should use thread context class loader when a particular editor is not found the the target class loader.
> Here's the test demonstrating the problem:
> {code:java}
> import java.beans.*;
> import java.net.*;
> public class Test {
>     public static void main(String[] args) {
>         try {
>             PropertyEditorManager.setEditorSearchPath(new String[] { "myPackage" });
>             ClassLoader editorLoader = new URLClassLoader(new URL[] { new URL("file:./editor/") });
>             Thread.currentThread().setContextClassLoader(editorLoader);
>             PropertyEditor editor = PropertyEditorManager.findEditor(MyClass.class);
>             if (editor == null) {
>                 System.out.println("FAIL: null");
>             } else {
>                 String editorName = editor.getClass().getName();
>                 System.out.println(editorName.equals("myPackage.MyClassEditor") ? "SUCCESS" : ("FAIL: " + editorName));
>             }
>         } catch (Throwable e) {
>             System.out.print("ERROR: ");
>             e.printStackTrace(System.out);
>         }
>     }
> }
> class MyClass {
> }
> {code}
> {code:java}
> package myPackage;
> public class MyClassEditor extends java.beans.PropertyEditorSupport {
> }
> {code}
> Compiled {{MyClassEditor.class}} should be put to {{./editor/myPackage/MyClassEditor.class}} for the test to work.
> Output on RI:
> {code}SUCCESS{code}
> Output on Harmony:
> {code}FAIL: null{code}
> The reason the test fails is the editor is available in other classloader than the original class. That classloader is preliminarily specified by {{Thread.currentThread().setContextClassLoader()}}, but Harmony implementation doesn't use it. To fix, the classloader handling mechanism in {{PropertyEditorManager.findEditor()}} needs to be changed.
> This testcase was derived from {{org.apache.geronimo.common.propertyeditor.PropertyEditors.findEditor(String, ClassLoader)}} method.
> This issue prevents Geronimo 2.1-snapshot from starting on Harmony.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.