use of org.apache.jmeter.testelement.TestElement 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.TestElement 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.TestElement 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.TestElement in project jmeter by apache.
the class HTTPArgumentsPanel method createTestElement.
@Override
public TestElement createTestElement() {
Arguments args = getUnclonedParameters();
super.configureTestElement(args);
return (TestElement) args.clone();
}
use of org.apache.jmeter.testelement.TestElement in project jmeter by apache.
the class MainFrame method makeTree.
/**
* Create and initialize the GUI representation of the test tree.
*
* @param treeModel
* the test tree model
* @param treeListener
* the test tree listener
*
* @return the initialized test tree GUI
*/
private JTree makeTree(TreeModel treeModel, JMeterTreeListener treeListener) {
JTree treevar = new JTree(treeModel) {
private static final long serialVersionUID = 240L;
@Override
public String getToolTipText(MouseEvent event) {
TreePath path = this.getPathForLocation(event.getX(), event.getY());
if (path != null) {
Object treeNode = path.getLastPathComponent();
if (treeNode instanceof DefaultMutableTreeNode) {
Object testElement = ((DefaultMutableTreeNode) treeNode).getUserObject();
if (testElement instanceof TestElement) {
String comment = ((TestElement) testElement).getComment();
if (comment != null && comment.length() > 0) {
return comment;
}
}
}
}
return null;
}
};
treevar.setToolTipText("");
treevar.setCellRenderer(getCellRenderer());
treevar.setRootVisible(false);
treevar.setShowsRootHandles(true);
treeListener.setJTree(treevar);
treevar.addTreeSelectionListener(treeListener);
treevar.addMouseListener(treeListener);
treevar.addKeyListener(treeListener);
// enable drag&drop, install a custom transfer handler
treevar.setDragEnabled(true);
treevar.setDropMode(DropMode.ON_OR_INSERT);
treevar.setTransferHandler(new JMeterTreeTransferHandler());
addQuickComponentHotkeys(treevar);
return treevar;
}
Aggregations