summaryrefslogtreecommitdiff
path: root/libjava/java/beans
diff options
context:
space:
mode:
authorwarrenl <warrenl@138bc75d-0d04-0410-961f-82ee72b054a4>2000-11-16 21:34:48 +0000
committerwarrenl <warrenl@138bc75d-0d04-0410-961f-82ee72b054a4>2000-11-16 21:34:48 +0000
commitd40d5ee920dd9b518ee2d882cb57e219203a3fac (patch)
treeb895a710e76271b5a4f4860ebdd33f4b614eb558 /libjava/java/beans
parent907ba722395185009291c17810b6879458801959 (diff)
downloadgcc-d40d5ee920dd9b518ee2d882cb57e219203a3fac.tar.gz
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37506 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/java/beans')
-rw-r--r--libjava/java/beans/PropertyChangeSupport.java56
-rw-r--r--libjava/java/beans/VetoableChangeSupport.java57
2 files changed, 93 insertions, 20 deletions
diff --git a/libjava/java/beans/PropertyChangeSupport.java b/libjava/java/beans/PropertyChangeSupport.java
index 512c8edeb7d..4c3d3bc4515 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.
diff --git a/libjava/java/beans/VetoableChangeSupport.java b/libjava/java/beans/VetoableChangeSupport.java
index 6d0ff0c0acb..a3e2bc63152 100644
--- a/libjava/java/beans/VetoableChangeSupport.java
+++ b/libjava/java/beans/VetoableChangeSupport.java
@@ -1,6 +1,6 @@
/*
* java.beans.VetoableChangeSupport: part of the Java Class Libraries project.
- * Copyright (C) 1998 Free Software Foundation
+ * Copyright (C) 1998, 2000 Free Software Foundation
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -21,6 +21,11 @@
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;
/**
** VetoableChangeSupport makes it easy to fire vetoable
@@ -33,16 +38,48 @@ import java.util.Vector;
**/
public class VetoableChangeSupport 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 vetoableChangeSupportSerializedDataVersion = 2;
+ private static final long serialVersionUID = -5090210921595982017L;
+
+ /**
+ * 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(); ) {
+ VetoableChangeListener l = (VetoableChangeListener)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;
+ VetoableChangeListener l;
+ while ((l = (VetoableChangeListener)stream.readObject()) != null) {
+ addVetoableChangeListener(l);
+ }
+ // FIXME: XXX: There is no spec for JDK 1.1 serialization
+ // so it is unclear what to do if the value of
+ // vetoableChangeSupportSerializedDataVersion is 1.
+ }
+
/** Create VetoableChangeSupport to work with a specific
** source bean.
- ** @param bean the source bean to use.
+ ** @param source the source bean to use.
**/
- public VetoableChangeSupport(Object bean) {
- this.bean = bean;
+ public VetoableChangeSupport(Object source) {
+ this.source = source;
}
/** Adds a VetoableChangeListener to the list of listeners.
@@ -199,7 +236,7 @@ public class VetoableChangeSupport implements java.io.Serializable {
** @exception PropertyVetoException if the change is vetoed.
**/
public void fireVetoableChange(String propertyName, Object oldVal, Object newVal) throws PropertyVetoException {
- fireVetoableChange(new PropertyChangeEvent(bean,propertyName,oldVal,newVal));
+ fireVetoableChange(new PropertyChangeEvent(source,propertyName,oldVal,newVal));
}
/** Fire a VetoableChangeEvent containing the old and new values of the property to all the listeners.
@@ -213,7 +250,7 @@ public class VetoableChangeSupport implements java.io.Serializable {
** @exception PropertyVetoException if the change is vetoed.
**/
public void fireVetoableChange(String propertyName, boolean oldVal, boolean newVal) throws PropertyVetoException {
- fireVetoableChange(new PropertyChangeEvent(bean,propertyName,new Boolean(oldVal),new Boolean(newVal)));
+ fireVetoableChange(new PropertyChangeEvent(source,propertyName,new Boolean(oldVal),new Boolean(newVal)));
}
/** Fire a VetoableChangeEvent containing the old and new values of the property to all the listeners.
@@ -227,7 +264,7 @@ public class VetoableChangeSupport implements java.io.Serializable {
** @exception PropertyVetoException if the change is vetoed.
**/
public void fireVetoableChange(String propertyName, int oldVal, int newVal) throws PropertyVetoException {
- fireVetoableChange(new PropertyChangeEvent(bean,propertyName,new Integer(oldVal),new Integer(newVal)));
+ fireVetoableChange(new PropertyChangeEvent(source,propertyName,new Integer(oldVal),new Integer(newVal)));
}