diff options
author | Warren Levy <warrenl@cygnus.com> | 2000-11-16 21:34:48 +0000 |
---|---|---|
committer | Warren Levy <warrenl@gcc.gnu.org> | 2000-11-16 21:34:48 +0000 |
commit | 3cd22508eba67ce9e23330ac5e4f052343685328 (patch) | |
tree | b895a710e76271b5a4f4860ebdd33f4b614eb558 /libjava/java/beans/PropertyChangeSupport.java | |
parent | 74fe26b270f55b1245d6cb863fca3734003a277a (diff) | |
download | gcc-3cd22508eba67ce9e23330ac5e4f052343685328.zip gcc-3cd22508eba67ce9e23330ac5e4f052343685328.tar.gz gcc-3cd22508eba67ce9e23330ac5e4f052343685328.tar.bz2 |
PropertyChangeSupport.java (propertyListeners): Made transient.
* java/beans/PropertyChangeSupport.java (propertyListeners): Made
transient.
(listeners): Made transient.
(source): Renamed from 'bean'.
(children): New field for serialization.
(propertyChangeSupportSerializedDataVersion): Ditto.
(serialVersionUID): Ditto.
(writeObject): New serialization method.
(readObject): New serialization method.
* java/beans/VetoableChangeSupport.java (propertyListeners): Made
transient.
(listeners): Made transient.
(source): Renamed from 'bean'.
(children): New field for serialization.
(vetoableChangeSupportSerializedDataVersion): Ditto.
(serialVersionUID): Ditto.
(writeObject): New serialization method.
(readObject): New serialization method.
* java/lang/reflect/natMethod.cc (_Jv_CallAnyMethodA): Fixed assert
to allow constructor to have a return type (i.e. the class that the
constructor constructs).
Serialization mods.
From-SVN: r37506
Diffstat (limited to 'libjava/java/beans/PropertyChangeSupport.java')
-rw-r--r-- | libjava/java/beans/PropertyChangeSupport.java | 56 |
1 files changed, 46 insertions, 10 deletions
diff --git a/libjava/java/beans/PropertyChangeSupport.java b/libjava/java/beans/PropertyChangeSupport.java index 512c8ed..4c3d3bc 100644 --- a/libjava/java/beans/PropertyChangeSupport.java +++ b/libjava/java/beans/PropertyChangeSupport.java @@ -1,5 +1,5 @@ /* java.beans.PropertyChangeSupport - Copyright (C) 1998, 1999 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -28,6 +28,11 @@ executable file might be covered by the GNU General Public License. */ package java.beans; import java.util.Hashtable; import java.util.Vector; +import java.util.Enumeration; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.IOException; +import java.io.Serializable; /** ** PropertyChangeSupport makes it easy to fire property @@ -39,16 +44,47 @@ import java.util.Vector; **/ public class PropertyChangeSupport implements java.io.Serializable { - Hashtable propertyListeners = new Hashtable(); - Vector listeners = new Vector(); - Object bean; + transient Hashtable propertyListeners = new Hashtable(); + transient Vector listeners = new Vector(); + Hashtable children; + Object source; + int propertyChangeSupportSerializedDataVersion = 2; + private static final long serialVersionUID = 6401253773779951803L; + + /** + * Saves the state of the object to the stream. */ + private void writeObject(ObjectOutputStream stream) throws IOException { + children = propertyListeners.isEmpty() ? null : propertyListeners; + stream.defaultWriteObject(); + for (Enumeration e = listeners.elements(); e.hasMoreElements(); ) { + PropertyChangeListener l = (PropertyChangeListener)e.nextElement(); + if (l instanceof Serializable) + stream.writeObject(l); + } + stream.writeObject(null); + } + + /** + * Reads the object back from stream (deserialization). + */ + private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { + stream.defaultReadObject(); + propertyListeners = (children == null) ? new Hashtable() : children; + PropertyChangeListener l; + while ((l = (PropertyChangeListener)stream.readObject()) != null) { + addPropertyChangeListener(l); + } + // FIXME: XXX: There is no spec for JDK 1.1 serialization + // so it is unclear what to do if the value of + // propertyChangeSupportSerializedDataVersion is 1. + } /** Create PropertyChangeSupport to work with a specific ** source bean. - ** @param bean the source bean to use. + ** @param source the source bean to use. **/ - public PropertyChangeSupport(Object bean) { - this.bean = bean; + public PropertyChangeSupport(Object source) { + this.source = source; } /** Adds a PropertyChangeListener to the list of listeners. @@ -166,7 +202,7 @@ public class PropertyChangeSupport implements java.io.Serializable { ** @param newVal the new value. **/ public void firePropertyChange(String propertyName, Object oldVal, Object newVal) { - firePropertyChange(new PropertyChangeEvent(bean,propertyName,oldVal,newVal)); + firePropertyChange(new PropertyChangeEvent(source,propertyName,oldVal,newVal)); } /** Fire a PropertyChangeEvent containing the old and new values of the property to all the listeners. @@ -176,7 +212,7 @@ public class PropertyChangeSupport implements java.io.Serializable { ** @param newVal the new value. **/ public void firePropertyChange(String propertyName, boolean oldVal, boolean newVal) { - firePropertyChange(new PropertyChangeEvent(bean, propertyName, new Boolean(oldVal), new Boolean(newVal))); + firePropertyChange(new PropertyChangeEvent(source, propertyName, new Boolean(oldVal), new Boolean(newVal))); } /** Fire a PropertyChangeEvent containing the old and new values of the property to all the listeners. @@ -186,7 +222,7 @@ public class PropertyChangeSupport implements java.io.Serializable { ** @param newVal the new value. **/ public void firePropertyChange(String propertyName, int oldVal, int newVal) { - firePropertyChange(new PropertyChangeEvent(bean, propertyName, new Integer(oldVal), new Integer(newVal))); + firePropertyChange(new PropertyChangeEvent(source, propertyName, new Integer(oldVal), new Integer(newVal))); } /** Tell whether the specified property is being listened on or not. |