From 8e0943a2a77296e09fca7f60a4f78d698ddeebdb Mon Sep 17 00:00:00 2001 From: Sergey Ponomarev Date: Sun, 11 Aug 2024 12:32:13 +0300 Subject: [PATCH 1/3] ContactList.getSubContactGroup(): use for each Signed-off-by: Sergey Ponomarev --- .../main/java/org/jivesoftware/spark/ui/ContactList.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/org/jivesoftware/spark/ui/ContactList.java b/core/src/main/java/org/jivesoftware/spark/ui/ContactList.java index e62e5212c..217bd647c 100644 --- a/core/src/main/java/org/jivesoftware/spark/ui/ContactList.java +++ b/core/src/main/java/org/jivesoftware/spark/ui/ContactList.java @@ -1178,15 +1178,13 @@ public ContactGroup getParentGroup(String groupName) { * @return the nested ContactGroup. If not found, null will be returned. */ private ContactGroup getSubContactGroup(ContactGroup group, String groupName) { - final Iterator contactGroups = group.getContactGroups().iterator(); ContactGroup grp = null; - while (contactGroups.hasNext()) { - ContactGroup contactGroup = contactGroups.next(); + for (ContactGroup contactGroup : group.getContactGroups()) { if (contactGroup.getGroupName().equals(groupName)) { grp = contactGroup; break; - } else if (contactGroup.getContactGroups().size() > 0) { + } else if (!contactGroup.getContactGroups().isEmpty()) { grp = getSubContactGroup(contactGroup, groupName); if (grp != null) { break; From 366eea47bae65d2f13c9810a3ef996a9202222dc Mon Sep 17 00:00:00 2001 From: Sergey Ponomarev Date: Sun, 11 Aug 2024 12:33:13 +0300 Subject: [PATCH 2/3] ContactList.getSubContactGroup(): use case insensitive equals Signed-off-by: Sergey Ponomarev --- core/src/main/java/org/jivesoftware/spark/ui/ContactList.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/jivesoftware/spark/ui/ContactList.java b/core/src/main/java/org/jivesoftware/spark/ui/ContactList.java index 217bd647c..34ec03f4b 100644 --- a/core/src/main/java/org/jivesoftware/spark/ui/ContactList.java +++ b/core/src/main/java/org/jivesoftware/spark/ui/ContactList.java @@ -1133,7 +1133,7 @@ public ContactGroup getContactGroup(String groupName) { ContactGroup cGroup = null; for (ContactGroup contactGroup : groupList) { - if (contactGroup.getGroupName().equals(groupName)) { + if (contactGroup.getGroupName().equalsIgnoreCase(groupName)) { cGroup = contactGroup; break; } else { @@ -1181,7 +1181,7 @@ private ContactGroup getSubContactGroup(ContactGroup group, String groupName) { ContactGroup grp = null; for (ContactGroup contactGroup : group.getContactGroups()) { - if (contactGroup.getGroupName().equals(groupName)) { + if (contactGroup.getGroupName().equalsIgnoreCase(groupName)) { grp = contactGroup; break; } else if (!contactGroup.getContactGroups().isEmpty()) { From f96c31d0e00d6d1862ef3f7038fea1fc53855e6d Mon Sep 17 00:00:00 2001 From: Sergey Ponomarev Date: Sun, 11 Aug 2024 12:34:52 +0300 Subject: [PATCH 3/3] ContactList.showPopup(): avoid NPE if no contactGroup found Signed-off-by: Sergey Ponomarev --- .../main/java/org/jivesoftware/spark/ui/ContactList.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/jivesoftware/spark/ui/ContactList.java b/core/src/main/java/org/jivesoftware/spark/ui/ContactList.java index 34ec03f4b..81b003d56 100644 --- a/core/src/main/java/org/jivesoftware/spark/ui/ContactList.java +++ b/core/src/main/java/org/jivesoftware/spark/ui/ContactList.java @@ -1516,9 +1516,12 @@ public void actionPerformed(ActionEvent actionEvent) { String groupName = item.getGroupName(); ContactGroup contactGroup = getContactGroup(groupName); + if (contactGroup == null) { + Log.error("Unable to get contact group for " + groupName); + } // Only show "Remove Contact From Group" if the user belongs to more than one group. - if (!contactGroup.isSharedGroup() && !contactGroup.isOfflineGroup() && contactGroup != getUnfiledGroup()) { + if (contactGroup != null && !contactGroup.isSharedGroup() && !contactGroup.isOfflineGroup() && contactGroup != getUnfiledGroup()) { Roster roster = Roster.getInstanceFor(SparkManager.getConnection()); RosterEntry entry = roster.getEntry(item.getJid().asBareJid()); if (entry != null) { @@ -1559,7 +1562,9 @@ public void actionPerformed(ActionEvent e) { // See if we should disable the option to remove a contact if (!Default.getBoolean(Default.DISABLE_REMOVALS) && Enterprise.containsFeature(Enterprise.REMOVALS_FEATURE)) { - if (!contactGroup.isSharedGroup() && !isInSharedGroup) popup.add(removeAction); + if (contactGroup != null && !contactGroup.isSharedGroup() && !isInSharedGroup) { + popup.add(removeAction); + } } // See if we should disable the option to rename a contact