On Mon, 7 Oct 2024 15:32:16 GMT, Michael Strauß <mstra...@openjdk.org> wrote:
>> None of these classes can be extended by user code, and any attempt to do so >> will fail at runtime with an exception. For this reason, we can seal the >> class hierarchy and remove the run-time checks to turn this into a >> compile-time error instead. >> >> In some cases, `Node` and `Shape` are extended by JavaFX classes in other >> modules, preventing those derived classes from being permitted subclasses. A >> non-exported `AbstractNode` and `AbstractShape` class is provided just for >> these scenarios. Note that introducing a new superclass is a source- and >> binary-compatible change (see [JLS ch. >> 13](https://docs.oracle.com/javase/specs/jls/se22/html/jls-13.html)). >> >> I'm not sure if this change requires a CSR, as it doesn't change the >> specification in any meaningful way. There can be no valid JavaFX program >> that is affected by this change. > > Michael Strauß has updated the pull request with a new target base due to a > merge or a rebase. The incremental webrev excludes the unrelated changes > brought in by the merge/rebase. The pull request contains three additional > commits since the last revision: > > - Merge branch 'master' into feature/sealed-classes > - remove documentation > - Seal Node, Camera, LightBase, Shape, Shape3D modules/javafx.graphics/src/main/java/com/sun/javafx/scene/CameraHelper.java line 60: > 58: @Override > 59: protected NGNode createPeerImpl(Node node) { > 60: throw new AssertionError(); is this the right error type? why change UnsupportedOperationException? ------------- PR Review Comment: https://git.openjdk.org/jfx/pull/1556#discussion_r1790897093