This is an automated email from the ASF dual-hosted git repository.
vladimirsitnikov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jmeter.git
The following commit(s) were added to refs/heads/master by this push:
new 9793459774 perf: add PropertyIteratorImpl.EMPTY_ITERATOR when
iterating over an empty collection
9793459774 is described below
commit 9793459774fcdc4e0d69c05349a6e9a46edc6de8
Author: Vladimir Sitnikov <[email protected]>
AuthorDate: Wed Jun 14 13:31:46 2023 +0300
perf: add PropertyIteratorImpl.EMPTY_ITERATOR when iterating over an empty
collection
---
.../main/java/org/apache/jmeter/testelement/AbstractTestElement.java | 3 +++
.../java/org/apache/jmeter/testelement/property/AbstractProperty.java | 3 +++
.../org/apache/jmeter/testelement/property/PropertyIteratorImpl.java | 2 ++
3 files changed, 8 insertions(+)
diff --git
a/src/core/src/main/java/org/apache/jmeter/testelement/AbstractTestElement.java
b/src/core/src/main/java/org/apache/jmeter/testelement/AbstractTestElement.java
index 6bbf3bad48..2361b26fea 100644
---
a/src/core/src/main/java/org/apache/jmeter/testelement/AbstractTestElement.java
+++
b/src/core/src/main/java/org/apache/jmeter/testelement/AbstractTestElement.java
@@ -589,6 +589,9 @@ public abstract class AbstractTestElement implements
TestElement, Serializable,
// Note: can't use ConcurrentMap here as it would return elements in
unpredictable order
readLock();
try {
+ if (propMap.isEmpty()) {
+ return PropertyIteratorImpl.EMPTY_ITERATOR;
+ }
// TODO: copy the contents of the iterator to avoid
ConcurrentModificationException?
return new PropertyIteratorImpl(this, propMap.values());
} finally {
diff --git
a/src/core/src/main/java/org/apache/jmeter/testelement/property/AbstractProperty.java
b/src/core/src/main/java/org/apache/jmeter/testelement/property/AbstractProperty.java
index 37fc659d81..0b0ff4ef6c 100644
---
a/src/core/src/main/java/org/apache/jmeter/testelement/property/AbstractProperty.java
+++
b/src/core/src/main/java/org/apache/jmeter/testelement/property/AbstractProperty.java
@@ -77,6 +77,9 @@ public abstract class AbstractProperty implements
JMeterProperty {
}
protected PropertyIterator getIterator(Collection<JMeterProperty> values) {
+ if (values.isEmpty()) {
+ return PropertyIteratorImpl.EMPTY_ITERATOR;
+ }
return new PropertyIteratorImpl(values);
}
diff --git
a/src/core/src/main/java/org/apache/jmeter/testelement/property/PropertyIteratorImpl.java
b/src/core/src/main/java/org/apache/jmeter/testelement/property/PropertyIteratorImpl.java
index 6f54e598b9..ca043f5f9b 100644
---
a/src/core/src/main/java/org/apache/jmeter/testelement/property/PropertyIteratorImpl.java
+++
b/src/core/src/main/java/org/apache/jmeter/testelement/property/PropertyIteratorImpl.java
@@ -18,11 +18,13 @@
package org.apache.jmeter.testelement.property;
import java.util.Collection;
+import java.util.Collections;
import java.util.Iterator;
import org.apache.jmeter.testelement.TestElement;
public class PropertyIteratorImpl implements PropertyIterator {
+ public static final PropertyIterator EMPTY_ITERATOR = new
PropertyIteratorImpl(Collections.emptyList());
private final TestElement owner;
private final Iterator<? extends JMeterProperty> iter;