aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/beans/PropertyChangeSupport.java
diff options
context:
space:
mode:
authorWarren Levy <warrenl@cygnus.com>2000-11-16 21:34:48 +0000
committerWarren Levy <warrenl@gcc.gnu.org>2000-11-16 21:34:48 +0000
commit3cd22508eba67ce9e23330ac5e4f052343685328 (patch)
treeb895a710e76271b5a4f4860ebdd33f4b614eb558 /libjava/java/beans/PropertyChangeSupport.java
parent74fe26b270f55b1245d6cb863fca3734003a277a (diff)
downloadgcc-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.java56
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.