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 2009/04/16 12:26:47 UTC
svn commit: r765560 - in /harmony/enhanced/classlib/trunk/modules/beans/src:
main/java/java/beans/beancontext/BeanContextSupport.java
test/java/org/apache/harmony/beans/tests/java/beans/beancontext/BeanContextSupportTest.java
Author: tellison
Date: Thu Apr 16 10:26:46 2009
New Revision: 765560
URL: http://svn.apache.org/viewvc?rev=765560&view=rev
Log:
Apply patch HARMONY-6143 ([classlib][beans] java.beans.beancontext.BeanContextSupport.readChildren((ObjectInputStream) null) should throw NullPointerException)
Modified:
harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/beancontext/BeanContextSupport.java
harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/beancontext/BeanContextSupportTest.java
Modified: harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/beancontext/BeanContextSupport.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/beancontext/BeanContextSupport.java?rev=765560&r1=765559&r2=765560&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/beancontext/BeanContextSupport.java (original)
+++ harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/beancontext/BeanContextSupport.java Thu Apr 16 10:26:46 2009
@@ -288,10 +288,12 @@
// trigger hook
synchronized (child) {
+ addSerializable(childBCSC);
childJustAddedHook(child, childBCSC);
}
if (proxy != null) {
synchronized (proxy) {
+ addSerializable(proxyBCSC);
childJustAddedHook(proxy, proxyBCSC);
}
}
@@ -987,10 +989,12 @@
// trigger hook
synchronized (child) {
+ removeSerializable(childBCSC);
childJustRemovedHook(child, childBCSC);
}
if (peer != null) {
synchronized (peer) {
+ removeSerializable(peerBCSC);
childJustRemovedHook(peer, peerBCSC);
}
}
@@ -1243,19 +1247,6 @@
serializing = true;
try {
- // count serializable children
- synchronized (children) {
- serializable = 0;
- for (Iterator iter = children.values().iterator(); iter
- .hasNext();) {
- BCSChild bcsc = (BCSChild) iter.next();
- if (bcsc.child instanceof Serializable
- && (bcsc.proxyPeer == null || bcsc.proxyPeer instanceof Serializable)) {
- serializable++;
- }
- }
- }
-
oos.defaultWriteObject();
bcsPreSerializationHook(oos);
@@ -1309,6 +1300,29 @@
}
}
+ /*
+ * Increase variable serializable if child and proxyPeer fields of the given
+ * BCSChild object are serializable
+ */
+ private void addSerializable(BCSChild bcsc) {
+ if (bcsc.child instanceof Serializable
+ && (bcsc.proxyPeer == null || bcsc.proxyPeer instanceof Serializable)) {
+ serializable++;
+ }
+ }
+
+ /*
+ * Decrease variable serializable if child and proxyPeer fields of the given
+ * BCSChild object are serializable
+ */
+ private void removeSerializable(BCSChild bcsc) {
+ if (serializable > 0
+ && bcsc.child instanceof Serializable
+ && (bcsc.proxyPeer == null || bcsc.proxyPeer instanceof Serializable)) {
+ serializable--;
+ }
+ }
+
}
Modified: harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/beancontext/BeanContextSupportTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/beancontext/BeanContextSupportTest.java?rev=765560&r1=765559&r2=765560&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/beancontext/BeanContextSupportTest.java (original)
+++ harmony/enhanced/classlib/trunk/modules/beans/src/test/java/org/apache/harmony/beans/tests/java/beans/beancontext/BeanContextSupportTest.java Thu Apr 16 10:26:46 2009
@@ -1422,6 +1422,43 @@
support.records.assertEndOfRecords();
}
+ public void test_readChildren_NPE_scenario1() throws Exception {
+ BeanContextSupport beanContextSupport = new BeanContextSupport();
+ beanContextSupport.add(beanContextSupport);
+ assertEquals(1, beanContextSupport.size());
+ assertFalse(beanContextSupport.isSerializing());
+ try {
+ beanContextSupport.readChildren((ObjectInputStream) null);
+ fail("should throw NullPointerException");
+ } catch (NullPointerException e) {
+ // Expected
+ }
+ }
+
+ public void test_readChildren_NPE_scenario2() throws Exception {
+ BeanContextSupport beanContextSupport = new BeanContextSupport();
+ beanContextSupport.readChildren((ObjectInputStream) null);
+ }
+
+ public void test_readChildren_NPE_scenario3() throws Exception {
+ BeanContextSupport beanContextSupport = new BeanContextSupport();
+ beanContextSupport.add(new Object());
+ beanContextSupport.readChildren((ObjectInputStream) null);
+ }
+
+ public void test_readChildren_NPE_scenario4() throws Exception {
+ BeanContextSupport beanContextSupport = new BeanContextSupport();
+ beanContextSupport.add("Serializable");
+ try {
+ beanContextSupport.readChildren((ObjectInputStream) null);
+ fail("should throw NullPointerException");
+ } catch (NullPointerException e) {
+ // Expected
+ }
+ beanContextSupport.remove("Serializable");
+ beanContextSupport.readChildren((ObjectInputStream) null);
+ }
+
public void testRemoveAll() {
MockBeanContextSupport support = new MockBeanContextSupport();
support.records.assertRecord("initialize", null);