All Downloads are FREE. Search and download functionalities are using the official Maven repository.

us.abstracta.jmeter.javadsl.core.BuildTreeContext Maven / Gradle / Ivy

Go to download

Simple API to run JMeter performance tests in an VCS and programmers friendly way.

There is a newer version: 028
Show newest version
package us.abstracta.jmeter.javadsl.core;

import java.awt.Component;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Supplier;
import org.apache.jorphan.collections.HashTree;
import us.abstracta.jmeter.javadsl.core.listeners.DslVisualizer;

/**
 * Contains information that can be used by elements to share info
 * 

* Eg: adding additional items to test plan when a particular protocol element is added. * * @since 0.17 */ public class BuildTreeContext { private final BuildTreeContext parent; private final Map entries = new HashMap<>(); private final List endListeners = new ArrayList<>(); private final Map> visualizers; public BuildTreeContext() { this(null, new LinkedHashMap<>()); } private BuildTreeContext(BuildTreeContext parent, Map> visualizers) { this.parent = parent; this.visualizers = visualizers; } public BuildTreeContext getParent() { return parent; } public BuildTreeContext getRoot() { return isRoot() ? this : parent.getRoot(); } public boolean isRoot() { return parent == null; } public Object getEntry(String key) { return entries.get(key); } public T getOrCreateEntry(String key, Supplier supplier) { return (T) entries.computeIfAbsent(key, k -> supplier.get()); } public void setEntry(String key, Object value) { entries.put(key, value); } public void addEndListener(TreeContextEndListener endListener) { endListeners.add(endListener); } public void addVisualizer(DslVisualizer visualizer, Supplier guiBuilder) { visualizers.put(visualizer, guiBuilder); } public Map> getVisualizers() { return visualizers; } public HashTree buildChild(DslTestElement child, HashTree parentTree) { return new BuildTreeContext(this, visualizers).buildTreeFor(child, parentTree); } public HashTree buildTreeFor(DslTestElement element, HashTree parentTree) { HashTree ret = element.buildTreeUnder(parentTree, this); endListeners.forEach(l -> l.execute(this, ret)); return ret; } public interface TreeContextEndListener { void execute(BuildTreeContext context, HashTree tree); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy