)]}'
{
  "commit": "c65bda2e57d4423af6222cea490672ca90467727",
  "tree": "5356dc3b1ad83fe2dcc97f7cc0b4b7cf08f7b172",
  "parents": [
    "f964a26fdb29d064a6ac74a1aba3808d9f76e96a"
  ],
  "author": {
    "name": "Bauke Scholtz",
    "email": "balusc@gmail.com",
    "time": "Thu Jul 30 03:23:16 2026 -0400"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Jul 30 09:23:16 2026 +0200"
  },
  "message": "Key UIData/UIRepeat per-row EVH state by clientId, not row index (#1034)\n\nA nested iterating component is a single instance reused across the\nenclosing component\u0027s rows, so keying its per-row EditableValueHolder\nstate by the bare row index made every enclosing row map to the same\nkey and overwrite the previous one. Only the last enclosing row\u0027s\nsubmitted values survived: the rest were dropped silently, without\nconversion, validation, model update or a message.\n\nKey on getContainerClientId() instead, which is this component\u0027s\nclientId plus its current row index and therefore carries the\nenclosing rows\u0027 indices too. That is what _rowDeltaStates and\n_rowTransientStates key on, and what _rowStates itself keyed on\nbefore 6336caf1d.\n\nThe positional EditableValueHolderState list, its deferred allocation\nand the flat iteration lists are unchanged; only the map key differs.\n\nMojarra hit the same defect and resolved it the same way, see\nhttps://github.com/eclipse-ee4j/mojarra/issues/5874\n\nCo-authored-by: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2bb009725013ab5a13a22913fb3ab85d3eb050fc",
      "old_mode": 33188,
      "old_path": "api/src/main/java/jakarta/faces/component/UIData.java",
      "new_id": "ea76286d20ff510e29cbc270d4386e99346a8bb9",
      "new_mode": 33188,
      "new_path": "api/src/main/java/jakarta/faces/component/UIData.java"
    },
    {
      "type": "modify",
      "old_id": "099c83e4024e628d86ad72000b5ddf83f0802ec6",
      "old_mode": 33188,
      "old_path": "impl/src/main/java/org/apache/myfaces/view/facelets/component/UIRepeat.java",
      "new_id": "dcaf525dd45b502573a9e832c809f75a74775d0b",
      "new_mode": 33188,
      "new_path": "impl/src/main/java/org/apache/myfaces/view/facelets/component/UIRepeat.java"
    },
    {
      "type": "modify",
      "old_id": "6108dbc3ffe5537283b08e7959b8e6e4f8952627",
      "old_mode": 33188,
      "old_path": "impl/src/test/java/jakarta/faces/component/UIDataTest.java",
      "new_id": "8e331b050c56b034316ad78cd168941f71052332",
      "new_mode": 33188,
      "new_path": "impl/src/test/java/jakarta/faces/component/UIDataTest.java"
    },
    {
      "type": "modify",
      "old_id": "739de8a4f03970101e1ba3c3221a8e8b1633f5c5",
      "old_mode": 33188,
      "old_path": "impl/src/test/java/org/apache/myfaces/view/facelets/component/UIRepeatTest.java",
      "new_id": "4388644cb1d83ee602c577878510ee3b9d83723a",
      "new_mode": 33188,
      "new_path": "impl/src/test/java/org/apache/myfaces/view/facelets/component/UIRepeatTest.java"
    }
  ]
}
