Commit 3cd22508 by Warren Levy Committed by Warren Levy

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
parent 74fe26b2
2000-11-16 Warren Levy <warrenl@cygnus.com>
* 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).
2000-11-14 Tom Tromey <tromey@cygnus.com> 2000-11-14 Tom Tromey <tromey@cygnus.com>
* Makefile.in: Rebuilt. * Makefile.in: Rebuilt.
......
/* java.beans.PropertyChangeSupport /* 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. This file is part of GNU Classpath.
...@@ -28,6 +28,11 @@ executable file might be covered by the GNU General Public License. */ ...@@ -28,6 +28,11 @@ executable file might be covered by the GNU General Public License. */
package java.beans; package java.beans;
import java.util.Hashtable; import java.util.Hashtable;
import java.util.Vector; 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 ** PropertyChangeSupport makes it easy to fire property
...@@ -39,16 +44,47 @@ import java.util.Vector; ...@@ -39,16 +44,47 @@ import java.util.Vector;
**/ **/
public class PropertyChangeSupport implements java.io.Serializable { public class PropertyChangeSupport implements java.io.Serializable {
Hashtable propertyListeners = new Hashtable(); transient Hashtable propertyListeners = new Hashtable();
Vector listeners = new Vector(); transient Vector listeners = new Vector();
Object bean; 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 /** Create PropertyChangeSupport to work with a specific
** source bean. ** source bean.
** @param bean the source bean to use. ** @param source the source bean to use.
**/ **/
public PropertyChangeSupport(Object bean) { public PropertyChangeSupport(Object source) {
this.bean = bean; this.source = source;
} }
/** Adds a PropertyChangeListener to the list of listeners. /** Adds a PropertyChangeListener to the list of listeners.
...@@ -166,7 +202,7 @@ public class PropertyChangeSupport implements java.io.Serializable { ...@@ -166,7 +202,7 @@ public class PropertyChangeSupport implements java.io.Serializable {
** @param newVal the new value. ** @param newVal the new value.
**/ **/
public void firePropertyChange(String propertyName, Object oldVal, Object newVal) { 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. /** 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 { ...@@ -176,7 +212,7 @@ public class PropertyChangeSupport implements java.io.Serializable {
** @param newVal the new value. ** @param newVal the new value.
**/ **/
public void firePropertyChange(String propertyName, boolean oldVal, boolean newVal) { 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. /** 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 { ...@@ -186,7 +222,7 @@ public class PropertyChangeSupport implements java.io.Serializable {
** @param newVal the new value. ** @param newVal the new value.
**/ **/
public void firePropertyChange(String propertyName, int oldVal, int newVal) { 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. /** Tell whether the specified property is being listened on or not.
......
/* /*
* java.beans.VetoableChangeSupport: part of the Java Class Libraries project. * 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 * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public * modify it under the terms of the GNU Library General Public
...@@ -21,6 +21,11 @@ ...@@ -21,6 +21,11 @@
package java.beans; package java.beans;
import java.util.Hashtable; import java.util.Hashtable;
import java.util.Vector; 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 ** VetoableChangeSupport makes it easy to fire vetoable
...@@ -33,16 +38,48 @@ import java.util.Vector; ...@@ -33,16 +38,48 @@ import java.util.Vector;
**/ **/
public class VetoableChangeSupport implements java.io.Serializable { public class VetoableChangeSupport implements java.io.Serializable {
Hashtable propertyListeners = new Hashtable(); transient Hashtable propertyListeners = new Hashtable();
Vector listeners = new Vector(); transient Vector listeners = new Vector();
Object bean; 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 /** Create VetoableChangeSupport to work with a specific
** source bean. ** source bean.
** @param bean the source bean to use. ** @param source the source bean to use.
**/ **/
public VetoableChangeSupport(Object bean) { public VetoableChangeSupport(Object source) {
this.bean = bean; this.source = source;
} }
/** Adds a VetoableChangeListener to the list of listeners. /** Adds a VetoableChangeListener to the list of listeners.
...@@ -199,7 +236,7 @@ public class VetoableChangeSupport implements java.io.Serializable { ...@@ -199,7 +236,7 @@ public class VetoableChangeSupport implements java.io.Serializable {
** @exception PropertyVetoException if the change is vetoed. ** @exception PropertyVetoException if the change is vetoed.
**/ **/
public void fireVetoableChange(String propertyName, Object oldVal, Object newVal) throws PropertyVetoException { 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. /** 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 { ...@@ -213,7 +250,7 @@ public class VetoableChangeSupport implements java.io.Serializable {
** @exception PropertyVetoException if the change is vetoed. ** @exception PropertyVetoException if the change is vetoed.
**/ **/
public void fireVetoableChange(String propertyName, boolean oldVal, boolean newVal) throws PropertyVetoException { 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. /** 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 { ...@@ -227,7 +264,7 @@ public class VetoableChangeSupport implements java.io.Serializable {
** @exception PropertyVetoException if the change is vetoed. ** @exception PropertyVetoException if the change is vetoed.
**/ **/
public void fireVetoableChange(String propertyName, int oldVal, int newVal) throws PropertyVetoException { 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)));
} }
......
...@@ -312,7 +312,7 @@ _Jv_CallAnyMethodA (jobject obj, ...@@ -312,7 +312,7 @@ _Jv_CallAnyMethodA (jobject obj,
jvalue *result) jvalue *result)
{ {
JvAssert (! is_constructor || ! obj); JvAssert (! is_constructor || ! obj);
JvAssert (! is_constructor || ! return_type); JvAssert (! is_constructor || return_type);
// See whether call needs an object as the first argument. A // See whether call needs an object as the first argument. A
// constructor does need a `this' argument, but it is one we create. // constructor does need a `this' argument, but it is one we create.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment