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.