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())) {
writeItem(jmp, context, writer);
}
}
}
//TODO clazz is probably always the same as testclass
}
use of org.apache.jmeter.testelement.property.JMeterProperty in project jmeter by apache.
the class TestElementConverter method marshal.
/** {@inheritDoc} */
@Override
public void marshal(Object arg0, HierarchicalStreamWriter writer, MarshallingContext context) {
TestElement el = (TestElement) arg0;
ConversionHelp.saveSpecialProperties(el, writer);
PropertyIterator iter = el.propertyIterator();
while (iter.hasNext()) {
JMeterProperty jmp = iter.next();
// Skip special properties if required
if (!ConversionHelp.isSpecialProperty(jmp.getName())) {
// Don't save empty comments - except for the TestPlan (to maintain compatibility)
if (!(TestElement.COMMENTS.equals(jmp.getName()) && jmp.getStringValue().length() == 0 && !el.getClass().equals(TestPlan.class))) {
writeItem(jmp, 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).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) readItem(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 (InstantiationException | IllegalAccessException 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 AbstractTestElement method recoverRunningVersion.
/**
* {@inheritDoc}
*/
@Override
public void recoverRunningVersion() {
Iterator<Map.Entry<String, JMeterProperty>> iter = propMap.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry<String, JMeterProperty> entry = iter.next();
JMeterProperty prop = entry.getValue();
if (isTemporary(prop)) {
iter.remove();
clearTemporary(prop);
} else {
prop.recoverRunningVersion(this);
}
}
emptyTemporary();
}
use of org.apache.jmeter.testelement.property.JMeterProperty in project jmeter by apache.
the class AbstractTestElement method logProperties.
/**
* Log the properties of the test element
*
* @see TestElement#setProperty(JMeterProperty)
*/
protected void logProperties() {
if (log.isDebugEnabled()) {
PropertyIterator iter = propertyIterator();
while (iter.hasNext()) {
JMeterProperty prop = iter.next();
log.debug("Property {} is temp? {} and is a {}", prop.getName(), isTemporary(prop), prop.getObjectValue());
}
}
}
Aggregations