From 9dce68c7155a0e8c300002bc8076e6e2347d7ce6 Mon Sep 17 00:00:00 2001 From: Ronald Brill Date: Tue, 15 Oct 2024 15:54:34 +0200 Subject: [PATCH] simplify code (#882) --- .../htmlunit/html/AbstractDomNodeList.java | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/src/main/java/org/htmlunit/html/AbstractDomNodeList.java b/src/main/java/org/htmlunit/html/AbstractDomNodeList.java index 9cdedae151..fffbe43fc8 100644 --- a/src/main/java/org/htmlunit/html/AbstractDomNodeList.java +++ b/src/main/java/org/htmlunit/html/AbstractDomNodeList.java @@ -17,7 +17,7 @@ import java.io.Serializable; import java.lang.ref.WeakReference; import java.util.AbstractList; -import java.util.ArrayList; +import java.util.Collections; import java.util.List; import org.w3c.dom.Node; @@ -35,7 +35,7 @@ public abstract class AbstractDomNodeList extends AbstractLis implements DomNodeList, Serializable { /** This node list's root node. */ - private DomNode node_; + private final DomNode node_; /** Element cache, used to avoid XPath expression evaluation as much as possible. */ private List cachedElements_; @@ -47,14 +47,18 @@ public abstract class AbstractDomNodeList extends AbstractLis */ public AbstractDomNodeList(final DomNode node) { super(); - if (node != null) { - node_ = node; - final DomHtmlAttributeChangeListenerImpl listener = new DomHtmlAttributeChangeListenerImpl(this); - node_.addDomChangeListener(listener); - if (node_ instanceof HtmlElement) { - ((HtmlElement) node_).addHtmlAttributeChangeListener(listener); - cachedElements_ = null; - } + if (node == null) { + node_ = null; + cachedElements_ = Collections.EMPTY_LIST; + return; + } + + node_ = node; + final DomHtmlAttributeChangeListenerImpl listener = new DomHtmlAttributeChangeListenerImpl(this); + node_.addDomChangeListener(listener); + if (node_ instanceof HtmlElement) { + ((HtmlElement) node_).addHtmlAttributeChangeListener(listener); + cachedElements_ = null; } } @@ -78,12 +82,7 @@ protected DomNode getDomNode() { */ private List getNodes() { if (cachedElements_ == null) { - if (node_ == null) { - cachedElements_ = new ArrayList<>(); - } - else { - cachedElements_ = provideElements(); - } + cachedElements_ = provideElements(); } return cachedElements_; } @@ -177,7 +176,7 @@ public void attributeReplaced(final HtmlAttributeChangeEvent event) { private void clearCache() { if (nodeList_ != null) { final AbstractDomNodeList nodes = nodeList_.get(); - if (nodes != null) { + if (nodes != null && nodes.node_ != null) { nodes.cachedElements_ = null; } }