Fix serialization of Cluster.

We can no longer rely on the ability to reflectively access the private members
of java.awt.Rectangle. Modern JVMs are stricter about enforcing cross-module
private access. Prudes.
This commit is contained in:
Michael Bayne
2025-08-23 18:17:52 -07:00
parent b23d91cfd4
commit 4b3598093c
@@ -22,9 +22,12 @@
package com.threerings.whirled.spot.data;
import java.awt.Rectangle;
import java.io.IOException;
import com.samskivert.util.StringUtil;
import com.threerings.io.ObjectInputStream;
import com.threerings.io.ObjectOutputStream;
import com.threerings.util.ActionScript;
import com.threerings.presents.dobj.DSet;
@@ -48,6 +51,31 @@ public class Cluster extends Rectangle
return _key;
}
/**
* Writes our streamable fields. This is needed because we can no longer reflectively access the
* internals of java.awt.Rectangle.
*/
public void writeObject (ObjectOutputStream out)
throws IOException
{
out.writeInt(this.x);
out.writeInt(this.y);
out.writeInt(this.width);
out.writeInt(this.height);
out.writeInt(this.clusterOid);
}
/**
* Reads our streamable fields. This is needed because we can no longer reflectively access the
* internals of java.awt.Rectangle.
*/
public void readObject (ObjectInputStream in)
throws IOException, ClassNotFoundException
{
this.setBounds(in.readInt(), in.readInt(), in.readInt(), in.readInt());
this.clusterOid = in.readInt();
}
@Override
@ActionScript(omit=true)
public boolean equals (Object other)