You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by te...@apache.org on 2006/10/30 19:23:46 UTC

svn commit: r469219 - in /incubator/harmony/enhanced/classlib/trunk/modules/beans: ./ src/main/java/java/beans/ src/main/java/org/apache/harmony/beans/internal/nls/ src/test/java/org/apache/harmony/beans/tests/java/beans/

Author: tellison
Date: Mon Oct 30 10:23:46 2006
New Revision: 469219

URL: http://svn.apache.org/viewvc?view=rev&rev=469219
Log:
Apply patch HARMONY-2011 ([classlib][beans] refactoring of PersistenceDelegateTest (2))
and enable PersistenceDelegateTest.

Modified:
    incubator/harmony/enhanced/classlib/trunk/modules/beans/build.xml
    incubator/harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/PersistenceDelegate.java
    incubator/harmony/enhanced/classlib/trunk/modules/beans/src/main/java/org/apache/harmony/beans/internal/nls/messages.properties
    incubator/harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/PersistenceDelegateTest.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?view=diff&rev=469219&r1=469218&r2=469219
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/beans/build.xml (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/beans/build.xml Mon Oct 30 10:23:46 2006
@@ -246,7 +246,6 @@
                     <exclude name="org/apache/harmony/beans/tests/java/beans/EventSetDescriptorTest.java" />
                     <exclude name="org/apache/harmony/beans/tests/java/beans/IndexedPropertyDescriptorTest.java" />
                     <exclude name="org/apache/harmony/beans/tests/java/beans/IntrospectorTest.java" />
-                    <exclude name="org/apache/harmony/beans/tests/java/beans/PersistenceDelegateTest.java" />
                     <exclude name="org/apache/harmony/beans/tests/java/beans/PropertyChangeSupportTest.java" />
                     <exclude name="org/apache/harmony/beans/tests/java/beans/PropertyEditorManagerTest.java" />
                     <exclude name="org/apache/harmony/beans/tests/java/beans/VetoableChangeListenerProxyTest.java" />

Modified: incubator/harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/PersistenceDelegate.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/PersistenceDelegate.java?view=diff&rev=469219&r1=469218&r2=469219
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/PersistenceDelegate.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/PersistenceDelegate.java Mon Oct 30 10:23:46 2006
@@ -33,8 +33,16 @@
                     .getSuperclass());
 
             if (pd != null) {
-                pd.initialize(type, oldInstance, newInstance, out);
+                try {
+                    pd.initialize(type, oldInstance, newInstance, out);
+                } catch (StackOverflowError err) {
+                    // circular redundancy
+                    // we should catch in order to be compatilbe with RI
+                }
             }
+        } else {
+            throw new NullPointerException(
+                    Messages.getString("beans.4C")); //$NON-NLS-1$
         }
     }
 

Modified: incubator/harmony/enhanced/classlib/trunk/modules/beans/src/main/java/org/apache/harmony/beans/internal/nls/messages.properties
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/beans/src/main/java/org/apache/harmony/beans/internal/nls/messages.properties?view=diff&rev=469219&r1=469218&r2=469219
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/beans/src/main/java/org/apache/harmony/beans/internal/nls/messages.properties (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/beans/src/main/java/org/apache/harmony/beans/internal/nls/messages.properties Mon Oct 30 10:23:46 2006
@@ -91,4 +91,5 @@
 beans.49=Child cannot implement both BeanContextChild and BeanContextProxy
 beans.4A=newInstance is null
 beans.4B=type is null
+beans.4C=encoder is null
 

Modified: incubator/harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/PersistenceDelegateTest.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/PersistenceDelegateTest.java?view=diff&rev=469219&r1=469218&r2=469219
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/PersistenceDelegateTest.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/PersistenceDelegateTest.java Mon Oct 30 10:23:46 2006
@@ -18,7 +18,6 @@
 package org.apache.harmony.beans.tests.java.beans;
 
 import java.beans.Encoder;
-import java.beans.ExceptionListener;
 import java.beans.Expression;
 import java.beans.PersistenceDelegate;
 import java.beans.Statement;
@@ -31,7 +30,6 @@
 import org.apache.harmony.beans.tests.support.mock.MockFoo;
 import org.apache.harmony.beans.tests.support.mock.MockFooStop;
 
-import tests.util.CallVerificationStack;
 
 /**
  * Test java.beans.PersistenceDelegate
@@ -41,7 +39,6 @@
     @Override
     protected void setUp() throws Exception {
         super.setUp();
-        CallVerificationStack.getInstance().clear();
     }
 
     /*
@@ -115,28 +112,20 @@
      */
     public void testInitialize_Normal() {
         DummyPersistenceDelegate pd = new DummyPersistenceDelegate();
+        MockPersistenceDelegate3 pd3 = new MockPersistenceDelegate3();
         Encoder enc = new Encoder();
-        Object o1 = new Object();
-        Object o2 = new Object();
-        enc.setPersistenceDelegate(MockFooStop.class,
-                new MockPersistenceDelegate());
-        pd.initialize(MockFoo.class, o1, o2, enc);
-        assertSame(enc, CallVerificationStack.getInstance().pop());
-        assertSame(o2, CallVerificationStack.getInstance().pop());
-        assertSame(o1, CallVerificationStack.getInstance().pop());
-        assertEquals(
-                "org.apache.harmony.beans.tests.java.beans.PersistenceDelegateTest$MockPersistenceDelegate",
-                CallVerificationStack.getInstance().getCurrentSourceClass());
-        assertEquals("initialize", CallVerificationStack.getInstance()
-                .getCurrentSourceMethod());
-        assertSame(MockFooStop.class, CallVerificationStack.getInstance().pop());
-        assertTrue(CallVerificationStack.getInstance().empty());
+        
+        enc.setPersistenceDelegate(MockFooStop.class, pd3);
+        pd.initialize(MockFoo.class, new MockFoo(), new MockFoo(), enc);
+        assertEquals("initialize", pd3.popMethod());
+        assertFalse("Extra statement has been detected", pd3.hasMoreMethods());
+        
         // test interface
-        o1 = new MockObject();
-        enc.setPersistenceDelegate(MockInterface.class,
-                new MockPersistenceDelegate());
-        pd.initialize(MockObject.class, o1, o1, enc);
-        assertTrue(CallVerificationStack.getInstance().empty());
+        pd3 = new MockPersistenceDelegate3();
+        enc.setPersistenceDelegate(MockInterface.class, pd3);
+        pd.initialize(MockObject.class, new MockObject(), new MockObject(),
+                      enc);
+        assertFalse("Extra statement has been detected", pd3.hasMoreMethods());
     }
 
     /*
@@ -145,12 +134,12 @@
     public void testInitialize_NullClass() {
         DummyPersistenceDelegate pd = new DummyPersistenceDelegate();
         Encoder enc = new Encoder();
-        Object o1 = new Object();
-        Object o2 = new Object();
+
         enc.setPersistenceDelegate(MockFooStop.class,
-                new MockPersistenceDelegate());
+                new DummyPersistenceDelegate());
+    
         try {
-            pd.initialize(null, o1, o2, enc);
+            pd.initialize(null, new Object(), new Object(), enc);
             fail("Should throw NullPointerException!");
         } catch (NullPointerException ex) {
             // expected
@@ -162,20 +151,12 @@
      */
     public void testInitialize_NullInstances() {
         DummyPersistenceDelegate pd = new DummyPersistenceDelegate();
+        MockPersistenceDelegate3 pd3 = new MockPersistenceDelegate3();
         Encoder enc = new Encoder();
-        enc.setPersistenceDelegate(MockFooStop.class,
-                new MockPersistenceDelegate());
+
+        enc.setPersistenceDelegate(MockFooStop.class, pd3);
         pd.initialize(MockFoo.class, null, null, enc);
-        assertSame(enc, CallVerificationStack.getInstance().pop());
-        assertSame(null, CallVerificationStack.getInstance().pop());
-        assertSame(null, CallVerificationStack.getInstance().pop());
-        assertEquals(
-                "org.apache.harmony.beans.tests.java.beans.PersistenceDelegateTest$MockPersistenceDelegate",
-                CallVerificationStack.getInstance().getCurrentSourceClass());
-        assertEquals("initialize", CallVerificationStack.getInstance()
-                .getCurrentSourceMethod());
-        assertSame(MockFooStop.class, CallVerificationStack.getInstance().pop());
-        assertTrue(CallVerificationStack.getInstance().empty());
+        assertEquals("initialize", pd3.popMethod());
     }
 
     /*
@@ -183,16 +164,26 @@
      */
     public void testInitialize_NullEncoder() {
         DummyPersistenceDelegate pd = new DummyPersistenceDelegate();
-        Object o1 = new Object();
-        Object o2 = new Object();
+
         try {
-            pd.initialize(MockFoo.class, o1, o2, null);
+            pd.initialize(MockFoo.class, new Object(), new Object(), null);
             fail("Should throw NullPointerException!");
         } catch (NullPointerException ex) {
             // expected
         }
     }
 
+    /**
+     * Circular redundancy check. Should not hang. 
+     */
+    public void testInitialize_circularRedundancy() {
+        Encoder enc = new Encoder();
+        DummyPersistenceDelegate pd = new DummyPersistenceDelegate();
+        
+        enc.setPersistenceDelegate(MockFooStop.class, pd);
+        pd.initialize(MockFoo.class, new MockFoo(), new MockFoo(), enc);
+    }
+
     /*
      * Tests mutatesTo() under normal conditions.
      */
@@ -206,8 +197,6 @@
             }
         }));
         assertFalse(pd.mutatesTo(new MockFoo(), new MockFooStop()));
-        // DummyEncoder enc = new DummyEncoder();
-        // pd.writeObject(new MockFoo(), enc);
     }
 
     /*
@@ -298,143 +287,6 @@
 
     }
 
-    /*
-     * Mock Encoder.
-     */
-    static class MockEncoder extends Encoder {
-
-        @Override
-        public Object get(Object oldInstance) {
-            StackTraceElement[] eles = (new Throwable()).getStackTrace();
-            if (eles[2].getClassName().equals(
-                    MockPersistenceDelegate.class.getName())) {
-                CallVerificationStack.getInstance().push(oldInstance);
-            }
-            return super.get(oldInstance);
-        }
-
-        @Override
-        public ExceptionListener getExceptionListener() {
-            return super.getExceptionListener();
-        }
-
-        @Override
-        public PersistenceDelegate getPersistenceDelegate(Class<?> type) {
-            return super.getPersistenceDelegate(type);
-        }
-
-        @Override
-        public Object remove(Object oldInstance) {
-            StackTraceElement[] eles = (new Throwable()).getStackTrace();
-            if (eles[2].getClassName().equals(
-                    MockPersistenceDelegate.class.getName())) {
-                CallVerificationStack.getInstance().push(oldInstance);
-            }
-            return super.remove(oldInstance);
-        }
-
-        @Override
-        public void setExceptionListener(ExceptionListener exceptionListener) {
-            super.setExceptionListener(exceptionListener);
-        }
-
-        @Override
-        public void setPersistenceDelegate(Class<?> type,
-                PersistenceDelegate persistenceDelegate) {
-            super.setPersistenceDelegate(type, persistenceDelegate);
-        }
-
-        @Override
-        public void writeExpression(Expression oldExp) {
-            StackTraceElement[] eles = (new Throwable()).getStackTrace();
-            if (eles[2].getClassName().equals(
-                    MockPersistenceDelegate.class.getName())) {
-                CallVerificationStack.getInstance().push(oldExp);
-            }
-            super.writeExpression(oldExp);
-        }
-
-        @Override
-        public void writeStatement(Statement oldStm) {
-            StackTraceElement[] eles = (new Throwable()).getStackTrace();
-            if (eles[2].getClassName().equals(
-                    MockPersistenceDelegate.class.getName())) {
-                CallVerificationStack.getInstance().push(oldStm);
-            }
-            super.writeStatement(oldStm);
-        }
-
-        @Override
-        public void writeObject(Object o) {
-            super.writeObject(o);
-        }
-    }
-
-    /*
-     * Mock PersistenceDelegate subclass.
-     */
-    static class MockPersistenceDelegate extends PersistenceDelegate {
-        private boolean filter = false;
-
-        private boolean mutatesToResult = true;
-
-        public MockPersistenceDelegate() {
-            // empty
-        }
-
-        public MockPersistenceDelegate(boolean mutatesToResult, boolean filter) {
-            this.mutatesToResult = mutatesToResult;
-            this.filter = filter;
-        }
-
-        public void setMutatesToResult(boolean ret) {
-            this.mutatesToResult = ret;
-        }
-
-        @Override
-        public Expression instantiate(Object oldInstance, Encoder out) {
-            StackTraceElement[] eles = (new Throwable()).getStackTrace();
-            if (!this.filter
-                    || eles[2].getClassName().equals(this.getClass().getName())) {
-                CallVerificationStack.getInstance().push(oldInstance);
-                CallVerificationStack.getInstance().push(out);
-            }
-            return new Expression(oldInstance, MockFoo.class, "new", null);
-        }
-
-        @Override
-        public void initialize(Class<?> type, Object oldInstance,
-                Object newInstance, Encoder enc) {
-            StackTraceElement[] eles = (new Throwable()).getStackTrace();
-            if (!this.filter
-                    || eles[2].getClassName().equals(this.getClass().getName())) {
-                CallVerificationStack.getInstance().push(type);
-                CallVerificationStack.getInstance().push(oldInstance);
-                CallVerificationStack.getInstance().push(newInstance);
-                CallVerificationStack.getInstance().push(enc);
-            }
-        }
-
-        @Override
-        public boolean mutatesTo(Object oldInstance, Object newInstance) {
-            StackTraceElement[] eles = (new Throwable()).getStackTrace();
-            if (!this.filter
-                    || eles[2].getClassName().equals(this.getClass().getName())) {
-                CallVerificationStack.getInstance().push(oldInstance);
-                CallVerificationStack.getInstance().push(newInstance);
-            }
-            return this.mutatesToResult;
-        }
-
-        @Override
-        public void writeObject(Object oldInstance, Encoder enc) {
-            // CallVerificationStack.getInstance().push(oldInstance);
-            // CallVerificationStack.getInstance().push(enc);
-            super.writeObject(oldInstance, enc);
-        }
-
-    }
-
     static class MockEncoder2 extends Encoder {
         Stack<Statement> stmts = new Stack<Statement>();
         
@@ -496,6 +348,40 @@
         
         String popMethod() {
             return methods.pop();
+        }
+        
+        boolean hasMoreMethods() {
+            return !methods.empty();
+        }
+    }
+
+    static class MockPersistenceDelegate3 extends PersistenceDelegate {
+        Stack<String> methods = new Stack<String>();
+
+        @Override
+        public void initialize(Class<?> type, Object oldInstance,
+                Object newInstance, Encoder enc) {
+            methods.push("initialize");
+        }
+
+        @Override
+        public Expression instantiate(Object oldInstance, Encoder out) {
+            methods.push("instantiate");
+            return null;
+        }
+
+        @Override
+        public boolean mutatesTo(Object oldInstance, Object newInstance) {
+            methods.push("mutatesTo");
+            return true;
+        }
+
+        String popMethod() {
+            return methods.pop();
+        }
+
+        boolean hasMoreMethods() {
+            return !methods.empty();
         }
     }