/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.apache.jmeter.samplers;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import org.apache.jmeter.assertions.Assertion;
import org.apache.jmeter.config.ConfigElement;
// TODO - the class contents are not used at present - could perhaps be removed
public class Entry {
private Map<Class<?>, ConfigElement> configSet;
private Class<?> sampler;
private List<Assertion> assertions;
public Entry() {
configSet = new HashMap<>();
assertions = new LinkedList<>();
}
public void addAssertion(Assertion assertion) {
assertions.add(assertion);
}
public List<Assertion> getAssertions() {
return assertions;
}
public void setSamplerClass(Class<?> samplerClass) {
this.sampler = samplerClass;
}
public Class<?> getSamplerClass() {
return this.sampler;
}
public ConfigElement getConfigElement(Class<?> configClass) {
return configSet.get(configClass);
}
public void addConfigElement(ConfigElement config) {
addConfigElement(config, config.getClass());
}
/**
* Add a config element as a specific class. Usually this is done to add a
* subclass as one of it's parent classes.
*
* @param config
* the {@link ConfigElement} to be added
* @param asClass
* the {@link Class} under which the {@link ConfigElement} should
* be registered
*/
public void addConfigElement(ConfigElement config, Class<?> asClass) {
if (config != null) {
ConfigElement current = configSet.get(asClass);
if (current == null) {
configSet.put(asClass, cloneIfNecessary(config));
} else {
current.addConfigElement(config);
}
}
}
private ConfigElement cloneIfNecessary(ConfigElement config) {
if (config.expectsModification()) {
return config;
}
return (ConfigElement) config.clone();
}
}