Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8282697

Add constructors take a cause to InvalidObjectException and InvalidClassException

    XMLWordPrintable

    Details

    • Type: CSR
    • Status: Closed
    • Priority: P4
    • Resolution: Approved
    • Fix Version/s: 19
    • Component/s: core-libs
    • Labels:
      None
    • Subcomponent:
    • Compatibility Kind:
      source
    • Compatibility Risk:
      minimal
    • Interface Kind:
      Java API
    • Scope:
      SE

      Description

      Summary

      Add cause-taking constructors to InvalidObjectException and InvalidClassException, along with their superclass ObjectStreamException.

      Problem

      The exception classes in question repeatedly have their initCause methods called. That functionality is better achieved passing a cause into the constructor.

      Solution

      Add the overloaded constructors in question.

      Specification

      -

      -- a/src/java.base/share/classes/java/io/InvalidClassException.java
      +++ b/src/java.base/share/classes/java/io/InvalidClassException.java
      @@ -73,6 +73,30 @@ public class InvalidClassException extends ObjectStreamException {
               classname = cname;
           }
      
      +    /**
      +     * Report an InvalidClassException for the reason and cause specified.
      +     *
      +     * @param reason  String describing the reason for the exception.
      +     * @param cause the cause
      +     * @since 19
      +     */
      +    public InvalidClassException(String reason, Throwable cause) {
      +        super(reason, cause);
      +    }
      +
      +    /**
      +     * Report an InvalidClassException for the reason and cause specified.
      +     *
      +     * @param cname   a String naming the invalid class.
      +     * @param reason  String describing the reason for the exception.
      +     * @param cause the cause
      +     * @since 19
      +     */
      +    public InvalidClassException(String cname, String reason, Throwable cause) {
      +        super(reason, cause);
      +        classname = cname;
      +    }
      +
           /**
            * Produce the message and include the classname, if present.
            */
      
      --- a/src/java.base/share/classes/java/io/InvalidObjectException.java
      +++ b/src/java.base/share/classes/java/io/InvalidObjectException.java
      @@ -48,4 +48,18 @@ public class InvalidObjectException extends ObjectStreamException {
           public  InvalidObjectException(String reason) {
               super(reason);
           }
      +
      +    /**
      +     * Constructs an {@code InvalidObjectException} with the given
      +     * reason and cause.
      +     *
      +     * @param reason Detailed message explaining the reason for the failure.
      +     * @param cause the cause
      +     *
      +     * @see ObjectInputValidation
      +     * @since 19
      +     */
      +    public  InvalidObjectException(String reason, Throwable cause) {
      +        super(reason, cause);
      +    }
       }
      
      --- a/src/java.base/share/classes/java/io/ObjectStreamException.java
      +++ b/src/java.base/share/classes/java/io/ObjectStreamException.java
      @@ -44,10 +44,32 @@ public abstract class ObjectStreamException extends IOException {
               super(message);
           }
      
      +    /**
      +     * Create an ObjectStreamException with the specified message and
      +     * cause.
      +     *
      +     * @param message the detailed message for the exception
      +     * @param cause the cause
      +     * @since 19
      +     */
      +    protected ObjectStreamException(String message, Throwable cause) {
      +        super(message, cause);
      +    }
      +
           /**
            * Create an ObjectStreamException.
            */
           protected ObjectStreamException() {
               super();
           }
      +
      +    /**
      +     * Create an ObjectStreamException with the specified cause.
      +     *
      +     * @param cause the cause
      +     * @since 19
      +     */
      +    protected ObjectStreamException(Throwable cause) {
      +        super(cause);
      +    }
       }

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              darcy Joe Darcy
              Reporter:
              darcy Joe Darcy
              Reviewed By:
              Roger Riggs
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: