Skip to content

Commit f5d8bbc

Browse files
committed
Tidy up, removed redundant (and added necessary) notifications of changes in AlertTreeModel:
- Changed the method findAndAddChild to notify of changes in the parent node when the child is added; - Changed the method findAndAddLeaf (and renamed it to addLeaf) to not return the leaf and notify that the parent node has changed only when the node is really added; - Changed method deletePath(Alert) to only notify of the changes really made; - Removed the methods nodesChanged(AlertNode) and nodesChangedEventHandler(AlertNode) as they are no longer used.
1 parent f532fa6 commit f5d8bbc

File tree

1 file changed

+16
-41
lines changed

1 file changed

+16
-41
lines changed

src/org/zaproxy/zap/extension/alert/AlertTreeModel.java

Lines changed: 16 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ private synchronized void addPathEventHandler(Alert alert) {
7373
if (alert.getMethod() != null) {
7474
method = alert.getMethod() + ": ";
7575
}
76-
findAndAddLeaf(parent, method + alert.getUri(), alert);
76+
addLeaf(parent, method + alert.getUri(), alert);
7777

7878
}
7979

@@ -149,12 +149,13 @@ private AlertNode findAndAddChild(AlertNode parent, String nodeName, Alert alert
149149
node.setUserObject(alert);
150150
parent.insert(node, idx);
151151
nodesWereInserted(parent, new int[] { idx });
152+
nodeChanged(parent);
152153
return node;
153154
}
154155
return parent.getChildAt(idx);
155156
}
156157

157-
private AlertNode findAndAddLeaf(AlertNode parent, String nodeName, Alert alert) {
158+
private void addLeaf(AlertNode parent, String nodeName, Alert alert) {
158159
int risk = alert.getRisk();
159160
if (alert.getConfidence() == Alert.FALSE_POSITIVE) {
160161
// Special case!
@@ -168,56 +169,30 @@ private AlertNode findAndAddLeaf(AlertNode parent, String nodeName, Alert alert)
168169
idx = -(idx+1);
169170
parent.insert(needle, idx);
170171
nodesWereInserted(parent, new int[] { idx });
172+
nodeChanged(parent);
171173
}
172-
AlertNode node = parent.getChildAt(idx);
173-
nodesChanged(node);
174-
return node;
175-
}
176-
177-
private void nodesChanged(final AlertNode node) {
178-
if (EventQueue.isDispatchThread()) {
179-
nodesChangedEventHandler(node);
180-
} else {
181-
try {
182-
EventQueue.invokeLater(new Runnable() {
183-
@Override
184-
public void run() {
185-
nodesChangedEventHandler(node);
186-
}
187-
});
188-
} catch (Exception e) {
189-
logger.error(e.getMessage(), e);
190-
}
191-
}
192-
}
193-
194-
private void nodesChangedEventHandler(AlertNode node) {
195-
// Loop up as parent node names include counts which might have changed
196-
this.nodeChanged(node);
197-
AlertNode parent = node.getParent();
198-
if (parent != null) {
199-
nodesChangedEventHandler(parent);
200-
}
201174
}
202175

203176
public synchronized void deletePath(Alert alert) {
204177

205178
AlertNode node = findLeafNodeForAlert((AlertNode) getRoot(), alert);
206179
if (node != null) {
207-
208-
// Remove it
209180
AlertNode parent = node.getParent();
210-
211-
this.removeNodeFromParent(node);
212-
nodeStructureChanged(parent);
213-
214-
if (parent.getChildCount() == 0) {
181+
if (parent.getChildCount() == 1) {
215182
// Parent has no other children, remove it also
216-
this.removeNodeFromParent(parent);
217-
nodeStructureChanged((AlertNode) this.getRoot());
218-
} else if (parent.getUserObject() == node.getUserObject()) {
183+
parent.remove(0);
184+
AlertNode grandParent = parent.getParent();
185+
this.removeNodeFromParent(parent);
186+
this.nodeChanged(grandParent);
187+
return;
188+
}
189+
190+
// Remove it
191+
this.removeNodeFromParent(node);
192+
if (parent.getUserObject() == node.getUserObject()) {
219193
parent.setUserObject(parent.getChildAt(0).getUserObject());
220194
}
195+
this.nodeChanged(parent);
221196
}
222197
}
223198

0 commit comments

Comments
 (0)