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) {

Reply via email to