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 2007/05/01 10:18:15 UTC
svn commit: r533961 - in /harmony/enhanced/classlib/trunk/modules/beans:
.classpath src/main/java/java/beans/VetoableChangeSupport.java
src/test/resources/serialization/java/beans/VetoableChangeSupport.ser
Author: tellison
Date: Tue May 1 01:18:14 2007
New Revision: 533961
URL: http://svn.apache.org/viewvc?view=rev&rev=533961
Log:
Apply patch HARMONY-3761 ([classlib][beans]java.beans.VetoableChangeSupport is not compatible with RI in serialization)
Modified:
harmony/enhanced/classlib/trunk/modules/beans/.classpath
harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/VetoableChangeSupport.java
harmony/enhanced/classlib/trunk/modules/beans/src/test/resources/serialization/java/beans/VetoableChangeSupport.ser
Modified: harmony/enhanced/classlib/trunk/modules/beans/.classpath
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/beans/.classpath?view=diff&rev=533961&r1=533960&r2=533961
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/beans/.classpath (original)
+++ harmony/enhanced/classlib/trunk/modules/beans/.classpath Tue May 1 01:18:14 2007
@@ -1,10 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry path="src/main/java" kind="src" output="bin/main"/>
- <classpathentry path="src/test/support/java" kind="src" output="bin/test_support"/>
- <classpathentry path="src/test/java" kind="src" output="bin/test"/>
- <classpathentry path="src/test/java-internal" kind="src" output="bin/test-internal"/>
- <classpathentry path="org.eclipse.pde.core.requiredPlugins" kind="con"/>
- <classpathentry path="JUNIT_HOME/junit.jar" kind="var" sourcepath="JUNIT_SRC_HOME/junitsrc.zip"/>
- <classpathentry path="bin/main" kind="output"/>
+ <classpathentry kind="src" output="bin/main" path="src/main/java"/>
+ <classpathentry kind="src" output="bin/test_support" path="src/test/support/java"/>
+ <classpathentry kind="src" output="bin/test" path="src/test/java"/>
+ <classpathentry kind="src" output="bin/test-internal" path="src/test/java-internal"/>
+ <classpathentry kind="src" path="src/test/resources"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="var" path="JUNIT_HOME/junit.jar" sourcepath="JUNIT_SRC_HOME/junitsrc.zip"/>
+ <classpathentry kind="output" path="bin/main"/>
</classpath>
Modified: harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/VetoableChangeSupport.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/VetoableChangeSupport.java?view=diff&rev=533961&r1=533960&r2=533961
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/VetoableChangeSupport.java (original)
+++ harmony/enhanced/classlib/trunk/modules/beans/src/main/java/java/beans/VetoableChangeSupport.java Tue May 1 01:18:14 2007
@@ -24,6 +24,7 @@
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Hashtable;
+import java.util.Map.Entry;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -32,14 +33,14 @@
private static final long serialVersionUID = -5090210921595982017l;
- private transient Object sourceBean;
-
private transient List<VetoableChangeListener> allVetoableChangeListeners = new ArrayList<VetoableChangeListener>();
private transient Map<String, List<VetoableChangeListener>> selectedVetoableChangeListeners = new HashMap<String, List<VetoableChangeListener>>();
// fields for serialization compatibility
- private Hashtable<String, List<VetoableChangeListener>> children;
+ private Hashtable<String, VetoableChangeSupport> children;
+
+ private transient Object sourceBean;
private int vetoableChangeSupportSerializedDataVersion = 1;
@@ -79,7 +80,6 @@
listeners = new ArrayList<VetoableChangeListener>();
selectedVetoableChangeListeners.put(propertyName, listeners);
}
-
listeners.add(listener);
}
}
@@ -91,10 +91,8 @@
if (propertyName != null) {
listeners = selectedVetoableChangeListeners.get(propertyName);
}
-
return (listeners == null) ? new VetoableChangeListener[] {}
: getAsVetoableChangeListenerArray(listeners);
-
}
public void fireVetoableChange(String propertyName, boolean oldValue,
@@ -161,72 +159,60 @@
result.add(new VetoableChangeListenerProxy(propertyName,
listener));
}
-
}
-
}
-
return getAsVetoableChangeListenerArray(result);
}
private void writeObject(ObjectOutputStream oos) throws IOException {
- List<VetoableChangeListener> allSerializedVetoableChangeListeners = new ArrayList<VetoableChangeListener>();
- for (VetoableChangeListener vcl : allVetoableChangeListeners) {
- if (vcl instanceof Serializable) {
- allSerializedVetoableChangeListeners.add(vcl);
- }
- }
-
- Map<String, List<VetoableChangeListener>> selectedSerializedVetoableChangeListeners = new HashMap<String, List<VetoableChangeListener>>();
- for (String propertyName : selectedVetoableChangeListeners.keySet()) {
- List<VetoableChangeListener> keyValues = selectedVetoableChangeListeners
- .get(propertyName);
- if (keyValues != null) {
- List<VetoableChangeListener> serializedVetoableChangeListeners = new ArrayList<VetoableChangeListener>();
- for (VetoableChangeListener pcl : keyValues) {
- if (pcl instanceof Serializable) {
- serializedVetoableChangeListeners.add(pcl);
- }
- }
-
- if (!serializedVetoableChangeListeners.isEmpty()) {
- selectedSerializedVetoableChangeListeners.put(propertyName,
- serializedVetoableChangeListeners);
+ children = new Hashtable<String, VetoableChangeSupport>();
+ for (Entry<String, List<VetoableChangeListener>> entry : selectedVetoableChangeListeners
+ .entrySet()) {
+ List<VetoableChangeListener> list = entry.getValue();
+ VetoableChangeSupport vetoableChangeSupport = new VetoableChangeSupport(
+ sourceBean);
+ for (VetoableChangeListener vetoableChangeListener : list) {
+ if (vetoableChangeListener instanceof Serializable) {
+ vetoableChangeSupport
+ .addVetoableChangeListener(vetoableChangeListener);
}
-
}
+ children.put(entry.getKey(), vetoableChangeSupport);
}
+ oos.defaultWriteObject();
- children = new Hashtable<String, List<VetoableChangeListener>>(
- selectedSerializedVetoableChangeListeners);
- children.put("", allSerializedVetoableChangeListeners); //$NON-NLS-1$
- oos.writeObject(children);
-
- Object source = null;
- if (sourceBean instanceof Serializable) {
- source = sourceBean;
+ for (VetoableChangeListener vetoableChangeListener : allVetoableChangeListeners) {
+ if (vetoableChangeListener instanceof Serializable) {
+ oos.writeObject(vetoableChangeListener);
+ }
}
- oos.writeObject(source);
-
- oos.writeInt(vetoableChangeSupportSerializedDataVersion);
+ oos.writeObject(null);
}
- @SuppressWarnings("unchecked")
+
private void readObject(ObjectInputStream ois) throws IOException,
ClassNotFoundException {
+ ois.defaultReadObject();
+ selectedVetoableChangeListeners = new HashMap<String, List<VetoableChangeListener>>();
+ if (children != null) {
+ for (Entry<String, VetoableChangeSupport> entry : children
+ .entrySet()) {
+ List<VetoableChangeListener> list = new ArrayList<VetoableChangeListener>();
+ for (VetoableChangeListener vetoableChangeListener : entry
+ .getValue().allVetoableChangeListeners) {
+ list.add(vetoableChangeListener);
+ }
+ selectedVetoableChangeListeners.put(entry.getKey(), list);
+ }
- children = (Hashtable<String, List<VetoableChangeListener>>) ois
- .readObject();
-
- selectedVetoableChangeListeners = new HashMap<String, List<VetoableChangeListener>>(
- children);
- allVetoableChangeListeners = selectedVetoableChangeListeners.remove(""); //$NON-NLS-1$
- if (allVetoableChangeListeners == null) {
- allVetoableChangeListeners = new ArrayList<VetoableChangeListener>();
}
+ allVetoableChangeListeners = new ArrayList<VetoableChangeListener>();
- sourceBean = ois.readObject();
- vetoableChangeSupportSerializedDataVersion = ois.readInt();
+ VetoableChangeListener vetoableChangeListener;
+ while (null != (vetoableChangeListener = (VetoableChangeListener) ois
+ .readObject())) {
+ allVetoableChangeListeners.add(vetoableChangeListener);
+ }
}
public void fireVetoableChange(PropertyChangeEvent event)
Modified: harmony/enhanced/classlib/trunk/modules/beans/src/test/resources/serialization/java/beans/VetoableChangeSupport.ser
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/beans/src/test/resources/serialization/java/beans/VetoableChangeSupport.ser?view=diff&rev=533961&r1=533960&r2=533961
==============================================================================
Binary files - no diff available.