- 
    CSR 
- 
    Resolution: Approved
- 
     P3 P3
- 
    None
- 
        behavioral
- 
        minimal
- 
        Java API
- 
        SE
Summary
Update the documentation comment in KeyStoreSpi.engineStore(KeyStore.LoadStoreParameter param) and in KeyStore.store(KeyStore.LoadStoreParameter param) to state that they can throw UnsupportedOperationException.
Problem
The KeystoreSpi.engineStore(KeyStore.LoadStoreParameter param) may throw UnsupportedOperationException if the implementation does not support engineStore() operation. The KeyStore.store(KeyStore.LoadStoreParameter param) can throw UnsupportedOperationException as it invokes KeystoreSpi.engineStore(KeyStore.LoadStoreParameter param). However, the comments for both methods do not document that UnsupportedOperationException can be thrown.
Solution
The documentation comment in KeyStoreSpi.engineStore(KeyStore.LoadStoreParameter param) and KeyStore.store(KeyStore.LoadStoreParameter param) should be improved to state that UnsupportedOperationException can be thrown. Appropriate javadoc tags @implSpec and @throws are added for description of UnsupportedOperationException.
Specification
The following spec change is made to engineStore(KeyStore.LoadStoreParameter param) in KeyStoreSpi class:
    /**
     * Stores this keystore using the given
     * {@code KeyStore.LoadStoreParameter}.
     *
+    * @implSpec The default implementation throws
+    *          an {@link UnsupportedOperationException}.
     *
     * @param param the {@code KeyStore.LoadStoreParameter}
     *          that specifies how to store the keystore,
     *          which may be {@code null}
     *
     * @throws    IllegalArgumentException if the given
     *          {@code KeyStore.LoadStoreParameter}
     *          input is not recognized
     * @throws    IOException if there was an I/O problem with data
     * @throws    NoSuchAlgorithmException if the appropriate data integrity
     *          algorithm could not be found
     * @throws    CertificateException if any of the certificates included in
     *          the keystore data could not be stored
+    * @throws    UnsupportedOperationException if the implementation does
+    *          not support this operation
     *
     * @since 1.5
     */
    public void engineStore(KeyStore.LoadStoreParameter param)
                throws IOException, NoSuchAlgorithmException,
                CertificateExceptionThe following spec change is made to store(KeyStore.LoadStoreParameter param) in KeyStore class:
    /**
     * Stores this keystore using the given {@code LoadStoreParameter}.
     *
     * @param param the {@code LoadStoreParameter}
     *          that specifies how to store the keystore,
     *          which may be {@code null}
     *
     * @throws    IllegalArgumentException if the given
     *          {@code LoadStoreParameter}
     *          input is not recognized
     * @throws    KeyStoreException if the keystore has not been initialized
     *          (loaded)
     * @throws    IOException if there was an I/O problem with data
     * @throws    NoSuchAlgorithmException if the appropriate data integrity
     *          algorithm could not be found
     * @throws    CertificateException if any of the certificates included in
     *          the keystore data could not be stored
+    * @throws    UnsupportedOperationException if this operation is not supported
     *
     * @since 1.5
     */
    public final void store(LoadStoreParameter param)
                throws KeyStoreException, IOException,
                NoSuchAlgorithmException, CertificateException- csr of
- 
                    JDK-8246005 KeyStoreSpi::engineStore(LoadStoreParameter) spec mismatch to its behavior -           
- Resolved
 
-