> I tried to clean up the documentation in the `java.awt.color` package and > specify how the `null` parameters are handled here and there. But it looks > like the `ICC_profile` class is too specific so I would like to discuss it > separately. > > The ICC_Profile has these methods: > * `getInstance(int)` - always throws specified > `IllegalArgumentException` on the wrong constant > * `getInstance(byte[])` - always throws specified `IllegalArgumentException` > on `null` > * `getInstance(String fileName)` - always throws unspecified > `NullPointerException` on `null` > * `getInstance(InputStream)` - thrown unspecified > `NullPointerException` before > [JDK-8227816](https://github.com/openjdk/jdk/commit/af20c6b9c4a3a21c1e2c7f56721e1077e7d8f388) > and now throws specified but misleading `IOException: Stream closed` > exception on `null` > > So we have 3 methods that can get null as a parameter and each throw a > different exception. > > Note that all of the specs for the methods above have this part: > >> @throws IllegalArgumentException If the stream does not contain valid ICC >> Profile data > > So I have an idea to change `getInstance(String)` and > `getInstance(InputStream)` to throw `IllegalArgumentException` even if I > personally prefer NPE to be thrown. > > From another point of view the `ICC_Profile` profile has other methods: > * `write(String fileName)` - always throws unspecified > `NullPointerException` on `null` > * `write(OutputStream) ` - always throws unspecified `NullPointerException` > on `null` > > I am not sure we can throw `IllegalArgumentException` from the `write` > methods, so the specification for `getInstance(String)` and > `getInstance(InputStream)` could be updated to throw NPE on null same as > related `write`. > > Thoughts?
Sergey Bylokhov has updated the pull request incrementally with two additional commits since the last revision: - Unify pairs for filenames and streams - Revert "8299333: Unify used exceptions by all variants of ICC_Profile.getInstance(null)" This reverts commit db5cfdc280c00e38949469f9bc6fcb3d06a12716. ------------- Changes: - all: https://git.openjdk.org/jdk/pull/11784/files - new: https://git.openjdk.org/jdk/pull/11784/files/db5cfdc2..9f7afa23 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=11784&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=11784&range=00-01 Stats: 107 lines in 3 files changed: 76 ins; 24 del; 7 mod Patch: https://git.openjdk.org/jdk/pull/11784.diff Fetch: git fetch https://git.openjdk.org/jdk pull/11784/head:pull/11784 PR: https://git.openjdk.org/jdk/pull/11784