https://bugs.openjdk.java.net/browse/JDK-8255800 could have been a one line spec clean up but it didn't take a lot of looking to realize there were many more inconsistencies between spec and implementation. I've spent a lot of time on what is just small number of factory methods in Raster because there are so many possible exceptions and in some cases they rely on other API they call to generate exceptions and these may have not been documented or documented acc. to some long lost behavior. I've mostly tried to ONLY change spec. But I couldn't help myself when some checks were missed that ended up with bizarre and dubious behavior - throwing NegativeArrayIndexException which just about always has to be an internal bug !
The supplied test passes on JDK 16 as well as this code, because the (relatively) small number of cases where JDK 16 threw NegativeArrayIndexException are caught and allowed only for releases < 17 So where you see those in the test it corresponds to the behavioral changes from NegativeArrayIndexException to IllegalArgumentException. JCK conformance tests still pass so they must not test those conditions. ------------- Commit messages: - 8255800: Raster creation methods need some specification clean up Changes: https://git.openjdk.java.net/jdk/pull/3223/files Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=3223&range=00 Issue: https://bugs.openjdk.java.net/browse/JDK-8255800 Stats: 1469 lines in 5 files changed: 1399 ins; 35 del; 35 mod Patch: https://git.openjdk.java.net/jdk/pull/3223.diff Fetch: git fetch https://git.openjdk.java.net/jdk pull/3223/head:pull/3223 PR: https://git.openjdk.java.net/jdk/pull/3223