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
This commit is contained in:
Warren Levy 2000-11-16 21:34:48 +00:00 committed by Warren Levy
parent 74fe26b270
commit 3cd22508eb
4 changed files with 118 additions and 21 deletions

View File

@ -1,3 +1,27 @@
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>
* Makefile.in: Rebuilt.

View File

@ -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.

View File

@ -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)));
}

View File

@ -312,7 +312,7 @@ _Jv_CallAnyMethodA (jobject obj,
jvalue *result)
{
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
// constructor does need a `this' argument, but it is one we create.