This is an automated email from the ASF dual-hosted git repository.
asf-gitbox-commits pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git
The following commit(s) were added to refs/heads/master by this push:
new 0aedf653a CAY-3002 Modeler: NPE after clicking path chooser
0aedf653a is described below
commit 0aedf653acbdd3597ee063b4b9b60671d6cb6c97
Author: Andrus Adamchik <[email protected]>
AuthorDate: Sat Aug 29 18:03:42 2026 -0400
CAY-3002 Modeler: NPE after clicking path chooser
---
RELEASE-NOTES.txt | 1 +
.../editor/objentity/properties/DbAttributePathComboBoxEditor.java | 2 ++
.../objentity/properties/DbRelationshipPathComboBoxEditor.java | 2 ++
.../editor/objentity/properties/PathChooserComboBoxCellEditor.java | 6 +++++-
4 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 9b335e461..f99cfb9b3 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -17,6 +17,7 @@ CAY-2998 Modeler: clickabe "Target" column to navigate
relationships
CAY-2999 Modeler: A restricted method in java.lang.System has been called
CAY-3000 Modeler: unifying the main views of all model objects
CAY-3001 Modeler: Auto-increment attribute is not picked up
+CAY-3002 Modeler: NPE after clicking path chooser
----------------------------------
Release: 5.0-M3
diff --git
a/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/properties/DbAttributePathComboBoxEditor.java
b/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/properties/DbAttributePathComboBoxEditor.java
index bcf08e06b..186d0e464 100644
---
a/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/properties/DbAttributePathComboBoxEditor.java
+++
b/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/properties/DbAttributePathComboBoxEditor.java
@@ -60,6 +60,8 @@ class DbAttributePathComboBoxEditor extends
PathChooserComboBoxCellEditor<ObjAtt
this.row = row;
treeModel = createTreeModelForComboBox(row);
if (treeModel == null) {
+ // no combo box for this cell; drop the one left over from a
previously edited row
+ pathChooser = null;
return new JLabel("You should select table for this ObjectEntity");
}
initializeCombo(model, row, table);
diff --git
a/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/properties/DbRelationshipPathComboBoxEditor.java
b/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/properties/DbRelationshipPathComboBoxEditor.java
index 661ae2f46..b0513ad67 100644
---
a/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/properties/DbRelationshipPathComboBoxEditor.java
+++
b/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/properties/DbRelationshipPathComboBoxEditor.java
@@ -57,6 +57,8 @@ class DbRelationshipPathComboBoxEditor extends
PathChooserComboBoxCellEditor<Obj
this.table = table;
treeModel = createTreeModelForComboBox(row);
if (treeModel == null) {
+ // no combo box for this cell; drop the one left over from a
previously edited row
+ pathChooser = null;
return new JLabel("You should select table for this ObjectEntity");
}
initializeCombo(model, row, table);
diff --git
a/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/properties/PathChooserComboBoxCellEditor.java
b/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/properties/PathChooserComboBoxCellEditor.java
index 1dee114bf..fff9dd023 100644
---
a/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/properties/PathChooserComboBoxCellEditor.java
+++
b/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/properties/PathChooserComboBoxCellEditor.java
@@ -203,7 +203,11 @@ abstract class PathChooserComboBoxCellEditor<T extends
CMTableModel<?>> extends
@Override
public boolean stopCellEditing() {
- pathChooser.actionPerformed(new ActionEvent(this, 0, ""));
+ // "pathChooser" is null when the cell editor was never initialized,
i.e. when the ObjEntity has no
+ // DbEntity and "getTableCellEditorComponent()" returned a placeholder
label instead of the combo box
+ if (pathChooser != null) {
+ pathChooser.actionPerformed(new ActionEvent(this, 0, ""));
+ }
fireEditingStopped();
return true;
}