use of org.apache.jmeter.testelement.property.JMeterProperty in project jmeter by apache.
the class LoopController method getLoops.
public int getLoops() {
// or when nbLoops is equal to special value INFINITE_LOOP_COUNT
if (// No evaluated yet
nbLoops == null || // Last iteration led to nbLoops == 0,
nbLoops == 0 || // it leads to no further evaluations if we don't evaluate, see BUG 56276
nbLoops == // Number of iteration is set to infinite
INFINITE_LOOP_COUNT) {
try {
JMeterProperty prop = getProperty(LOOPS);
nbLoops = Integer.valueOf(prop.getStringValue());
} catch (NumberFormatException e) {
nbLoops = 0;
}
}
return nbLoops;
}
use of org.apache.jmeter.testelement.property.JMeterProperty in project jmeter by apache.
the class ReplaceStringWithFunctions method transformValue.
@Override
public JMeterProperty transformValue(JMeterProperty prop) throws InvalidVariableException {
JMeterProperty newValue = prop;
getMasterFunction().clear();
getMasterFunction().setParameters(prop.getStringValue());
if (getMasterFunction().hasFunction()) {
newValue = new FunctionProperty(prop.getName(), getMasterFunction().getFunction());
}
return newValue;
}
use of org.apache.jmeter.testelement.property.JMeterProperty in project jmeter by apache.
the class MultiPropertyConverter method marshal.
/**
* {@inheritDoc}
*/
@Override
public void marshal(Object arg0, HierarchicalStreamWriter writer, MarshallingContext context) {
MultiProperty prop = (MultiProperty) arg0;
writer.addAttribute(ConversionHelp.ATT_NAME, ConversionHelp.encode(prop.getName()));
for (JMeterProperty jMeterProperty : prop) {
writeCompleteItem(jMeterProperty, context, writer);
}
}
use of org.apache.jmeter.testelement.property.JMeterProperty in project jmeter by apache.
the class TestElementPropertyConverter method unmarshal.
/*
* TODO - convert to work more like upgrade.properties/NameUpdater.java
*
* Special processing is carried out for the Header Class The String
* property TestElement.name is converted to Header.name for example:
* <elementProp name="User-Agent"
* elementType="org.apache.jmeter.protocol.http.control.Header"> <stringProp
* name="Header.value">Mozilla%2F4.0+%28compatible%3B+MSIE+5.5%3B+Windows+98%29</stringProp>
* <stringProp name="TestElement.name">User-Agent</stringProp>
* </elementProp> becomes <elementProp name="User-Agent"
* elementType="org.apache.jmeter.protocol.http.control.Header"> <stringProp
* name="Header.value">Mozilla%2F4.0+%28compatible%3B+MSIE+5.5%3B+Windows+98%29</stringProp>
* <stringProp name="Header.name">User-Agent</stringProp> </elementProp>
*/
/**
* {@inheritDoc}
*/
@Override
public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
try {
TestElementProperty prop = (TestElementProperty) createCollection(context.getRequiredType());
prop.setName(ConversionHelp.decode(reader.getAttribute(ConversionHelp.ATT_NAME)));
String element = reader.getAttribute(ConversionHelp.ATT_ELEMENT_TYPE);
boolean isHeader = HEADER_CLASSNAME.equals(element);
// Always decode
prop.setObjectValue(mapper().realClass(element).getDeclaredConstructor().newInstance());
TestElement te = (TestElement) prop.getObjectValue();
// No need to check version, just process the attributes if present
ConversionHelp.restoreSpecialProperties(te, reader);
while (reader.hasMoreChildren()) {
reader.moveDown();
JMeterProperty subProp = (JMeterProperty) readBareItem(reader, context, prop);
if (subProp != null) {
// could be null if it has been deleted via NameUpdater
if (isHeader) {
String name = subProp.getName();
if (TestElement.NAME.equals(name)) {
// $NON-NLS-1$
subProp.setName("Header.name");
// Must be same as Header.HNAME - but that is built
// later
}
}
prop.addProperty(subProp);
}
reader.moveUp();
}
return prop;
} catch (IllegalArgumentException | ReflectiveOperationException | SecurityException e) {
log.error("Couldn't unmarshall TestElementProperty", e);
// $NON-NLS-1$
return new TestElementProperty("ERROR", new ConfigTestElement());
}
}
use of org.apache.jmeter.testelement.property.JMeterProperty in project jmeter by apache.
the class TestElementPropertyConverter method marshal.
/**
* {@inheritDoc}
*/
@Override
public void marshal(Object arg0, HierarchicalStreamWriter writer, MarshallingContext context) {
TestElementProperty prop = (TestElementProperty) arg0;
writer.addAttribute(ConversionHelp.ATT_NAME, ConversionHelp.encode(prop.getName()));
Class<?> clazz = prop.getObjectValue().getClass();
writer.addAttribute(ConversionHelp.ATT_ELEMENT_TYPE, mapper().serializedClass(clazz));
TestElement te = (TestElement) prop.getObjectValue();
ConversionHelp.saveSpecialProperties(te, writer);
for (JMeterProperty jmp : prop) {
// Skip special properties if required
if (!ConversionHelp.isSpecialProperty(jmp.getName())) {
// Don't save empty comments
if (!(TestElement.COMMENTS.equals(jmp.getName()) && jmp.getStringValue().isEmpty())) {
writeCompleteItem(jmp, context, writer);
}
}
}
// TODO clazz is probably always the same as testclass
}
Aggregations