ProxyBuilder is used by the FXML loader to instantiate classes whose 
constructors are annotated with `@NamedArg`. When such a class also exposes a 
read-only `Map` property (e.g. getProperties() — the same pattern used by 
`javafx.scene.Node`), setting child elements under that property in FXML caused 
incorrect behaviour or a runtime error.

**Root cause:** _getReadOnlyProperty()_ always returned an `ArrayListWrapper` 
regardless of the actual **getter** return type. When the getter returns a 
`Map`, an `ArrayListWrapper` is the wrong container and the entries are never 
transferred to the real map on the object.

- [x] I confirm that I make this contribution in accordance with the [OpenJDK 
Interim AI Policy](https://openjdk.org/legal/ai).

-------------

Commit messages:
 - Fix ProxyBuilder to correctly handle read-only Observable Map/List with 
@NamedArg
 - Fix ProxyBuilder to correctly handle read-only Map properties with @NamedArg

Changes: https://git.openjdk.org/jfx/pull/2167/files
  Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=2167&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8203870
  Stats: 162 lines in 3 files changed: 157 ins; 0 del; 5 mod
  Patch: https://git.openjdk.org/jfx/pull/2167.diff
  Fetch: git fetch https://git.openjdk.org/jfx.git pull/2167/head:pull/2167

PR: https://git.openjdk.org/jfx/pull/2167

Reply via email to