You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by vm...@apache.org on 2008/02/12 15:11:11 UTC

svn commit: r620812 - in /harmony/enhanced/classlib/trunk/modules/beans/src/test: java/org/apache/harmony/beans/tests/java/beans/PropertyEditorManagerRegressionTest.java resources/binary/java/beans/mock/TestClassEditor.bin

Author: vmz
Date: Tue Feb 12 06:11:08 2008
New Revision: 620812

URL: http://svn.apache.org/viewvc?rev=620812&view=rev
Log:
HARMONY-5477 [classlib][beans][geronimo] PropertyEditorManager.findEditor() uses wrong classloader
Regression test added
Also added TestClassEditor.bin file which is needed for test and is a class file for:

package testPackage;
public class TestClassEditor extends java.beans.PropertyEditorSupport {
}

Added:
    harmony/enhanced/classlib/trunk/modules/beans/src/test/resources/binary/java/beans/mock/TestClassEditor.bin   (with props)
Modified:
    harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/PropertyEditorManagerRegressionTest.java

Modified: harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/PropertyEditorManagerRegressionTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/PropertyEditorManagerRegressionTest.java?rev=620812&r1=620811&r2=620812&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/PropertyEditorManagerRegressionTest.java (original)
+++ harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/PropertyEditorManagerRegressionTest.java Tue Feb 12 06:11:08 2008
@@ -20,6 +20,8 @@
 import java.awt.Color;
 import java.beans.PropertyEditor;
 import java.beans.PropertyEditorManager;
+import java.io.InputStream;
+import java.io.IOException;
 
 import junit.framework.TestCase;
 
@@ -30,6 +32,11 @@
 
     static String origPath[] = PropertyEditorManager.getEditorSearchPath();
 
+    private final String MOCK_TEST_CLASS_EDITOR = "testPackage.TestClassEditor";
+
+    private final String MOCK_TEST_CLASS_EDITOR_FILE
+            = "binary/java/beans/mock/TestClassEditor.bin";
+
     public void testFindEditorAccordingPath_1() throws Exception {
         // Regression Harmony-1205
         String newPath[] = new String[origPath.length + 1];
@@ -64,6 +71,42 @@
                 editor.getClass());
     }
 
+    public void testFindEditorAccordingPath_3() throws Exception {
+        // Regression Harmony-5477
+        class TestClassLoader extends ClassLoader {
+            protected Class<?> findClass(String name) throws ClassNotFoundException {
+                if (!MOCK_TEST_CLASS_EDITOR.equals(name)) {
+                    throw new ClassNotFoundException(name);
+                }
+
+                try {
+                    byte[] buf = new byte[1024];
+                    InputStream in = getResourceAsStream(MOCK_TEST_CLASS_EDITOR_FILE);
+                    int sz = 0;
+                    int read;
+
+                    while ((read = in.read(buf, sz, buf.length - sz)) >= 0) {
+                        sz += read;
+                    }
+                    return defineClass(MOCK_TEST_CLASS_EDITOR, buf, 0, sz);
+                } catch (IOException e) {
+                    throw (ClassNotFoundException) new ClassNotFoundException(
+                            e.getMessage()).initCause(e);
+                }
+            }
+        }
+        PropertyEditorManager.setEditorSearchPath(new String[] { "testPackage" });
+        ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
+
+        try {
+            Thread.currentThread().setContextClassLoader(new TestClassLoader());
+            PropertyEditor editor = PropertyEditorManager.findEditor(TestClass.class);
+            assertEquals(MOCK_TEST_CLASS_EDITOR, editor.getClass().getName());
+        } finally {
+            Thread.currentThread().setContextClassLoader(oldLoader);
+        }
+    }
+
     public void testStringEditor() throws Exception {
         // Regression Harmony-1199
         PropertyEditorManager.setEditorSearchPath(origPath);
@@ -75,7 +118,7 @@
         assertEquals(text, editor.getAsText());
     }
     
-    // Regression for HARMONY-4062
+    // Regression Harmony-4062
     public void testColorEditor() {
         PropertyEditor propertyEditor = PropertyEditorManager
                 .findEditor(Color.class);
@@ -105,6 +148,7 @@
             //expected.
         }
     }
+
     String[] defaultSearchPath;
     
     public void setUp(){
@@ -115,3 +159,5 @@
         PropertyEditorManager.setEditorSearchPath(defaultSearchPath);
     }
 }
+
+class TestClass {}

Added: harmony/enhanced/classlib/trunk/modules/beans/src/test/resources/binary/java/beans/mock/TestClassEditor.bin
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/beans/src/test/resources/binary/java/beans/mock/TestClassEditor.bin?rev=620812&view=auto
==============================================================================
Binary file - no diff available.

Propchange: harmony/enhanced/classlib/trunk/modules/beans/src/test/resources/binary/java/beans/mock/TestClassEditor.bin
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream