<AWT Dev> JDK 12 RFR of JDK-8203263: Remove unnecessary throws clauses from serialization-related methods
Joseph D. Darcy
joe.darcy at oracle.com
Wed Jul 18 00:01:09 UTC 2018
Hello,
A few classes in awt and beans have writeObject methods declared to
throw extra exception types. The serialization spec requires the
following declaration for a writeObject method:
private void writeObject(ObjectOutputStream stream)
throws IOException;
https://docs.oracle.com/javase/10/docs/specs/serialization/output.html#the-writeobject-method
Declaring writeObject to throw additional exceptions is improper.
Please review the change below to remove the extraneous throws clauses:
http://cr.openjdk.java.net/~darcy/8203263.0/
Patch below.
Thanks,
-Joe
--- old/src/java.desktop/share/classes/java/awt/Font.java 2018-07-17
16:45:12.772011569 -0700
+++ new/src/java.desktop/share/classes/java/awt/Font.java 2018-07-17
16:45:11.415333527 -0700
@@ -1895,8 +1895,7 @@
* @see #readObject(java.io.ObjectInputStream)
*/
private void writeObject(java.io.ObjectOutputStream s)
- throws java.lang.ClassNotFoundException,
- java.io.IOException
+ throws java.io.IOException
{
if (values != null) {
synchronized(values) {
--- old/src/java.desktop/share/classes/java/awt/MenuBar.java 2018-07-17
16:45:15.997623670 -0700
+++ new/src/java.desktop/share/classes/java/awt/MenuBar.java 2018-07-17
16:45:14.576913625 -0700
@@ -432,8 +432,7 @@
* @see #readObject(java.io.ObjectInputStream)
*/
private void writeObject(java.io.ObjectOutputStream s)
- throws java.lang.ClassNotFoundException,
- java.io.IOException
+ throws java.io.IOException
{
s.defaultWriteObject();
}
---
old/src/java.desktop/share/classes/java/awt/font/TransformAttribute.java
2018-07-17 16:45:19.063155766 -0700
+++
new/src/java.desktop/share/classes/java/awt/font/TransformAttribute.java
2018-07-17 16:45:17.686467723 -0700
@@ -100,8 +100,7 @@
public static final TransformAttribute IDENTITY = new
TransformAttribute(null);
private void writeObject(java.io.ObjectOutputStream s)
- throws java.lang.ClassNotFoundException,
- java.io.IOException
+ throws java.io.IOException
{
// sigh -- 1.3 expects transform is never null, so we need to
always write one out
if (this.transform == null) {
---
old/src/java.desktop/share/classes/java/awt/geom/AffineTransform.java
2018-07-17 16:45:22.040643859 -0700
+++
new/src/java.desktop/share/classes/java/awt/geom/AffineTransform.java
2018-07-17 16:45:20.635941814 -0700
@@ -3943,7 +3943,7 @@
private static final long serialVersionUID = 1330973210523860834L;
private void writeObject(java.io.ObjectOutputStream s)
- throws java.lang.ClassNotFoundException, java.io.IOException
+ throws java.io.IOException
{
s.defaultWriteObject();
}
---
old/src/java.desktop/share/classes/java/beans/beancontext/BeanContextSupport.java
2018-07-17 16:45:25.334289961 -0700
+++
new/src/java.desktop/share/classes/java/beans/beancontext/BeanContextSupport.java
2018-07-17 16:45:23.973609919 -0700
@@ -998,7 +998,7 @@
* @param oos the ObjectOutputStream
*/
- private synchronized void writeObject(ObjectOutputStream oos)
throws IOException, ClassNotFoundException {
+ private synchronized void writeObject(ObjectOutputStream oos)
throws IOException {
serializing = true;
synchronized (BeanContext.globalHierarchyLock) {
More information about the awt-dev
mailing list