You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by ms...@apache.org on 2005/08/29 20:48:03 UTC
cvs commit: jakarta-jmeter/src/core/org/apache/jmeter/testelement/property AbstractProperty.java
mstover1 2005/08/29 11:48:03
Modified: src/components/org/apache/jmeter/assertions
CompareAssertionResources.properties
CompareAssertionBeanInfo.java CompareAssertion.java
src/core/org/apache/jmeter/samplers
DataStrippingSampleSender.java
SampleSenderFactory.java
src/core/org/apache/jmeter/testbeans TestBeanHelper.java
BeanInfoSupport.java
src/core/org/apache/jmeter/testbeans/gui
GenericTestBeanCustomizer.java
src/core/org/apache/jmeter/reporters ResultCollector.java
src/jorphan/org/apache/jorphan/gui ObjectTableModel.java
src/core/org/apache/jmeter/save SaveService.java
OldSaveService.java
src/core/org/apache/jmeter/testelement/property
AbstractProperty.java
Added: src/core/org/apache/jmeter/testbeans/gui TableEditor.java
TestBeanPropertyEditor.java
Log:
New support for Collections in TestBean framework.
fix for reading back CSV-formatted jtl files with non-default settings.
Revision Changes Path
1.2 +4 -1 jakarta-jmeter/src/components/org/apache/jmeter/assertions/CompareAssertionResources.properties
Index: CompareAssertionResources.properties
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/assertions/CompareAssertionResources.properties,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- CompareAssertionResources.properties 15 Aug 2005 20:33:07 -0000 1.1
+++ CompareAssertionResources.properties 29 Aug 2005 18:48:02 -0000 1.2
@@ -3,4 +3,7 @@
compareContent.displayName=Compare Content
compareContent.shortDescription=Verify that all Samplers within the Controller return the same data
compareTime.displayName=Compare Time
-compareTime.shortDescription=Verify that all Samplers' return times are within a given number of milliseconds
\ No newline at end of file
+compareTime.shortDescription=Verify that all Samplers' return times are within a given number of milliseconds
+comparison_filters.displayName=Comparison Filters
+stringsToSkip.displayName=Regular Expression Filters
+stringsToSkip.shortDescription=Regular expressions to match elements of response data to be ignored when comparing
\ No newline at end of file
1.2 +12 -1 jakarta-jmeter/src/components/org/apache/jmeter/assertions/CompareAssertionBeanInfo.java
Index: CompareAssertionBeanInfo.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/assertions/CompareAssertionBeanInfo.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- CompareAssertionBeanInfo.java 15 Aug 2005 20:33:07 -0000 1.1
+++ CompareAssertionBeanInfo.java 29 Aug 2005 18:48:02 -0000 1.2
@@ -1,14 +1,17 @@
package org.apache.jmeter.assertions;
import java.beans.PropertyDescriptor;
+import java.util.Arrays;
import org.apache.jmeter.testbeans.BeanInfoSupport;
+import org.apache.jmeter.testbeans.gui.TableEditor;
public class CompareAssertionBeanInfo extends BeanInfoSupport {
public CompareAssertionBeanInfo() {
super(CompareAssertion.class);
createPropertyGroup("compareChoices", new String[] { "compareContent", "compareTime" });
+ createPropertyGroup("comparison_filters", new String[]{"stringsToSkip"});
PropertyDescriptor p = property("compareContent");
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, Boolean.TRUE);
@@ -16,7 +19,15 @@
p = property("compareTime");
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, new Long(-1));
- p.setValue(NOT_EXPRESSION, Boolean.FALSE);
+ p.setValue(NOT_EXPRESSION, Boolean.FALSE);
+ p = property("stringsToSkip");
+ p.setPropertyEditorClass(TableEditor.class);
+ p.setValue(TableEditor.CLASSNAME,"java.lang.String");
+ p.setValue(TableEditor.HEADERS,new String[]{"Regex String"});
+ p.setValue(NOT_UNDEFINED,Boolean.TRUE);
+ p.setValue(DEFAULT,Arrays.asList(new String[]{"One","Two"}));
+ p.setValue(MULTILINE,Boolean.TRUE);
+
}
}
1.2 +17 -0 jakarta-jmeter/src/components/org/apache/jmeter/assertions/CompareAssertion.java
Index: CompareAssertion.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/assertions/CompareAssertion.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- CompareAssertion.java 15 Aug 2005 20:33:07 -0000 1.1
+++ CompareAssertion.java 29 Aug 2005 18:48:02 -0000 1.2
@@ -2,6 +2,7 @@
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
+import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
@@ -24,6 +25,8 @@
private boolean compareContent = true;
private long compareTime = -1;
+
+ Collection stringsToSkip;
public CompareAssertion() {
super();
@@ -175,4 +178,18 @@
this.compareTime = compareTime;
}
+ /**
+ * @return Returns the stringsToSkip.
+ */
+ public Collection getStringsToSkip() {
+ return stringsToSkip;
+ }
+
+ /**
+ * @param stringsToSkip The stringsToSkip to set.
+ */
+ public void setStringsToSkip(Collection stringsToSkip) {
+ this.stringsToSkip = stringsToSkip;
+ }
+
}
1.2 +19 -6 jakarta-jmeter/src/core/org/apache/jmeter/samplers/DataStrippingSampleSender.java
Index: DataStrippingSampleSender.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/samplers/DataStrippingSampleSender.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DataStrippingSampleSender.java 25 Aug 2005 21:04:59 -0000 1.1
+++ DataStrippingSampleSender.java 29 Aug 2005 18:48:02 -0000 1.2
@@ -19,26 +19,39 @@
transient private static Logger log = LoggingManager.getLoggerForClass();
RemoteSampleListener listener;
+ SampleSender decoratedSender;
public DataStrippingSampleSender(RemoteSampleListener listener) {
this.listener = listener;
}
+
+ public DataStrippingSampleSender(SampleSender decorate)
+ {
+ decoratedSender = decorate;
+ }
public void testEnded() {
-
+ if(decoratedSender != null) decoratedSender.testEnded();
}
public void testEnded(String host) {
-
+ if(decoratedSender != null) decoratedSender.testEnded(host);
}
public void SampleOccurred(SampleEvent e) {
//Strip the response data before wiring, but only for a successful request.
if(e.getResult().isSuccessful()) e.getResult().setResponseData(new byte[0]);
- try {
- listener.sampleOccurred(e);
- } catch (RemoteException e1) {
- log.error("Error sending sample result over network ",e1);
+ if(decoratedSender == null)
+ {
+ try {
+ listener.sampleOccurred(e);
+ } catch (RemoteException e1) {
+ log.error("Error sending sample result over network ",e1);
+ }
+ }
+ else
+ {
+ decoratedSender.SampleOccurred(e);
}
}
1.4 +2 -0 jakarta-jmeter/src/core/org/apache/jmeter/samplers/SampleSenderFactory.java
Index: SampleSenderFactory.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/samplers/SampleSenderFactory.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- SampleSenderFactory.java 25 Aug 2005 21:04:59 -0000 1.3
+++ SampleSenderFactory.java 29 Aug 2005 18:48:02 -0000 1.4
@@ -46,6 +46,8 @@
} else if(type.equalsIgnoreCase("Full")) {
StandardSampleSender s = new StandardSampleSender(listener);
return s;
+ } else if(type.equalsIgnoreCase("Stripped Batch")) {
+ return new DataStrippingSampleSender(new BatchSampleSender(listener));
} else {
return new DataStrippingSampleSender(listener);
}
1.4 +50 -3 jakarta-jmeter/src/core/org/apache/jmeter/testbeans/TestBeanHelper.java
Index: TestBeanHelper.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testbeans/TestBeanHelper.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- TestBeanHelper.java 12 Jul 2005 20:50:43 -0000 1.3
+++ TestBeanHelper.java 29 Aug 2005 18:48:02 -0000 1.4
@@ -22,9 +22,15 @@
import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.util.Collection;
+import java.util.LinkedList;
+import org.apache.jmeter.testbeans.gui.TableEditor;
import org.apache.jmeter.testelement.TestElement;
+import org.apache.jmeter.testelement.property.CollectionProperty;
import org.apache.jmeter.testelement.property.JMeterProperty;
+import org.apache.jmeter.testelement.property.MultiProperty;
+import org.apache.jmeter.testelement.property.PropertyIterator;
import org.apache.jorphan.logging.LoggingManager;
import org.apache.jorphan.util.Converter;
import org.apache.log.Logger;
@@ -67,7 +73,8 @@
// Obtain a value of the appropriate type for this property.
JMeterProperty jprop = el.getProperty(desc[x].getName());
Class type = desc[x].getPropertyType();
- Object value = Converter.convert(jprop.getStringValue(), type);
+ Object value = null;
+ value = unwrapProperty(desc[x], jprop, type);
if (log.isDebugEnabled())
log.debug("Setting " + jprop.getName() + "=" + value);
@@ -86,6 +93,46 @@
}
/**
+ * @param desc
+ * @param x
+ * @param jprop
+ * @param type
+ * @return
+ */
+ private static Object unwrapProperty(PropertyDescriptor desc, JMeterProperty jprop, Class type) {
+ Object value;
+ if(jprop instanceof MultiProperty)
+ {
+ value = unwrapCollection((MultiProperty)jprop,(String)desc.getValue(TableEditor.CLASSNAME));
+ }
+ else value = Converter.convert(jprop.getStringValue(), type);
+ return value;
+ }
+
+ private static Object unwrapCollection(MultiProperty prop,String type)
+ {
+ if(prop instanceof CollectionProperty)
+ {
+ Collection values = new LinkedList();
+ PropertyIterator iter = prop.iterator();
+ while(iter.hasNext())
+ {
+ JMeterProperty propVal = iter.next();
+ try
+ {
+ values.add(Converter.convert(propVal.getObjectValue(), Class.forName(type)));
+ }
+ catch(Exception e)
+ {
+ log.error("Couldn't convert object: " + propVal.getObjectValue() + " to " + type);
+ }
+ }
+ return values;
+ }
+ return null;
+ }
+
+ /**
* Utility method that invokes a method and does the error handling around
* the invocation.
*
1.10 +4 -2 jakarta-jmeter/src/core/org/apache/jmeter/testbeans/BeanInfoSupport.java
Index: BeanInfoSupport.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testbeans/BeanInfoSupport.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- BeanInfoSupport.java 12 Jul 2005 20:50:43 -0000 1.9
+++ BeanInfoSupport.java 29 Aug 2005 18:48:02 -0000 1.10
@@ -72,6 +72,8 @@
public static final String NOT_EXPRESSION = GenericTestBeanCustomizer.NOT_EXPRESSION;
public static final String NOT_OTHER = GenericTestBeanCustomizer.NOT_OTHER;
+
+ public static final String MULTILINE = "multiline";
public static final String DEFAULT = GenericTestBeanCustomizer.DEFAULT;
1.10 +38 -21 jakarta-jmeter/src/core/org/apache/jmeter/testbeans/gui/GenericTestBeanCustomizer.java
Index: GenericTestBeanCustomizer.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testbeans/gui/GenericTestBeanCustomizer.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- GenericTestBeanCustomizer.java 12 Jul 2005 20:51:01 -0000 1.9
+++ GenericTestBeanCustomizer.java 29 Aug 2005 18:48:02 -0000 1.10
@@ -111,6 +111,8 @@
public static final String NOT_OTHER = "notOther";
public static final String DEFAULT = "default";
+
+ public static final String MULTILINE = "multiline";
public static final String RESOURCE_BUNDLE = "resourceBundle";
@@ -213,14 +215,18 @@
editors[i] = null;
continue;
}
-
+ String[] tags = mergeTags(propertyEditor,descriptors[i]);
if (!propertyEditor.supportsCustomEditor()) {
- propertyEditor = createWrapperEditor(propertyEditor, descriptors[i]);
+ propertyEditor = createWrapperEditor(propertyEditor, descriptors[i],tags);
if (log.isDebugEnabled()) {
log.debug("Editor for property " + name + " is wrapped in " + propertyEditor);
}
}
+ if(propertyEditor instanceof TestBeanPropertyEditor)
+ {
+ ((TestBeanPropertyEditor)propertyEditor).setDescriptor(descriptors[i]);
+ }
if (propertyEditor.getCustomEditor() instanceof JScrollPane) {
scrollerCount++;
}
@@ -251,22 +257,7 @@
* @param descriptor
* @return
*/
- private WrapperEditor createWrapperEditor(PropertyEditor typeEditor, PropertyDescriptor descriptor) {
- String[] editorTags = typeEditor.getTags();
- String[] additionalTags = (String[]) descriptor.getValue(TAGS);
- String[] tags = null;
- if (editorTags == null)
- tags = additionalTags;
- else if (additionalTags == null)
- tags = editorTags;
- else {
- tags = new String[editorTags.length + additionalTags.length];
- int j = 0;
- for (int i = 0; i < editorTags.length; i++)
- tags[j++] = editorTags[i];
- for (int i = 0; i < additionalTags.length; i++)
- tags[j++] = additionalTags[i];
- }
+ private WrapperEditor createWrapperEditor(PropertyEditor typeEditor, PropertyDescriptor descriptor,String[] tags) {
boolean notNull = Boolean.TRUE.equals(descriptor.getValue(NOT_UNDEFINED));
boolean notExpression = Boolean.TRUE.equals(descriptor.getValue(NOT_EXPRESSION));
@@ -293,6 +284,30 @@
}
/**
+ * @param typeEditor
+ * @param descriptor
+ * @return
+ */
+ protected String[] mergeTags(PropertyEditor typeEditor, PropertyDescriptor descriptor) {
+ String[] editorTags = typeEditor.getTags();
+ String[] additionalTags = (String[]) descriptor.getValue(TAGS);
+ String[] tags = null;
+ if (editorTags == null)
+ tags = additionalTags;
+ else if (additionalTags == null)
+ tags = editorTags;
+ else {
+ tags = new String[editorTags.length + additionalTags.length];
+ int j = 0;
+ for (int i = 0; i < editorTags.length; i++)
+ tags[j++] = editorTags[i];
+ for (int i = 0; i < additionalTags.length; i++)
+ tags[j++] = additionalTags[i];
+ }
+ return tags;
+ }
+
+ /**
* Set the value of the i-th property, properly reporting a possible
* failure.
*
@@ -425,7 +440,9 @@
Component customEditor = editors[i].getCustomEditor();
boolean multiLineEditor = false;
- if (customEditor.getPreferredSize().height > 50 || customEditor instanceof JScrollPane) {
+ if (descriptors[i].getValue(MULTILINE) != null ||
+ customEditor.getPreferredSize().height > 50 ||
+ customEditor instanceof JScrollPane) {
// TODO: the above works in the current situation, but it's
// just a hack. How to get each editor to report whether it
// wants to grow bigger? Whether the property label should
1.1 jakarta-jmeter/src/core/org/apache/jmeter/testbeans/gui/TableEditor.java
Index: TableEditor.java
===================================================================
package org.apache.jmeter.testbeans.gui;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.beans.PropertyDescriptor;
import java.beans.PropertyEditorSupport;
import java.lang.reflect.Method;
import javax.swing.CellEditor;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.gui.ObjectTableModel;
import org.apache.jorphan.logging.LoggingManager;
import org.apache.jorphan.reflect.Functor;
import org.apache.log.Logger;
public class TableEditor extends PropertyEditorSupport implements FocusListener,TestBeanPropertyEditor,TableModelListener{
Logger log = LoggingManager.getLoggerForClass();
public static final String CLASSNAME = "tableObject.classname";
public static final String HEADERS = "table.headers";
public static final String OBJECT_PROPERTIES = "tableObject.properties";
JTable table;
ObjectTableModel model;
Class clazz;
PropertyDescriptor descriptor;
JButton addButton,removeButton,clearButton;
public TableEditor() {
addButton = new JButton(JMeterUtils.getResString("add"));
addButton.addActionListener(new AddListener());
removeButton = new JButton(JMeterUtils.getResString("remove"));
removeButton.addActionListener(new RemoveListener());
clearButton = new JButton(JMeterUtils.getResString("clear"));
clearButton.addActionListener(new ClearListener());
}
/* (non-Javadoc)
* @see java.beans.PropertyEditor#getAsText()
*/
public String getAsText() {
return null;
}
/* (non-Javadoc)
* @see java.beans.PropertyEditor#getCustomEditor()
*/
public Component getCustomEditor() {
JComponent pane = makePanel();
pane.doLayout();
pane.validate();
return pane;
}
private JComponent makePanel()
{
JPanel p = new JPanel(new BorderLayout());
JScrollPane scroller = new JScrollPane(table);
scroller.setPreferredSize(scroller.getMinimumSize());
p.add(scroller,BorderLayout.CENTER);
JPanel south = new JPanel();
south.add(addButton);
south.add(removeButton);
south.add(clearButton);
p.add(south,BorderLayout.SOUTH);
return p;
}
/* (non-Javadoc)
* @see java.beans.PropertyEditor#getValue()
*/
public Object getValue() {
return model.getObjectList();
}
/* (non-Javadoc)
* @see java.beans.PropertyEditor#setAsText(java.lang.String)
*/
public void setAsText(String text) throws IllegalArgumentException {
//not interested in this method.
}
/* (non-Javadoc)
* @see java.beans.PropertyEditor#setValue(java.lang.Object)
*/
public void setValue(Object value) {
if(value != null)
{
model.setRows((Iterable)value);
}
else model.clearData();
this.firePropertyChange();
}
/* (non-Javadoc)
* @see java.beans.PropertyEditor#supportsCustomEditor()
*/
public boolean supportsCustomEditor() {
return true;
}
/**
* For the table editor, the tag must simply be the name of the class of object it will hold
* where each row holds one object.
*/
public void setDescriptor(PropertyDescriptor descriptor) {
try {
this.descriptor = descriptor;
clazz = Class.forName((String)descriptor.getValue(CLASSNAME));
initializeModel();
} catch (ClassNotFoundException e) {
throw new RuntimeException("The Table Editor requires one TAG be set - the name of the object to represent a row",e);
}
}
void initializeModel()
{
if(clazz == String.class)
{
model = new ObjectTableModel((String[])descriptor.getValue(HEADERS),new Functor[0],new Functor[0],new Class[]{String.class});
model.addTableModelListener(this);
}
else
{
String[] props = (String[])descriptor.getValue(OBJECT_PROPERTIES);
Functor[] writers = new Functor[props.length];
Functor[] readers = new Functor[props.length];
Class[] editors = new Class[props.length];
int count = 0;
for(String propName : props)
{
propName = propName.substring(0,1).toUpperCase() + propName.substring(1);
writers[count] = createWriter(clazz,propName);
readers[count] = createReader(clazz,propName);
editors[count] = getArgForWriter(clazz,propName);
count++;
}
model = new ObjectTableModel((String[])descriptor.getValue(HEADERS),readers,writers,editors);
model.addTableModelListener(this);
}
table = new JTable(model);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table.addFocusListener(this);
}
Functor createWriter(Class c,String propName)
{
String setter = "set" + propName;
return new Functor(setter);
}
Functor createReader(Class c,String propName)
{
String getter = "get" + propName;
try
{
c.getMethod(getter,new Class[0]);
return new Functor(getter);
}
catch(Exception e) { return new Functor("is" + propName); }
}
Class getArgForWriter(Class c,String propName)
{
String setter = "set" + propName;
for(Method m : c.getMethods())
{
if(m.getName().equals(setter))
{
return m.getParameterTypes()[0];
}
}
return null;
}
/* (non-Javadoc)
* @see javax.swing.event.TableModelListener#tableChanged(javax.swing.event.TableModelEvent)
*/
public void tableChanged(TableModelEvent e) {
this.firePropertyChange();
}
/* (non-Javadoc)
* @see java.awt.event.FocusListener#focusGained(java.awt.event.FocusEvent)
*/
public void focusGained(FocusEvent e) {
}
/* (non-Javadoc)
* @see java.awt.event.FocusListener#focusLost(java.awt.event.FocusEvent)
*/
public void focusLost(FocusEvent e) {
CellEditor ce = table.getCellEditor(table.getEditingRow(),table.getEditingColumn());
Component editor = table.getEditorComponent();
if(ce != null && (editor == null || editor != e.getOppositeComponent()))
{
ce.stopCellEditing();
}
else if(editor != null)
{
editor.addFocusListener(this);
}
this.firePropertyChange();
}
private class AddListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
try
{
model.addRow(clazz.newInstance());
}catch(Exception err)
{
log.error("The class type given to TableEditor was not instantiable. ",err);
}
}
}
private class RemoveListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
model.removeRow(table.getSelectedRow());
}
}
private class ClearListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
model.clearData();
}
}
}
1.1 jakarta-jmeter/src/core/org/apache/jmeter/testbeans/gui/TestBeanPropertyEditor.java
Index: TestBeanPropertyEditor.java
===================================================================
package org.apache.jmeter.testbeans.gui;
import java.beans.PropertyDescriptor;
import java.beans.PropertyEditor;
public interface TestBeanPropertyEditor extends PropertyEditor {
public void setDescriptor(PropertyDescriptor descriptor);
}
1.54 +1 -1 jakarta-jmeter/src/core/org/apache/jmeter/reporters/ResultCollector.java
Index: ResultCollector.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/reporters/ResultCollector.java,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -r1.53 -r1.54
--- ResultCollector.java 12 Jul 2005 20:50:43 -0000 1.53
+++ ResultCollector.java 29 Aug 2005 18:48:02 -0000 1.54
@@ -193,7 +193,7 @@
dataReader = new BufferedReader(new FileReader(getFilename()));
String line;
while ((line = dataReader.readLine()) != null) {
- sendToVisualizer(OldSaveService.makeResultFromDelimitedString(line));
+ sendToVisualizer(OldSaveService.makeResultFromDelimitedString(line,getSaveConfig()));
}
parsedOK = true;
}
1.8 +23 -3 jakarta-jmeter/src/jorphan/org/apache/jorphan/gui/ObjectTableModel.java
Index: ObjectTableModel.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/jorphan/org/apache/jorphan/gui/ObjectTableModel.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- ObjectTableModel.java 12 Jul 2005 20:50:59 -0000 1.7
+++ ObjectTableModel.java 29 Aug 2005 18:48:02 -0000 1.8
@@ -69,6 +69,15 @@
objects.add(value);
super.fireTableRowsInserted(objects.size() - 1, objects.size());
}
+
+ public void setRows(Iterable rows)
+ {
+ clearData();
+ for(Object val : rows)
+ {
+ addRow(val);
+ }
+ }
public void insertRow(Object value, int index) {
objects.add(index, value);
@@ -105,8 +114,10 @@
public Object getValueAt(int row, int col) {
log.debug("Getting row value");
Object value = objects.get(row);
+ if(headers.size() == 1 && col >= readFunctors.size())
+ return value;
Functor getMethod = (Functor) readFunctors.get(col);
- if (getMethod != null) {
+ if (getMethod != null && value != null) {
return getMethod.invoke(value);
}
return null;
@@ -152,6 +163,10 @@
super.fireTableDataChanged();
}
}
+ else if(headers.size() == 1)
+ {
+ objects.set(row,cellValue);
+ }
}
}
@@ -161,5 +176,10 @@
public Class getColumnClass(int arg0) {
return (Class) classes.get(arg0);
}
+
+ public List getObjectList()
+ {
+ return objects;
+ }
}
1.69 +1 -1 jakarta-jmeter/src/core/org/apache/jmeter/save/SaveService.java
Index: SaveService.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/save/SaveService.java,v
retrieving revision 1.68
retrieving revision 1.69
diff -u -r1.68 -r1.69
--- SaveService.java 12 Jul 2005 22:50:33 -0000 1.68
+++ SaveService.java 29 Aug 2005 18:48:02 -0000 1.69
@@ -225,7 +225,7 @@
checkVersion(IntegerPropertyConverter.class, "1.4");
checkVersion(LongPropertyConverter.class, "1.4");
checkVersion(MultiPropertyConverter.class, "1.4");
- checkVersion(SampleResultConverter.class, "1.9");
+ checkVersion(SampleResultConverter.class, "1.10");
/*
* Should check this, but tricky to do, because not built until later.
*
1.11 +21 -16 jakarta-jmeter/src/core/org/apache/jmeter/save/OldSaveService.java
Index: OldSaveService.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/save/OldSaveService.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- OldSaveService.java 25 Aug 2005 21:05:00 -0000 1.10
+++ OldSaveService.java 29 Aug 2005 18:48:03 -0000 1.11
@@ -74,6 +74,11 @@
*/
private OldSaveService() {
}
+
+ public static SampleResult makeResultFromDelimitedString(String delim)
+ {
+ return makeResultFromDelimitedString(delim,_saveConfig);
+ }
/**
* Make a SampleResult given a delimited string.
@@ -81,65 +86,65 @@
* @param delim
* @return SampleResult
*/
- public static SampleResult makeResultFromDelimitedString(String delim) {
+ public static SampleResult makeResultFromDelimitedString(String delim,SampleSaveConfiguration saveConfig) {
SampleResult result = null;
long timeStamp = 0;
long elapsed = 0;
- StringTokenizer splitter = new StringTokenizer(delim, _saveConfig.getDelimiter());
+ StringTokenizer splitter = new StringTokenizer(delim, saveConfig.getDelimiter());
String text = null;
try {
- if (_saveConfig.printMilliseconds()) {
+ if (saveConfig.printMilliseconds()) {
text = splitter.nextToken();
timeStamp = Long.parseLong(text);
- } else if (_saveConfig.formatter() != null) {
+ } else if (saveConfig.formatter() != null) {
text = splitter.nextToken();
- Date stamp = _saveConfig.formatter().parse(text);
+ Date stamp = saveConfig.formatter().parse(text);
timeStamp = stamp.getTime();
}
- if (_saveConfig.saveTime()) {
+ if (saveConfig.saveTime()) {
text = splitter.nextToken();
elapsed = Long.parseLong(text);
}
result = new SampleResult(timeStamp, elapsed);
- if (_saveConfig.saveContentLength()) {
+ if (saveConfig.saveContentLength()) {
text = splitter.nextToken();
result.setContentLength(Converter.getInt(text));
}
- if (_saveConfig.saveLabel()) {
+ if (saveConfig.saveLabel()) {
text = splitter.nextToken();
result.setSampleLabel(text);
}
- if (_saveConfig.saveCode()) {
+ if (saveConfig.saveCode()) {
text = splitter.nextToken();
result.setResponseCode(text);
}
- if (_saveConfig.saveMessage()) {
+ if (saveConfig.saveMessage()) {
text = splitter.nextToken();
result.setResponseMessage(text);
}
- if (_saveConfig.saveThreadName()) {
+ if (saveConfig.saveThreadName()) {
text = splitter.nextToken();
result.setThreadName(text);
}
- if (_saveConfig.saveDataType()) {
+ if (saveConfig.saveDataType()) {
text = splitter.nextToken();
result.setDataType(text);
}
- if (_saveConfig.saveSuccess()) {
+ if (saveConfig.saveSuccess()) {
text = splitter.nextToken();
result.setSuccessful(Boolean.valueOf(text).booleanValue());
}
- if (_saveConfig.saveAssertionResultsFailureMessage()) {
+ if (saveConfig.saveAssertionResultsFailureMessage()) {
text = splitter.nextToken();
}
} catch (NumberFormatException e) {
1.24 +5 -3 jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/AbstractProperty.java
Index: AbstractProperty.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/AbstractProperty.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- AbstractProperty.java 12 Jul 2005 20:50:25 -0000 1.23
+++ AbstractProperty.java 29 Aug 2005 18:48:03 -0000 1.24
@@ -38,6 +38,7 @@
package org.apache.jmeter.testelement.property;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
@@ -324,7 +325,8 @@
try {
newColl = (Collection) coll.getClass().newInstance();
} catch (Exception e) {
- log.error("Bad collection", e);
+ newColl = new ArrayList();
+ log.warn("Bad collection", e);
}
}
newColl.add(convertObject(item));
---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org