harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vasily Zakharov (JIRA)" <j...@apache.org>
Subject [jira] Created: (HARMONY-5477) [classlib][beans][geronimo] PropertyEditorManager.findEditor() used wrong classloader
Date Fri, 08 Feb 2008 17:08:07 GMT
[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:

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/")
            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: ");

class MyClass {

package myPackage;
public class MyClassEditor extends java.beans.PropertyEditorSupport {

Compiled {{MyClassEditor.class}} should be put to {{./editor/myPackage/MyClassEditor.class}}
for the test to work.

Output on RI:


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.

View raw message