From 1028628684f7be7226cad65833e20df7618c0123 Mon Sep 17 00:00:00 2001 From: "Robert C. Martin" Date: Mon, 27 Mar 2023 15:21:28 -0500 Subject: [PATCH] Protect against an exception if a node is orphaned by pruning. --- spec/more_speech/ui/swing/tabs_spec.clj | 3 +-- src/more_speech/ui/swing/article_tree.clj | 15 +++++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/spec/more_speech/ui/swing/tabs_spec.clj b/spec/more_speech/ui/swing/tabs_spec.clj index 281c615..d0d10d6 100644 --- a/spec/more_speech/ui/swing/tabs_spec.clj +++ b/spec/more_speech/ui/swing/tabs_spec.clj @@ -10,8 +10,7 @@ [more-speech.ui.swing.util :refer :all] [more-speech.ui.swing.util :as swing-util] [speclj.core :refer :all]) - (:use (seesaw [core] [font] [tree]) - (seesaw [core] [tree])) + (:use (seesaw [core] [font] [tree])) (:import (javax.swing.tree DefaultMutableTreeNode DefaultTreeModel))) (declare db) diff --git a/src/more_speech/ui/swing/article_tree.clj b/src/more_speech/ui/swing/article_tree.clj index ea9182e..a04c7cb 100644 --- a/src/more_speech/ui/swing/article_tree.clj +++ b/src/more_speech/ui/swing/article_tree.clj @@ -1,10 +1,10 @@ (ns more-speech.ui.swing.article-tree (:require - [more-speech.ui.swing.article-tree-util :refer :all] - [more-speech.nostr.events :as events] [more-speech.mem :refer :all] + [more-speech.nostr.events :as events] + [more-speech.ui.swing.article-tree-util :refer :all] [more-speech.ui.swing.tabs :as tabs]) - (:use [seesaw core font tree color]) + (:use (seesaw [color] [core] [font] [tree])) (:import (javax.swing.tree DefaultMutableTreeNode))) (defn add-orphaned-reference [referent id] @@ -63,7 +63,9 @@ (defn build-orphan-node [orphan-id] (let [node-map (get-mem :node-map) orphan-nodes (get node-map orphan-id)] - (copy-node (first orphan-nodes)))) + (if (empty? orphan-nodes) + nil + (copy-node (first orphan-nodes))))) (defn resolve-any-orphans [parent-id] (let [parent-nodes (get-mem [:node-map parent-id]) @@ -77,8 +79,9 @@ (let [orphan-id (first orphan-set)] (doseq [parent-node parent-nodes] (let [orphan-node (build-orphan-node orphan-id)] - (.add ^DefaultMutableTreeNode parent-node orphan-node) - (update-mem [:node-map orphan-id] conj orphan-node))) + (when (some? orphan-node) + (.add ^DefaultMutableTreeNode parent-node orphan-node) + (update-mem [:node-map orphan-id] conj orphan-node)))) (recur (rest orphan-set))))) (set-mem [:orphaned-references parent-id] #{})))))