You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ml...@apache.org on 2006/07/12 11:35:42 UTC

svn commit: r421204 - in /incubator/harmony/enhanced/classlib/trunk/modules/beans: build.xml src/main/java/java/beans/Beans.java src/test/java/org/apache/harmony/beans/tests/java/beans/BeansTest.java

Author: mloenko
Date: Wed Jul 12 02:35:42 2006
New Revision: 421204

URL: http://svn.apache.org/viewvc?rev=421204&view=rev
Log:
enable BeansTest

Modified:
    incubator/harmony/enhanced/classlib/trunk/modules/beans/build.xml
    incubator/harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/Beans.java
    incubator/harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/BeansTest.java

Modified: incubator/harmony/enhanced/classlib/trunk/modules/beans/build.xml
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/beans/build.xml?rev=421204&r1=421203&r2=421204&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/beans/build.xml (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/beans/build.xml Wed Jul 12 02:35:42 2006
@@ -211,7 +211,6 @@
                 <fileset dir="${hy.beans.src.test.java}">
                     <include name="**/*Test.java"/>
                     <exclude name="org/apache/harmony/beans/tests/java/beans/EventHandlerTest.java" />
-                    <exclude name="org/apache/harmony/beans/tests/java/beans/BeansTest.java" />
                     <exclude name="org/apache/harmony/beans/tests/java/beans/CustomizedPersistenceDelegateTest.java" />
                     <exclude name="org/apache/harmony/beans/tests/java/beans/DefaultPersistenceDelegateTest.java" />
                     <exclude name="org/apache/harmony/beans/tests/java/beans/EncoderTest.java" />

Modified: incubator/harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/Beans.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/Beans.java?rev=421204&r1=421203&r2=421204&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/Beans.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/Beans.java Wed Jul 12 02:35:42 2006
@@ -137,11 +137,11 @@
      * @com.intel.drl.spec_ref
      */
     public static boolean isInstanceOf(Object bean, Class<?> targetType) {
-        if (targetType == null) {
-            return false;
-        } else {
-            return targetType.isInstance(bean);
+        if (bean == null) {
+            throw new NullPointerException("bean is null");
         }
+
+        return targetType == null ? false : targetType.isInstance(bean);
     }
 
     /**

Modified: incubator/harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/BeansTest.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/BeansTest.java?rev=421204&r1=421203&r2=421204&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/BeansTest.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/BeansTest.java Wed Jul 12 02:35:42 2006
@@ -21,16 +21,12 @@
 import java.beans.beancontext.BeanContext;
 import java.beans.beancontext.BeanContextSupport;
 import java.io.Externalizable;
-import java.io.File;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 import java.io.Serializable;
-import java.lang.reflect.InvocationTargetException;
 import java.net.URL;
-import java.net.URLClassLoader;
 
 import junit.framework.Test;
 import junit.framework.TestCase;
@@ -45,30 +41,10 @@
  * Unit test for java.beans.Beans
  */
 public class BeansTest extends TestCase {
-	private File fileURLCP = new File(System.getProperty("user.home"), "urlcp");
 
-	private File fileSer;
-
-	private File fileClass;
-
-	public BeansTest() {
-		File path = new File(fileURLCP, "serialization/java/beans/mock");
-		path.mkdirs();
-		fileSer = new File(path, "MockJavaBean2.ser");
-		fileClass = new File(path, "MockJavaBean2.class");
-	}
-
-	protected void tearDown() throws Exception {
-		super.tearDown();
-		if (fileSer.exists()) {
-			fileSer.delete();
-		}
-
-		if (fileClass.exists()) {
-			fileClass.delete();
-		}
-		fileURLCP.delete();
-	}
+    private final String MOCK_JAVA_BEAN2 = "tests.api.java.beans.mock.MockJavaBean2";
+    private final String MOCK_JAVA_BEAN2_FILE = "/binary/java/beans/mock/MockJavaBean2.bin";
+    private final String MOCK_JAVA_BEAN2_SFILE = "/serialization/java/beans/mock/MockJavaBean2.ser";
 
 	/*
 	 * public Beans()
@@ -102,55 +78,33 @@
 	/*
 	 * Class under test for Object instantiate(ClassLoader, String)
 	 */
-	public void testInstantiateClassLoaderString_Class() throws IOException,
-			ClassNotFoundException, NoSuchMethodException, SecurityException,
-			IllegalAccessException, InvocationTargetException {
-		// copy class
-		InputStream bin = getClass().getResourceAsStream(
-				"/binary/java/beans/mock/MockJavaBean2.bin");
-		copyFile(bin, fileClass);
-
-		URLClassLoader loader = new URLClassLoader(new URL[] { fileURLCP
-				.toURL() });
-		Object bean = Beans.instantiate(loader,
-				"org.apache.harmony.beans.tests.java.beans.mock.MockJavaBean2");
+	public void testInstantiateClassLoaderString_Class() throws Exception {
+
+		ClassLoader loader = new BinClassLoader();
+		Object bean = Beans.instantiate(loader, MOCK_JAVA_BEAN2);
+
 		assertEquals("as_class", (String) bean.getClass().getMethod(
 				"getPropertyOne", (Class[])null).invoke(bean, null));
 		assertSame(loader, bean.getClass().getClassLoader());
 	}
 
-	public void testInstantiateClassLoaderString_Ser() throws IOException,
-			ClassNotFoundException, IllegalAccessException,
-			InvocationTargetException, NoSuchMethodException {
-		// copy class
-		InputStream bin = getClass().getResourceAsStream(
-				"/binary/java/beans/mock/MockJavaBean2.bin");
-		copyFile(bin, fileClass);
-
-		// copy ser
-		InputStream res = getClass().getResourceAsStream(
-				"/serialization/java/beans/mock/MockJavaBean2.ser");
-		copyFile(res, fileSer);
-
-		URLClassLoader loader = new URLClassLoader(new URL[] { fileURLCP
-				.toURL() });
-		Object bean = Beans.instantiate(loader,
-				"org.apache.harmony.beans.tests.java.beans.mock.MockJavaBean2");
-		assertEquals("as_object", (String) bean.getClass().getMethod(
+	public void testInstantiateClassLoaderString_Ser() throws Exception {
+        ClassLoader loader = new SerClassLoader();
+		Object bean = Beans.instantiate(loader,MOCK_JAVA_BEAN2);
+
+        assertEquals("as_object", (String) bean.getClass().getMethod(
 				"getPropertyOne", (Class[])null).invoke(bean, null));
 		assertSame(loader, bean.getClass().getClassLoader());
 	}
 
-	public void testInstantiateClassLoaderString_ClassLoaderNull()
-			throws IOException, ClassNotFoundException {
+	public void testInstantiateClassLoaderString_ClassLoaderNull() throws Exception {
 		Object bean = Beans.instantiate(null, MockJavaBean.class.getName());
 		assertEquals(bean.getClass(), MockJavaBean.class);
 		assertSame(ClassLoader.getSystemClassLoader(), bean.getClass()
 				.getClassLoader());
 	}
 
-	public void testInstantiateClassLoaderString_BeanNameNull()
-			throws IOException, ClassNotFoundException {
+	public void testInstantiateClassLoaderString_BeanNameNull() throws Exception {
 		try {
 			Beans.instantiate(null, null);
 			fail("Should throw NullPointerException");
@@ -161,52 +115,30 @@
 	/*
 	 * Class under test for Object instantiate(ClassLoader, String, BeanContext)
 	 */
-	public void testInstantiateClassLoaderStringBeanContext_Class()
-			throws ClassNotFoundException, ClassNotFoundException, IOException,
-			IllegalAccessException, InvocationTargetException,
-			NoSuchMethodException {
-		// copy class
-		InputStream bin = getClass().getResourceAsStream(
-				"/binary/java/beans/mock/MockJavaBean2.bin");
-		copyFile(bin, fileClass);
+	public void testInstantiateClassLoaderStringBeanContext_Class() throws Exception {
 
-		URLClassLoader loader = new URLClassLoader(new URL[] { fileURLCP
-				.toURL() });
+        ClassLoader loader = new BinClassLoader ();
 		BeanContext context = new BeanContextSupport();
-		Object bean = Beans.instantiate(loader,
-				"org.apache.harmony.beans.tests.java.beans.mock.MockJavaBean2", context);
-		assertEquals("as_class", (String) bean.getClass().getMethod(
+		Object bean = Beans.instantiate(loader, MOCK_JAVA_BEAN2, context);
+
+        assertEquals("as_class", (String) bean.getClass().getMethod(
 				"getPropertyOne", (Class[])null).invoke(bean, null));
 		assertSame(loader, bean.getClass().getClassLoader());
 		assertTrue(context.contains(bean));
 	}
 
-	public void testInstantiateClassLoaderStringBeanContext_Ser()
-			throws IOException, ClassNotFoundException, IllegalAccessException,
-			InvocationTargetException, NoSuchMethodException {
-		// copy class
-		InputStream bin = getClass().getResourceAsStream(
-				"/binary/java/beans/mock/MockJavaBean2.bin");
-		copyFile(bin, fileClass);
-
-		// copy ser
-		InputStream res = getClass().getResourceAsStream(
-				"/serialization/java/beans/mock/MockJavaBean2.ser");
-		copyFile(res, fileSer);
-
-		URLClassLoader loader = new URLClassLoader(new URL[] { fileURLCP
-				.toURL() });
+	public void testInstantiateClassLoaderStringBeanContext_Ser() throws Exception {
+		ClassLoader loader = new SerClassLoader();
 		BeanContext context = new BeanContextSupport();
-		Object bean = Beans.instantiate(loader,
-				"org.apache.harmony.beans.tests.java.beans.mock.MockJavaBean2", context);
+		Object bean = Beans.instantiate(loader, MOCK_JAVA_BEAN2, context);
+
 		assertEquals("as_object", (String) bean.getClass().getMethod(
 				"getPropertyOne", (Class[])null).invoke(bean, null));
 		assertSame(loader, bean.getClass().getClassLoader());
 		assertTrue(context.contains(bean));
 	}
 
-	public void testInstantiateClassLoaderStringBeanContext_ClassLoaderNull()
-			throws IOException, ClassNotFoundException {
+	public void testInstantiateClassLoaderStringBeanContext_ClassLoaderNull() throws Exception {
 		BeanContext context = new BeanContextSupport();
 		Object bean = Beans.instantiate(null, MockJavaBean.class.getName(),
 				context);
@@ -216,11 +148,9 @@
 		assertTrue(context.contains(bean));
 	}
 
-	public void testInstantiateClassLoaderStringBeanContext_BeanNameNull()
-			throws IOException, ClassNotFoundException {
+	public void testInstantiateClassLoaderStringBeanContext_BeanNameNull() throws Exception {
 		BeanContext context = new BeanContextSupport();
-		URLClassLoader loader = new URLClassLoader(new URL[] { fileURLCP
-				.toURL() });
+		ClassLoader loader = createSpecificClassLoader();
 		try {
 			Beans.instantiate(loader, null, context);
 			fail("Should throw NullPointerException.");
@@ -228,10 +158,8 @@
 		}
 	}
 
-	public void testInstantiateClassLoaderStringBeanContext_ContextNull()
-			throws IOException, ClassNotFoundException {
-		URLClassLoader loader = new URLClassLoader(new URL[] { fileURLCP
-				.toURL() });
+	public void testInstantiateClassLoaderStringBeanContext_ContextNull() throws Exception {
+        ClassLoader loader = createSpecificClassLoader();
 		Object bean = Beans.instantiate(loader, MockJavaBean.class.getName(),
 				null);
 		assertEquals(bean.getClass(), MockJavaBean.class);
@@ -241,19 +169,11 @@
 	 * Class under test for Object instantiate(ClassLoader, String, BeanContext,
 	 * AppletInitializer)
 	 */
-	public void testInstantiateClassLoaderStringBeanContextAppletInitializer_Class()
-			throws IOException, ClassNotFoundException, IllegalAccessException,
-			InvocationTargetException, NoSuchMethodException {
-		// copy class
-		InputStream bin = getClass().getResourceAsStream(
-				"/binary/java/beans/mock/MockJavaBean2.bin");
-		copyFile(bin, fileClass);
-		URLClassLoader loader = new URLClassLoader(new URL[] { fileURLCP
-				.toURL() });
-		String beanName = "org.apache.harmony.beans.tests.java.beans.mock.MockJavaBean2";
+	public void testInstantiateClassLoaderStringBeanContextAppletInitializer_Class() throws Exception {
+		ClassLoader loader = new BinClassLoader();
 		BeanContext context = new BeanContextSupport();
 		AppletInitializer appInit = new MockAppletInitializer();
-		Object bean = Beans.instantiate(loader, beanName, context, appInit);
+		Object bean = Beans.instantiate(loader, MOCK_JAVA_BEAN2, context, appInit);
 
 		assertEquals("as_class", (String) bean.getClass().getMethod(
 				"getPropertyOne", (Class[])null).invoke(bean, null));
@@ -261,26 +181,12 @@
 		assertTrue(context.contains(bean));
 	}
 
-	public void testInstantiateClassLoaderStringBeanContextAppletInitializer_Ser()
-			throws ClassNotFoundException, IOException,
-			InvocationTargetException, NoSuchMethodException,
-			IllegalAccessException {
-		// copy class
-		InputStream bin = getClass().getResourceAsStream(
-				"/binary/java/beans/mock/MockJavaBean2.bin");
-		copyFile(bin, fileClass);
-
-		// copy ser
-		InputStream res = getClass().getResourceAsStream(
-				"/serialization/java/beans/mock/MockJavaBean2.ser");
-		copyFile(res, fileSer);
-
-		URLClassLoader loader = new URLClassLoader(new URL[] { fileURLCP
-				.toURL() });
-		String beanName = "org.apache.harmony.beans.tests.java.beans.mock.MockJavaBean2";
+	public void testInstantiateClassLoaderStringBeanContextAppletInitializer_Ser() throws Exception {
+
+		ClassLoader loader = new SerClassLoader();
 		BeanContext context = new BeanContextSupport();
 		AppletInitializer appInit = new MockAppletInitializer();
-		Object bean = Beans.instantiate(loader, beanName, context, appInit);
+		Object bean = Beans.instantiate(loader, MOCK_JAVA_BEAN2, context, appInit);
 
 		assertEquals("as_object", (String) bean.getClass().getMethod(
 				"getPropertyOne", (Class[])null).invoke(bean, null));
@@ -288,22 +194,20 @@
 		assertTrue(context.contains(bean));
 	}
 
-	public void testInstantiateClassLoaderStringBeanContextAppletInitializer_LoaderNull()
-			throws IOException, ClassNotFoundException {
-		String beanName = "org.apache.harmony.beans.tests.java.beans.MockJavaBean";
+	public void testInstantiateClassLoaderStringBeanContextAppletInitializer_LoaderNull() throws Exception {
+		String beanName = "org.apache.harmony.beans.tests.support.mock.MockJavaBean";
 		BeanContext context = new BeanContextSupport();
 		AppletInitializer appInit = new MockAppletInitializer();
-		Object bean = Beans.instantiate(null, beanName, context, appInit);
+
+        Object bean = Beans.instantiate(null, beanName, context, appInit);
 		assertSame(ClassLoader.getSystemClassLoader(), bean.getClass()
 				.getClassLoader());
 		assertEquals(beanName, bean.getClass().getName());
 		assertTrue(context.contains(bean));
 	}
 
-	public void testInstantiateClassLoaderStringBeanContextAppletInitializer_BeanNull()
-			throws IOException, ClassNotFoundException {
-		URLClassLoader loader = new URLClassLoader(new URL[] { fileURLCP
-				.toURL() });
+	public void testInstantiateClassLoaderStringBeanContextAppletInitializer_BeanNull() throws Exception {
+        ClassLoader loader = createSpecificClassLoader();
 		BeanContext context = new BeanContextSupport();
 		AppletInitializer appInit = new MockAppletInitializer();
 		try {
@@ -313,11 +217,9 @@
 		}
 	}
 
-	public void testInstantiateClassLoaderStringBeanContextAppletInitializer_ContextNull()
-			throws IOException, ClassNotFoundException {
-		URLClassLoader loader = new URLClassLoader(new URL[] { fileURLCP
-				.toURL() });
-		String beanName = "org.apache.harmony.beans.tests.java.beans.MockJavaBean";
+	public void testInstantiateClassLoaderStringBeanContextAppletInitializer_ContextNull() throws Exception {
+        ClassLoader loader = createSpecificClassLoader();
+		String beanName = "org.apache.harmony.beans.tests.support.mock.MockJavaBean";
 		AppletInitializer appInit = new MockAppletInitializer();
 		Object bean = Beans.instantiate(loader, beanName, null, appInit);
 		assertSame(ClassLoader.getSystemClassLoader(), bean.getClass()
@@ -325,11 +227,9 @@
 		assertEquals(beanName, bean.getClass().getName());
 	}
 
-	public void testInstantiateClassLoaderStringBeanContextAppletInitializer_InitializerNull()
-			throws IOException, ClassNotFoundException {
-		URLClassLoader loader = new URLClassLoader(new URL[] { fileURLCP
-				.toURL() });
-		String beanName = "org.apache.harmony.beans.tests.java.beans.MockJavaBean";
+	public void testInstantiateClassLoaderStringBeanContextAppletInitializer_InitializerNull() throws Exception {
+        ClassLoader loader = createSpecificClassLoader();
+		String beanName = "org.apache.harmony.beans.tests.support.mock.MockJavaBean";
 		BeanContext context = new BeanContextSupport();
 		Object bean = Beans.instantiate(loader, beanName, context, null);
 		assertSame(ClassLoader.getSystemClassLoader(), bean.getClass()
@@ -425,47 +325,29 @@
 		assertFalse(Beans.isGuiAvailable());
 	}
 
-	private void copyFile(InputStream src, File dest) throws IOException {
-		FileOutputStream fos = new FileOutputStream(dest);
-		int length = 0;
-		byte[] bytes = new byte[1024];
-		while ((length = src.read(bytes)) != -1) {
-			fos.write(bytes, 0, length);
-		}
-		fos.close();
-		src.close();
-	}
-    
-    
     /**
      * The test checks the method instantiate()
      * using specific classloader for class loading
      */
-    public void testLoadBySpecificClassLoader() {
-        String beanName = "org.apache.harmony.beans.tests.java.beans.auxiliary.SampleBean";
-        
-        try {
-            ClassLoader cls = createSpecificClassLoader();
-            Object bean = Beans.instantiate(cls, beanName);
-            
-            assertNotNull(bean);
-            assertEquals(bean.getClass(), SampleBean.class);
-            
-            SampleBean sampleBean = (SampleBean) bean;
-            checkValues(sampleBean);
-        } catch (ClassNotFoundException cnfe) {
-            fail("Class with name " + beanName + " is not found");
-        } catch (IOException ioe) {
-            fail("IOException is thrown while loading " + beanName + " class");
-        }
+    public void testLoadBySpecificClassLoader() throws Exception {
+        String beanName = "org.apache.harmony.beans.tests.support.SampleBean";
+
+        ClassLoader cls = createSpecificClassLoader();
+        Object bean = Beans.instantiate(cls, beanName);
+
+        assertNotNull(bean);
+        assertEquals(bean.getClass(), SampleBean.class);
+
+        SampleBean sampleBean = (SampleBean) bean;
+        checkValues(sampleBean);
     }
     
     /**
-     * The test checks the method instantiate()
-     * using default classloader for class loading
+     * The test checks the method instantiate() using default classloader for
+     * class loading
      */
     public void testLoadByDefaultClassLoader() {
-        String beanName = "org.apache.harmony.beans.tests.java.beans.auxiliary.SampleBean";
+        String beanName = "org.apache.harmony.beans.tests.support.SampleBean";
         
         try {
             Object bean = Beans.instantiate(null, beanName);
@@ -519,12 +401,7 @@
     }
     
     private ClassLoader createSpecificClassLoader() {
-        return new ClassLoader() {
-            public Class loadClass(String name) throws ClassNotFoundException {
-                Class result = super.loadClass(name);
-                return result;
-            }
-        };        
+        return new ClassLoader() {};
     }
     
     private void checkValues(SampleBean sampleBean) {
@@ -535,4 +412,44 @@
         public void writeExternal(ObjectOutput out) {}; 
         public void readExternal(ObjectInput in){}; 
     } 
+
+    private class BinClassLoader extends ClassLoader {
+
+        protected Class findClass(String name) throws ClassNotFoundException {
+            if (!MOCK_JAVA_BEAN2.equals(name)) {
+                return super.findClass(name);
+            }
+
+            try {
+                // makes sense to get actual file size?
+                byte[] buf = new byte[10000];
+
+                InputStream in = getClass().getResourceAsStream(MOCK_JAVA_BEAN2_FILE);
+
+                int sz = 0;
+
+                // read whole file
+                int read;
+                while ((read = in.read(buf, sz, buf.length - sz)) >= 0) {
+                    sz += read;
+                }
+
+                return defineClass(MOCK_JAVA_BEAN2, buf, 0, sz);
+            } catch (IOException e) {
+                throw (ClassNotFoundException) new ClassNotFoundException(e
+                        .toString()).initCause(e);
+            }
+        }
+    }
+
+    private class SerClassLoader extends BinClassLoader {
+        private final String MOCK_JAVA_BEAN2_SNAME = MOCK_JAVA_BEAN2.replace('.', '/') + ".ser";;
+
+        protected URL findResource(String name)  {
+            if (MOCK_JAVA_BEAN2_SNAME.equals(name)) {
+                name = MOCK_JAVA_BEAN2_SFILE; 
+            }
+            return super.getResource(name);
+        }
+    }
 }