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 b34a62e1cb feat: Use Caffeine for caching customizers in TestBeanGUI
instead of commons-collections4 LRUMap (#5910)
b34a62e1cb is described below
commit b34a62e1cb958e0ef80e0eae9f16b9b09c6ab813
Author: Vladimir Sitnikov <[email protected]>
AuthorDate: Thu May 11 15:43:56 2023 +0300
feat: Use Caffeine for caching customizers in TestBeanGUI instead of
commons-collections4 LRUMap (#5910)
---
.../java/org/apache/jmeter/testbeans/gui/TestBeanGUI.java | 11 ++++++++---
xdocs/changes.xml | 1 +
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git
a/src/core/src/main/java/org/apache/jmeter/testbeans/gui/TestBeanGUI.java
b/src/core/src/main/java/org/apache/jmeter/testbeans/gui/TestBeanGUI.java
index 6c66e6000c..dfcce91dcb 100644
--- a/src/core/src/main/java/org/apache/jmeter/testbeans/gui/TestBeanGUI.java
+++ b/src/core/src/main/java/org/apache/jmeter/testbeans/gui/TestBeanGUI.java
@@ -37,7 +37,6 @@ import java.util.ResourceBundle;
import javax.swing.JPopupMenu;
-import org.apache.commons.collections4.map.LRUMap;
import org.apache.jmeter.assertions.Assertion;
import org.apache.jmeter.assertions.gui.AbstractAssertionGui;
import org.apache.jmeter.config.ConfigElement;
@@ -69,6 +68,9 @@ import org.apache.jorphan.util.JOrphanUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.github.benmanes.caffeine.cache.Cache;
+import com.github.benmanes.caffeine.cache.Caffeine;
+
/**
* JMeter GUI element editing for TestBean elements.
* <p>
@@ -109,7 +111,10 @@ public class TestBeanGUI extends
AbstractJMeterGuiComponent implements JMeterGUI
* needs to be limited, though, to avoid memory issues when editing very
* large test plans.
*/
- private final Map<TestElement, Customizer> customizers = new LRUMap<>(20);
+ private final Cache<TestElement, Customizer> customizers =
+ Caffeine.newBuilder() // TOOD: should this be made static?
+ .maximumSize(20)
+ .build();
/** Index of the customizer in the JPanel's child component list: */
private int customizerIndexInPanel;
@@ -325,7 +330,7 @@ public class TestBeanGUI extends AbstractJMeterGuiComponent
implements JMeterGUI
if (initialized){
remove(customizerIndexInPanel);
}
- Customizer c = customizers.computeIfAbsent(element, e -> {
+ Customizer c = customizers.get(element, e -> {
Customizer result = createCustomizer();
result.setObject(propertyMap);
return result;
diff --git a/xdocs/changes.xml b/xdocs/changes.xml
index 908c6f023f..4ea3946381 100644
--- a/xdocs/changes.xml
+++ b/xdocs/changes.xml
@@ -109,6 +109,7 @@ Summary
<ul>
<li><pr>725</pr>Add Chinese Simplified Translation for Open Model Thread
Group</li>
<li><pr>5710</pr>Add GitHub Issue templates</li>
+ <li><pr>5910</pr>Use Caffeine for caching customizers in TestBeanGUI instead
of commons-collections4 LRUMap</li>
<li><pr>5713</pr>Update Spock to 2.2-groovy-3.0 (from 2.1-groovy-3.0)</li>
<li><issue>5718</issue>Update Apache commons-text to 1.10.0 (from 1.9)</li>
<li><pr>5731</pr>Update docs for <code>changeCase</code> function.
<code>UPPER</code> is the default.