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.

Reply via email to