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 2003/04/23 20:52:08 UTC

cvs commit: jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/control/gui HttpTestSampleGui.java

mstover1    2003/04/23 11:52:08

  Modified:    src/components/org/apache/jmeter/timers
                        ConstantThroughputTimer.java
               src/components/org/apache/jmeter/timers/gui
                        ConstantThroughputTimerGui.java
                        GaussianRandomTimerGui.java
                        UniformRandomTimerGui.java
               src/components/org/apache/jmeter/visualizers
                        AssertionVisualizer.java GraphVisualizer.java
                        SimpleDataWriter.java SplineVisualizer.java
                        StatVisualizer.java TableVisualizer.java
                        ViewResultsFullVisualizer.java
               src/core/org/apache/jmeter/config Argument.java
                        Arguments.java
               src/core/org/apache/jmeter/control LoopController.java
               src/core/org/apache/jmeter/control/gui LoopControlPanel.java
               src/core/org/apache/jmeter/engine PreCompiler.java
                        StandardJMeterEngine.java TreeCloner.java
               src/core/org/apache/jmeter/gui/action Load.java Start.java
               src/core/org/apache/jmeter/gui/util FilePanel.java
               src/core/org/apache/jmeter/reporters ResultCollector.java
               src/core/org/apache/jmeter/testelement
                        AbstractTestElement.java
               src/core/org/apache/jmeter/threads/gui ThreadGroupGui.java
               src/core/org/apache/jmeter/visualizers/gui
                        AbstractVisualizer.java
               src/protocol/http/org/apache/jmeter/protocol/http/control/gui
                        HttpTestSampleGui.java
  Added:       src/core/org/apache/jmeter/engine/util NoThreadClone.java
  Log:
  Refactoring visualizers
  Fixing bug #18697
  
  Revision  Changes    Path
  1.6       +9 -6      jakarta-jmeter/src/components/org/apache/jmeter/timers/ConstantThroughputTimer.java
  
  Index: ConstantThroughputTimer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/timers/ConstantThroughputTimer.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ConstantThroughputTimer.java	7 Apr 2003 14:35:19 -0000	1.5
  +++ ConstantThroughputTimer.java	23 Apr 2003 18:52:06 -0000	1.6
  @@ -60,7 +60,6 @@
   import java.util.List;
   
   import org.apache.jmeter.testelement.AbstractTestElement;
  -import org.apache.jmeter.testelement.property.LongProperty;
   import org.apache.jmeter.util.JMeterUtils;
   
   /**
  @@ -104,10 +103,9 @@
        *
        * @param throughput Desired sampling rate, in samples per minute.
        */
  -    public void setThroughput(long throughput)
  +    public void setThroughput(String throughput)
       {
  -		setProperty(new LongProperty(THROUGHPUT,throughput));
  -		delay= 60000/throughput;
  +		setProperty(THROUGHPUT,throughput);
       }
   
       /**
  @@ -149,6 +147,11 @@
       {
   		return  getPropertyAsLong(THROUGHPUT);
       }
  +    
  +    public String getThroughputString()
  +    {
  +        return getPropertyAsString(THROUGHPUT);
  +    }
   
   	/**
   	 * Retrieve the delay to use during test execution.
  @@ -159,7 +162,7 @@
       {
   		long currentTime = System.currentTimeMillis();
   		long currentTarget = targetTime == 0 ? currentTime : targetTime;
  -		targetTime = currentTarget + delay;
  +		targetTime = currentTarget + 60000/getThroughput();
   		if (currentTime > currentTarget)
   		{
   		    // We're behind schedule -- try to catch up:
  
  
  
  1.6       +3 -59     jakarta-jmeter/src/components/org/apache/jmeter/timers/gui/ConstantThroughputTimerGui.java
  
  Index: ConstantThroughputTimerGui.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/timers/gui/ConstantThroughputTimerGui.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ConstantThroughputTimerGui.java	20 Apr 2003 21:53:38 -0000	1.5
  +++ ConstantThroughputTimerGui.java	23 Apr 2003 18:52:06 -0000	1.6
  @@ -55,12 +55,8 @@
    
   package org.apache.jmeter.timers.gui;
   
  -import java.awt.event.KeyEvent;
  -import java.awt.event.KeyListener;
  -
   import javax.swing.Box;
   import javax.swing.JLabel;
  -import javax.swing.JOptionPane;
   import javax.swing.JTextField;
   
   import org.apache.jmeter.testelement.TestElement;
  @@ -77,7 +73,6 @@
    */
   public class ConstantThroughputTimerGui
   	extends AbstractTimerGui
  -	implements KeyListener
   {
       private final String DEFAULT_THROUGHPUT = "60";
       private final String THROUGHPUT_FIELD = "Throughput Field";
  @@ -122,7 +117,7 @@
       public void modifyTestElement(TestElement timer)
       {
           this.configureTestElement(timer);
  -        ((ConstantThroughputTimer)timer).setThroughput(Long.parseLong(throughputField.getText()));
  +        ((ConstantThroughputTimer)timer).setThroughput(throughputField.getText());
       }
   
   	/**
  @@ -134,57 +129,7 @@
       {
   		super.configure(el);
   		ConstantThroughputTimer e= (ConstantThroughputTimer)el;
  -		throughputField.setText(String.valueOf(e.getThroughput()));
  -    }
  -
  -    /**
  -     * Checks the key just entered in the Throughput text input field makes a
  -     * valid number, cleans the input field otherwise.
  -     *
  -     * @param e  KeyEvent - handled only if it happens in the Throughput field.
  -     */
  -    public void keyReleased(KeyEvent e)
  -    {
  -		String n = e.getComponent().getName();
  -		if(n.equals(THROUGHPUT_FIELD))
  -		{
  -		    try
  -		    {
  -			Long.parseLong(throughputField.getText());
  -		    }
  -		    catch(NumberFormatException nfe)
  -		    {
  -			if(throughputField.getText().length() > 0)
  -			{
  -			    JOptionPane.showMessageDialog(this,
  -				    "You must enter a valid number",
  -				    "Invalid data", JOptionPane.WARNING_MESSAGE);
  -			    // We reset the text to be an empty string instead
  -			    // of the default value. If we reset it to the
  -			    // default value, then the user has to delete
  -			    // that value and reenter his/her own. That's
  -			    // too much trouble for the user.
  -			}
  -		    }
  -		}
  -    }
  -
  -	/**
  -	 * Process a KeyEvent.
  -	 *
  -	 * @param e the event to handle.
  -	 */
  -    public void keyPressed(KeyEvent e)
  -    {
  -    }
  -
  -	/**
  -	 * Process a KeyEvent.
  -	 *
  -	 * @param e the event to handle.
  -	 */
  -    public void keyTyped(KeyEvent e)
  -    {
  +		throughputField.setText(e.getThroughputString());
       }
   
       /**
  @@ -206,7 +151,6 @@
   
   		throughputField = new JTextField(6);
   		throughputField.setText(DEFAULT_THROUGHPUT);
  -        throughputField.addKeyListener(this);
           throughputField.setName(THROUGHPUT_FIELD);
   		throughputPanel.add(throughputField);
           
  
  
  
  1.8       +2 -50     jakarta-jmeter/src/components/org/apache/jmeter/timers/gui/GaussianRandomTimerGui.java
  
  Index: GaussianRandomTimerGui.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/timers/gui/GaussianRandomTimerGui.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- GaussianRandomTimerGui.java	20 Apr 2003 21:53:38 -0000	1.7
  +++ GaussianRandomTimerGui.java	23 Apr 2003 18:52:06 -0000	1.8
  @@ -56,8 +56,6 @@
   package org.apache.jmeter.timers.gui;
   
   import java.awt.Dimension;
  -import java.awt.event.KeyEvent;
  -import java.awt.event.KeyListener;
   
   import javax.swing.BorderFactory;
   import javax.swing.Box;
  @@ -81,7 +79,7 @@
    * @author <a href="mailto:seade@backstagetech.com.au">Scott Eade</a>
    * @version $Id$
    */
  -public class GaussianRandomTimerGui extends AbstractTimerGui implements KeyListener
  +public class GaussianRandomTimerGui extends AbstractTimerGui
   {
   
   	private final String DELAY_FIELD = "Delay Field";
  @@ -158,50 +156,6 @@
   	}
   
   	/**
  -	 * Process a KeyEvent.
  -	 *
  -	 * @param e the event to handle.
  -	 */
  -	public void keyReleased(KeyEvent e)
  -	{
  -		String temp = e.getComponent().getName();
  -
  -		if(temp.equals(RANGE_FIELD))
  -		{
  -			try
  -			{
  -				Double.parseDouble(rangeField.getText());
  -			}
  -			catch(NumberFormatException nfe)
  -			{
  -				if(rangeField.getText().length() > 0)
  -				{
  -					JOptionPane.showMessageDialog(this, "You must enter a valid number",
  -							"Invalid data", JOptionPane.WARNING_MESSAGE);
  -				}
  -			}
  -		}
  -	}
  -
  -	/**
  -	 * Process a KeyEvent.
  -	 *
  -	 * @param e the event to handle.
  -	 */
  -	public void keyPressed(KeyEvent e) 
  -	{ 
  -	}
  -
  -	/**
  -	 * Process a KeyEvent.
  -	 *
  -	 * @param e the event to handle.
  -	 */
  -	public void keyTyped(KeyEvent e) 
  -	{ 
  -	}
  -
  -	/**
   	 * Initialize this component.
   	 */
   	private void init()
  @@ -223,7 +177,6 @@
   		rangeField = new JTextField(6);
   		rangeField.setText(DEFAULT_RANGE);
   		rangeField.setName(RANGE_FIELD);
  -		rangeField.addKeyListener(this);
   		delayDevPanel.add(rangeField);
   
   		threadDelayPropsPanel.add(delayDevPanel);
  @@ -236,7 +189,6 @@
   		delayField = new JTextField(6);
   		delayField.setText(DEFAULT_DELAY);
   		delayField.setName(DELAY_FIELD);
  -		delayField.addKeyListener(this);
   		avgDelayPanel.add(delayField);
   
   		threadDelayPropsPanel.add(avgDelayPanel);
  
  
  
  1.8       +2 -51     jakarta-jmeter/src/components/org/apache/jmeter/timers/gui/UniformRandomTimerGui.java
  
  Index: UniformRandomTimerGui.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/timers/gui/UniformRandomTimerGui.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- UniformRandomTimerGui.java	20 Apr 2003 21:53:38 -0000	1.7
  +++ UniformRandomTimerGui.java	23 Apr 2003 18:52:06 -0000	1.8
  @@ -55,9 +55,6 @@
    
   package org.apache.jmeter.timers.gui;
   
  -import java.awt.event.KeyEvent;
  -import java.awt.event.KeyListener;
  -
   import javax.swing.BorderFactory;
   import javax.swing.Box;
   import javax.swing.JComponent;
  @@ -80,7 +77,7 @@
    * @author <a href="mailto:seade@backstagetech.com.au">Scott Eade</a>
    * @version $Id$
    */
  -public class UniformRandomTimerGui extends AbstractTimerGui implements KeyListener
  +public class UniformRandomTimerGui extends AbstractTimerGui
   {
   
   	private final String DELAY_FIELD = "Delay Field";
  @@ -158,50 +155,6 @@
   	}
   
   	/**
  -	 * Process a KeyEvent.
  -	 *
  -	 * @param e the event to handle.
  -	 */
  -	public void keyReleased(KeyEvent e)
  -	{
  -		String temp = e.getComponent().getName();
  -
  -		if (temp.equals(RANGE_FIELD))
  -		{
  -			try
  -			{
  -				Double.parseDouble(rangeField.getText());
  -			}
  -			catch(NumberFormatException nfe)
  -			{
  -				if(rangeField.getText().length() > 0)
  -				{
  -					JOptionPane.showMessageDialog(this, "You must enter a valid number",
  -							"Invalid data", JOptionPane.WARNING_MESSAGE);
  -				}
  -			}
  -		}
  -	}
  -
  -	/**
  -	 * Process a KeyEvent.
  -	 *
  -	 * @param e the event to handle.
  -	 */
  -	public void keyPressed(KeyEvent e) 
  -	{ 
  -	}
  -
  -	/**
  -	 * Process a KeyEvent.
  -	 *
  -	 * @param e the event to handle.
  -	 */
  -	public void keyTyped(KeyEvent e) 
  -	{ 
  -	}
  -
  -	/**
   	 * Initialize this component.
   	 */
   	private void init()
  @@ -224,7 +177,6 @@
   		rangeField = new JTextField(6);
   		rangeField.setText(DEFAULT_RANGE);
   		rangeField.setName(RANGE_FIELD);
  -		rangeField.addKeyListener(this);
   		delayDevPanel.add(rangeField);
   
   		threadDelayPropsPanel.add(delayDevPanel);
  @@ -237,7 +189,6 @@
   		delayField = new JTextField(6);
   		delayField.setText(DEFAULT_DELAY);
   		delayField.setName(DELAY_FIELD);
  -		delayField.addKeyListener(this);
   		avgDelayPanel.add(delayField);
           
   		threadDelayPropsPanel.add(avgDelayPanel);
  
  
  
  1.10      +6 -16     jakarta-jmeter/src/components/org/apache/jmeter/visualizers/AssertionVisualizer.java
  
  Index: AssertionVisualizer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/visualizers/AssertionVisualizer.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- AssertionVisualizer.java	16 Apr 2003 21:15:56 -0000	1.9
  +++ AssertionVisualizer.java	23 Apr 2003 18:52:06 -0000	1.10
  @@ -56,8 +56,8 @@
   
   
   import java.awt.BorderLayout;
  -import java.awt.Font;
   
  +import javax.swing.Box;
   import javax.swing.BoxLayout;
   import javax.swing.JLabel;
   import javax.swing.JPanel;
  @@ -156,28 +156,17 @@
           this.setLayout(new BorderLayout());
   
           // MAIN PANEL
  -        JPanel mainPanel = new JPanel();
           Border margin = new EmptyBorder(10, 10, 5, 10);
   
  -        mainPanel.setBorder(margin);
  -        mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
  +        this.setBorder(margin);
   
  -        // TITLE
  -        JLabel panelTitleLabel = new JLabel(JMeterUtils.getResString("assertion_visualizer_title"));
  -        Font curFont = panelTitleLabel.getFont();
  -        int curFontSize = curFont.getSize();
  -
  -        curFontSize += 4;
  -        panelTitleLabel.setFont(new Font(curFont.getFontName(), curFont.getStyle(), curFontSize));
  -        mainPanel.add(panelTitleLabel);
   
           // NAME
  -        mainPanel.add(getNamePanel());
  -        mainPanel.add(getFilePanel());
  +        this.add(makeTitlePanel(),BorderLayout.NORTH);
   
           // TEXTAREA LABEL
           JLabel textAreaLabel = new JLabel(JMeterUtils.getResString("assertion_textarea_label"));
  -
  +        Box mainPanel = Box.createVerticalBox();
           mainPanel.add(textAreaLabel);
   
           // TEXTAREA
  @@ -190,6 +179,7 @@
           areaScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
   
           mainPanel.add(areaScrollPane);
  +        mainPanel.add(Box.createVerticalGlue());
           this.add(mainPanel, BorderLayout.CENTER);
       }
   }
  
  
  
  1.11      +2 -13     jakarta-jmeter/src/components/org/apache/jmeter/visualizers/GraphVisualizer.java
  
  Index: GraphVisualizer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/visualizers/GraphVisualizer.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- GraphVisualizer.java	16 Apr 2003 21:15:56 -0000	1.10
  +++ GraphVisualizer.java	23 Apr 2003 18:52:06 -0000	1.11
  @@ -59,7 +59,6 @@
   import java.awt.Color;
   import java.awt.Dimension;
   import java.awt.FlowLayout;
  -import java.awt.Font;
   import java.awt.Image;
   import java.awt.event.ItemEvent;
   import java.awt.event.ItemListener;
  @@ -270,18 +269,8 @@
           mainPanel.setBorder(margin);
           mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
   
  -        // TITLE
  -        JLabel panelTitleLabel = new JLabel(JMeterUtils.getResString("graph_results_title"));
  -        Font curFont = panelTitleLabel.getFont();
  -        int curFontSize = curFont.getSize();
  -
  -        curFontSize += 4;
  -        panelTitleLabel.setFont(new Font(curFont.getFontName(), curFont.getStyle(), curFontSize));
  -        mainPanel.add(panelTitleLabel);
  -
           // NAME
  -        mainPanel.add(getNamePanel());
  -        mainPanel.add(this.getFilePanel());
  +        mainPanel.add(makeTitlePanel());
   
   
           // Set up the graph with header, footer, Y axis and graph display
  
  
  
  1.3       +2 -3      jakarta-jmeter/src/components/org/apache/jmeter/visualizers/SimpleDataWriter.java
  
  Index: SimpleDataWriter.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/visualizers/SimpleDataWriter.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SimpleDataWriter.java	23 Apr 2003 14:23:05 -0000	1.2
  +++ SimpleDataWriter.java	23 Apr 2003 18:52:07 -0000	1.3
  @@ -122,7 +122,6 @@
   
           // NAME
           mainPanel.add(makeTitlePanel());
  -        mainPanel.add(getFilePanel());
   
           this.add(mainPanel, BorderLayout.NORTH);
       }
  
  
  
  1.8       +3 -4      jakarta-jmeter/src/components/org/apache/jmeter/visualizers/SplineVisualizer.java
  
  Index: SplineVisualizer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/visualizers/SplineVisualizer.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SplineVisualizer.java	23 Apr 2003 14:23:05 -0000	1.7
  +++ SplineVisualizer.java	23 Apr 2003 18:52:07 -0000	1.8
  @@ -186,7 +186,6 @@
   
           // NAME
           mainPanel.add(makeTitlePanel());
  -        mainPanel.add(getFilePanel());
           maximumLabel = new JLabel(JMeterUtils.getResString("spline_visualizer_maximum"));
           maximumLabel.setForeground(MAXIMUM_COLOR);
           maximumLabel.setBackground(backColor);
  
  
  
  1.12      +11 -22    jakarta-jmeter/src/components/org/apache/jmeter/visualizers/StatVisualizer.java
  
  Index: StatVisualizer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/visualizers/StatVisualizer.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- StatVisualizer.java	16 Apr 2003 21:15:56 -0000	1.11
  +++ StatVisualizer.java	23 Apr 2003 18:52:07 -0000	1.12
  @@ -57,13 +57,11 @@
   
   import java.awt.BorderLayout;
   import java.awt.Dimension;
  -import java.awt.Font;
   import java.awt.event.MouseAdapter;
   import java.awt.event.MouseEvent;
   import java.util.Arrays;
   
   import javax.swing.BoxLayout;
  -import javax.swing.JLabel;
   import javax.swing.JPanel;
   import javax.swing.JScrollPane;
   import javax.swing.JTable;
  @@ -183,16 +181,7 @@
           mainPanel.setBorder(margin);
           mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
   
  -        // TITLE
  -        JLabel panelTitleLabel = new JLabel(VISUALIZER_NAME);
  -        Font curFont = panelTitleLabel.getFont();
  -        int curFontSize = curFont.getSize();
  -
  -        curFontSize += 4;
  -        panelTitleLabel.setFont(
  -                new Font(curFont.getFontName(), curFont.getStyle(), curFontSize));
  -        mainPanel.add(panelTitleLabel);
  -        mainPanel.add(getFilePanel());
  +        mainPanel.add(makeTitlePanel());
           myStatTableModel = new StatTableModel(model);
           // SortFilterModel mySortedModel = new SortFilterModel(myStatTableModel);
           myJTable = new JTable(myStatTableModel);
  
  
  
  1.8       +1 -2      jakarta-jmeter/src/components/org/apache/jmeter/visualizers/TableVisualizer.java
  
  Index: TableVisualizer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/visualizers/TableVisualizer.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- TableVisualizer.java	23 Apr 2003 14:23:05 -0000	1.7
  +++ TableVisualizer.java	23 Apr 2003 18:52:07 -0000	1.8
  @@ -198,7 +198,6 @@
   
           // NAME
           mainPanel.add(makeTitlePanel());
  -        mainPanel.add(getFilePanel());
   
           // Set up the table itself
           table = new JTable(model);
  
  
  
  1.20      +1 -4      jakarta-jmeter/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java
  
  Index: ViewResultsFullVisualizer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- ViewResultsFullVisualizer.java	23 Apr 2003 14:23:05 -0000	1.19
  +++ ViewResultsFullVisualizer.java	23 Apr 2003 18:52:07 -0000	1.20
  @@ -492,9 +492,6 @@
           treeSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, treePane, getBottomPane());
   
           Box titlePanel = makeTitlePanel();
  -        JCheckBox errorCheckBox = getErrorLoggingCheckbox();
  -        errorCheckBox.setAlignmentX(JCheckBox.CENTER_ALIGNMENT);
  -        titlePanel.add(errorCheckBox);
   
           add(titlePanel, BorderLayout.NORTH);
           add(treeSplitPane, BorderLayout.CENTER);
  
  
  
  1.5       +3 -3      jakarta-jmeter/src/core/org/apache/jmeter/config/Argument.java
  
  Index: Argument.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/config/Argument.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Argument.java	7 Apr 2003 14:35:20 -0000	1.4
  +++ Argument.java	23 Apr 2003 18:52:07 -0000	1.5
  @@ -72,9 +72,9 @@
   
   public class Argument extends AbstractTestElement implements Serializable
   {
  -	protected final static String NAME = "Argument.name";
  -	protected final static String VALUE = "Argument.value";
  -        private final static String METADATA = "Argument.metadata";
  +	public final static String NAME = "Argument.name";
  +	public final static String VALUE = "Argument.value";
  +        public final static String METADATA = "Argument.metadata";
       
   	/****************************************
   	 * Constructor for the Argument object
  
  
  
  1.5       +2 -2      jakarta-jmeter/src/core/org/apache/jmeter/config/Arguments.java
  
  Index: Arguments.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/config/Arguments.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Arguments.java	7 Apr 2003 14:35:20 -0000	1.4
  +++ Arguments.java	23 Apr 2003 18:52:07 -0000	1.5
  @@ -275,7 +275,7 @@
   
   		if(row < getArguments().size())
   		{
  -			argument = (Argument)getArguments().get(row);
  +			argument = (Argument)getArguments().get(row).getObjectValue();
   		}
   
   		return argument;
  
  
  
  1.8       +6 -1      jakarta-jmeter/src/core/org/apache/jmeter/control/LoopController.java
  
  Index: LoopController.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/control/LoopController.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- LoopController.java	11 Apr 2003 19:10:55 -0000	1.7
  +++ LoopController.java	23 Apr 2003 18:52:07 -0000	1.8
  @@ -112,6 +112,11 @@
   	{
   		return getPropertyAsInt(LOOPS);
   	}
  +    
  +    public String getLoopString()
  +    {
  +        return getPropertyAsString(LOOPS);
  +    }
   
   	/****************************************
   	 * !ToDo (Method description)
  
  
  
  1.6       +10 -52    jakarta-jmeter/src/core/org/apache/jmeter/control/gui/LoopControlPanel.java
  
  Index: LoopControlPanel.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/control/gui/LoopControlPanel.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- LoopControlPanel.java	23 Apr 2003 14:23:06 -0000	1.5
  +++ LoopControlPanel.java	23 Apr 2003 18:52:07 -0000	1.6
  @@ -1,13 +1,10 @@
   package org.apache.jmeter.control.gui;
   import java.awt.event.ActionEvent;
   import java.awt.event.ActionListener;
  -import java.awt.event.KeyEvent;
  -import java.awt.event.KeyListener;
   
   import javax.swing.BorderFactory;
   import javax.swing.JCheckBox;
   import javax.swing.JLabel;
  -import javax.swing.JOptionPane;
   import javax.swing.JPanel;
   import javax.swing.JTextField;
   
  @@ -25,7 +22,7 @@
    *@version   1.0
    ***************************************/
   
  -public class LoopControlPanel extends AbstractControllerGui implements KeyListener, ActionListener
  +public class LoopControlPanel extends AbstractControllerGui implements ActionListener
   {
   
       JCheckBox infinite;
  @@ -65,7 +62,7 @@
           super.configure(element);
           if (element instanceof LoopController)
           {
  -            setState(((LoopController) element).getLoops());
  +            setState(((LoopController) element).getLoopString());
           }
           else
           {
  @@ -125,51 +122,6 @@
       }
   
       /****************************************
  -     * Description of the Method
  -     *
  -     *@param e  Description of Parameter
  -     ***************************************/
  -    public void keyPressed(KeyEvent e)
  -    {}
  -
  -    /****************************************
  -     * Description of the Method
  -     *
  -     *@param e  Description of Parameter
  -     ***************************************/
  -    public void keyTyped(KeyEvent e)
  -    {}
  -
  -    /****************************************
  -     * Description of the Method
  -     *
  -     *@param e  Description of Parameter
  -     ***************************************/
  -    public void keyReleased(KeyEvent e)
  -    {
  -        String temp = e.getComponent().getName();
  -        if (temp.equals(LOOPS))
  -        {
  -            try
  -            {
  -                Integer.parseInt(loops.getText());
  -            }
  -            catch (NumberFormatException ex)
  -            {
  -                if (loops.getText().length() > 0)
  -                {
  -                    // We need a standard warning/error dialog. The problem with
  -                    // having it here is that the dialog is centered over this
  -                    // LoopControlPanel instead of begin centered in the entire
  -                    // JMeter GUI window.
  -                    JOptionPane.showMessageDialog(this, "You must enter a valid number", "Invalid data", JOptionPane.WARNING_MESSAGE);
  -                    loops.setText("");
  -                }
  -            }
  -        }
  -    }
  -
  -    /****************************************
        * !ToDoo (Method description)
        *
        *@return   !ToDo (Return description)
  @@ -214,7 +166,6 @@
           loops = new JTextField(5);
           loopPanel.add(loops);
           loops.setName(LOOPS);
  -        loops.addKeyListener(this);
           loops.setText("1");
   
           // FOREVER CHECKBOX
  @@ -224,6 +175,13 @@
           loopPanel.add(infinite);
   
           return loopPanel;
  +    }
  +    
  +    private void setState(String loopCount)
  +    {
  +        loops.setText(loopCount);
  +        infinite.setSelected(false);
  +        loops.setEnabled(true);
       }
   
       private void setState(int loopCount)
  
  
  
  1.11      +1 -0      jakarta-jmeter/src/core/org/apache/jmeter/engine/PreCompiler.java
  
  Index: PreCompiler.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/engine/PreCompiler.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- PreCompiler.java	14 Mar 2003 21:15:36 -0000	1.10
  +++ PreCompiler.java	23 Apr 2003 18:52:07 -0000	1.11
  @@ -45,6 +45,7 @@
               try
               {
                   replacer.replaceValues((TestElement) node);
  +                ((TestElement)node).setRunningVersion(true);
               }
               catch (InvalidVariableException e)
               {
  
  
  
  1.21      +3 -3      jakarta-jmeter/src/core/org/apache/jmeter/engine/StandardJMeterEngine.java
  
  Index: StandardJMeterEngine.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/engine/StandardJMeterEngine.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- StandardJMeterEngine.java	10 Apr 2003 18:31:18 -0000	1.20
  +++ StandardJMeterEngine.java	23 Apr 2003 18:52:07 -0000	1.21
  @@ -267,7 +267,7 @@
   
   	private ListedHashTree cloneTree(ListedHashTree tree)
   	{
  -		TreeCloner cloner = new TreeCloner(false);
  +		TreeCloner cloner = new TreeCloner(true);
   		tree.traverse(cloner);
   		return cloner.getClonedTree();
   	}
  
  
  
  1.5       +98 -64    jakarta-jmeter/src/core/org/apache/jmeter/engine/TreeCloner.java
  
  Index: TreeCloner.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/engine/TreeCloner.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- TreeCloner.java	5 Feb 2003 05:12:06 -0000	1.4
  +++ TreeCloner.java	23 Apr 2003 18:52:07 -0000	1.5
  @@ -2,13 +2,22 @@
   
   import java.util.LinkedList;
   
  +import org.apache.jmeter.config.Argument;
   import org.apache.jmeter.config.Arguments;
   import org.apache.jmeter.control.GenericController;
  -import org.apache.jmeter.testelement.PerThreadClonable;
  +import org.apache.jmeter.engine.util.NoThreadClone;
  +import org.apache.jmeter.reporters.ResultCollector;
   import org.apache.jmeter.testelement.TestElement;
  +import org.apache.jmeter.testelement.TestPlan;
  +import org.apache.jmeter.testelement.property.CollectionProperty;
  +import org.apache.jmeter.testelement.property.JMeterProperty;
  +import org.apache.jmeter.testelement.property.PropertyIterator;
  +import org.apache.jmeter.util.JMeterUtils;
   import org.apache.jorphan.collections.HashTree;
   import org.apache.jorphan.collections.HashTreeTraverser;
   import org.apache.jorphan.collections.ListedHashTree;
  +import org.apache.jorphan.logging.LoggingManager;
  +import org.apache.log.Logger;
   
   /**
    * <p>Title: </p>
  @@ -21,75 +30,100 @@
   
   public class TreeCloner implements HashTreeTraverser
   {
  -	ListedHashTree newTree;
  -	LinkedList objects = new LinkedList();
  +    Logger log = LoggingManager.getLoggerFor(JMeterUtils.ENGINE);
  +    ListedHashTree newTree;
  +    LinkedList objects = new LinkedList();
       boolean forThread = true;
  -    
  +
       public TreeCloner()
       {
           this(true);
       }
   
  -	public TreeCloner(boolean forThread)
  -	{
  -		newTree = new ListedHashTree();
  +    public TreeCloner(boolean forThread)
  +    {
  +        newTree = new ListedHashTree();
           this.forThread = forThread;
  -	}
  -	public void addNode(Object node,HashTree subTree)
  -	{
  -		if(node instanceof PerThreadClonable || (!forThread && node instanceof TestElement))
  -		{
  -			node = ((TestElement)node).clone();
  -			newTree.add(objects,node);
  -		}
  -		else
  -		{
  -			newTree.add(objects,node);
  -		}
  -		objects.addLast(node);
  -	}
  -	public void subtractNode()
  -	{
  -		objects.removeLast();
  -	}
  -
  -	public ListedHashTree getClonedTree()
  -	{
  -		return newTree;
  -	}
  -
  -	public void processPath()
  -	{
  -	}
  -
  -	public static class Test extends junit.framework.TestCase
  -	{
  -		public Test(String name)
  -		{
  -			super(name);
  -		}
  -
  -		public void testCloning() throws Exception
  -		{
  -			ListedHashTree original = new ListedHashTree();
  -			GenericController controller = new GenericController();
  -			controller.setName("controller");
  -			Arguments args = new Arguments();
  -			args.setName("args");
  -			original.add(controller,args);
  -			TreeCloner cloner = new TreeCloner();
  -			original.traverse(cloner);
  -			ListedHashTree newTree = cloner.getClonedTree();
  -			assertTrue(original != newTree);
  -			assertEquals(original.size(),newTree.size());
  -			assertEquals(original.getTree(original.getArray()[0]).size(),
  -					newTree.getTree(newTree.getArray()[0]).size());
  -			assertTrue(original.getArray()[0] != newTree.getArray()[0]);
  -			assertEquals(((GenericController)original.getArray()[0]).getName(),
  -					((GenericController)newTree.getArray()[0]).getName());
  -			assertSame(original.getTree(original.getArray()[0]).getArray()[0],
  -							newTree.getTree(newTree.getArray()[0]).getArray()[0]);
  -		}
  +    }
  +    public void addNode(Object node, HashTree subTree)
  +    {
  +        if ((!forThread || !(node instanceof NoThreadClone)) && (node instanceof TestElement))
  +        {
  +            node = ((TestElement) node).clone();
  +            newTree.add(objects, node);
  +        }
  +        else
  +        {
  +            newTree.add(objects, node);
  +        }
  +        objects.addLast(node);
  +    }
  +    public void subtractNode()
  +    {
  +        objects.removeLast();
  +    }
   
  -	}
  +    public ListedHashTree getClonedTree()
  +    {
  +        return newTree;
  +    }
  +
  +    public void processPath()
  +    {}
  +
  +    public static class Test extends junit.framework.TestCase
  +    {
  +        public Test(String name)
  +        {
  +            super(name);
  +        }
  +
  +        public void testCloning() throws Exception
  +        {
  +            ListedHashTree original = new ListedHashTree();
  +            GenericController controller = new GenericController();
  +            controller.setName("controller");
  +            Arguments args = new Arguments();
  +            args.setName("args");
  +            TestPlan plan = new TestPlan();
  +            plan.addParameter("server", "jakarta");
  +            original.add(controller, args);
  +            original.add(plan);
  +            ResultCollector listener = new ResultCollector();
  +            listener.setName("Collector");
  +            original.add(controller, listener);
  +            TreeCloner cloner = new TreeCloner();
  +            original.traverse(cloner);
  +            ListedHashTree newTree = cloner.getClonedTree();
  +            assertTrue(original != newTree);
  +            assertEquals(original.size(), newTree.size());
  +            assertEquals(original.getTree(original.getArray()[0]).size(), newTree.getTree(newTree.getArray()[0]).size());
  +            assertTrue(original.getArray()[0] != newTree.getArray()[0]);
  +            assertEquals(((GenericController) original.getArray()[0]).getName(), ((GenericController) newTree.getArray()[0]).getName());
  +            assertSame(original.getTree(original.getArray()[0]).getArray()[1], newTree.getTree(newTree.getArray()[0]).getArray()[1]);
  +            TestPlan clonedTestPlan = (TestPlan) newTree.getArray()[1];
  +            clonedTestPlan.setRunningVersion(true);
  +            clonedTestPlan.recoverRunningVersion();
  +            assertTrue(!plan.getProperty(TestPlan.USER_DEFINED_VARIABLES).isRunningVersion());
  +            assertTrue(clonedTestPlan.getProperty(TestPlan.USER_DEFINED_VARIABLES).isRunningVersion());
  +            Arguments vars = (Arguments) plan.getProperty(TestPlan.USER_DEFINED_VARIABLES).getObjectValue();
  +            PropertyIterator iter = ((CollectionProperty)vars.getProperty(Arguments.ARGUMENTS)).iterator();
  +            while (iter.hasNext())
  +            {
  +                JMeterProperty argProp = iter.next();                
  +                assertTrue(!argProp.isRunningVersion());
  +                assertTrue(argProp.getObjectValue() instanceof Argument);
  +                Argument arg = (Argument)argProp.getObjectValue();
  +                arg.setValue("yahoo");
  +                assertEquals("yahoo",arg.getValue());
  +            }
  +            vars = (Arguments) clonedTestPlan.getProperty(TestPlan.USER_DEFINED_VARIABLES).getObjectValue();
  +            iter = vars.propertyIterator();
  +            while (iter.hasNext())
  +            {
  +                assertTrue(iter.next().isRunningVersion());
  +            }
  +        }
  +
  +    }
   }
  
  
  
  1.1                  jakarta-jmeter/src/core/org/apache/jmeter/engine/util/NoThreadClone.java
  
  Index: NoThreadClone.java
  ===================================================================
  /*
   * Created on Apr 23, 2003
   *
   * To change the template for this generated file go to
   * Window>Preferences>Java>Code Generation>Code and Comments
   */
  package org.apache.jmeter.engine.util;
  
  /**
   * Implement this method-less interface to indicate your test element should not be cloned for each thread in a test run.
   * Otherwise, the default behavior is to clone every test element for each thread.
   */
  public interface NoThreadClone
  {}
  
  
  
  1.13      +4 -3      jakarta-jmeter/src/core/org/apache/jmeter/gui/action/Load.java
  
  Index: Load.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/action/Load.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- Load.java	7 Apr 2003 14:35:21 -0000	1.12
  +++ Load.java	23 Apr 2003 18:52:07 -0000	1.13
  @@ -142,6 +142,7 @@
   		}
   		finally
   		{
  +            GuiPackage.getInstance().updateCurrentGui();
   			GuiPackage.getInstance().getMainFrame().repaint();
   		}
   		if(isTestPlan && f != null)
  
  
  
  1.8       +6 -0      jakarta-jmeter/src/core/org/apache/jmeter/gui/action/Start.java
  
  Index: Start.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/action/Start.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Start.java	25 Mar 2003 17:24:33 -0000	1.7
  +++ Start.java	23 Apr 2003 18:52:08 -0000	1.8
  @@ -64,8 +64,11 @@
   import org.apache.jmeter.engine.TreeCloner;
   import org.apache.jmeter.engine.util.DisabledComponentRemover;
   import org.apache.jmeter.gui.GuiPackage;
  +import org.apache.jmeter.testelement.TestPlan;
   import org.apache.jmeter.util.JMeterUtils;
   import org.apache.jorphan.collections.HashTree;
  +import org.apache.jorphan.logging.LoggingManager;
  +import org.apache.log.Logger;
   
   /****************************************
    * Title: Apache JMeter Description: Copyright: Copyright (c) 2000 Company:
  @@ -78,6 +81,7 @@
   
   public class Start extends AbstractAction
   {
  +    private static Logger log = LoggingManager.getLoggerFor(JMeterUtils.GUI);
   	private static Set commands = new HashSet();
   
   	private StandardJMeterEngine engine;
  @@ -137,6 +141,7 @@
           DisabledComponentRemover remover = new DisabledComponentRemover(testTree);
           testTree.traverse(remover);
   		testTree.add(testTree.getArray()[0],gui.getMainFrame());
  +        log.debug("test plan before cloning is running version: "+((TestPlan)testTree.getArray()[0]).isRunningVersion());
           TreeCloner cloner = new TreeCloner(false);
           testTree.traverse(cloner);
   		engine.configure(cloner.getClonedTree());
  @@ -146,6 +151,7 @@
   			JOptionPane.showMessageDialog(gui.getMainFrame(),e.getMessage(),
   					JMeterUtils.getResString("Error Occurred"),JOptionPane.ERROR_MESSAGE);
   		}
  +        log.debug("test plan after cloning and running test is running version: "+((TestPlan)testTree.getArray()[0]).isRunningVersion());
   	}
   
   }
  
  
  
  1.4       +5 -5      jakarta-jmeter/src/core/org/apache/jmeter/gui/util/FilePanel.java
  
  Index: FilePanel.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/util/FilePanel.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- FilePanel.java	16 Apr 2003 21:15:56 -0000	1.3
  +++ FilePanel.java	23 Apr 2003 18:52:08 -0000	1.4
  @@ -52,8 +52,8 @@
    * information on the Apache Software Foundation, please see
    * <http://www.apache.org/>.
    */package org.apache.jmeter.gui.util;
  -import java.awt.BorderLayout;
   import java.awt.Dimension;
  +import java.awt.FlowLayout;
   import java.awt.event.ActionEvent;
   import java.awt.event.ActionListener;
   import java.util.Iterator;
  @@ -124,12 +124,12 @@
   	 */
   	private void init()
   	{
  -		setLayout(new BorderLayout());
  +		setLayout(new FlowLayout(FlowLayout.LEFT));
   		setBorder(BorderFactory.createTitledBorder(title));
  -		add(label, BorderLayout.WEST);
  -		add(filename, BorderLayout.CENTER);
  +		add(label);
  +		add(filename);
   		filename.addActionListener(this);
  -		add(browse, BorderLayout.EAST);
  +		add(browse);
   		browse.setActionCommand("browse");
   		browse.addActionListener(this);
           
  
  
  
  1.17      +3 -2      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.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- ResultCollector.java	11 Apr 2003 19:10:56 -0000	1.16
  +++ ResultCollector.java	23 Apr 2003 18:52:08 -0000	1.17
  @@ -74,6 +74,7 @@
   import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
   import org.apache.avalon.framework.configuration.DefaultConfigurationSerializer;
   import org.apache.jmeter.engine.event.IterationEvent;
  +import org.apache.jmeter.engine.util.NoThreadClone;
   import org.apache.jmeter.exceptions.IllegalUserActionException;
   import org.apache.jmeter.samplers.Clearable;
   import org.apache.jmeter.samplers.Remoteable;
  @@ -98,7 +99,7 @@
    * @version $Id$
    */
   public class ResultCollector extends AbstractListenerElement
  -        implements SampleListener, Clearable, Serializable, TestListener, Remoteable
  +        implements SampleListener, Clearable, Serializable, TestListener, Remoteable,NoThreadClone
   {
       transient private static Logger log =
               Hierarchy.getDefaultHierarchy().getLoggerFor("jmeter.elements");
  
  
  
  1.15      +4 -3      jakarta-jmeter/src/core/org/apache/jmeter/testelement/AbstractTestElement.java
  
  Index: AbstractTestElement.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/AbstractTestElement.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- AbstractTestElement.java	14 Apr 2003 13:19:17 -0000	1.14
  +++ AbstractTestElement.java	23 Apr 2003 18:52:08 -0000	1.15
  @@ -29,7 +29,7 @@
   
       private Map propMap = Collections.synchronizedMap(new HashMap());
   
  -    private boolean runningVersion;
  +    private boolean runningVersion = false;
   
       /****************************************
        * !ToDo (Method description)
  @@ -51,6 +51,7 @@
           {
               clonedElement.setProperty((JMeterProperty) iter.next().clone());
           }
  +        clonedElement.setRunningVersion(runningVersion);
           return clonedElement;
       }
   
  @@ -295,7 +296,7 @@
           PropertyIterator iter = propertyIterator();
           while (iter.hasNext())
           {
  -            iter.next().setRunningVersion(true);
  +            iter.next().setRunningVersion(runningVersion);
           }
       }
   
  
  
  
  1.9       +1 -3      jakarta-jmeter/src/core/org/apache/jmeter/threads/gui/ThreadGroupGui.java
  
  Index: ThreadGroupGui.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/threads/gui/ThreadGroupGui.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- ThreadGroupGui.java	23 Apr 2003 14:23:07 -0000	1.8
  +++ ThreadGroupGui.java	23 Apr 2003 18:52:08 -0000	1.9
  @@ -222,7 +222,6 @@
           threadPanel.add(threadLabel);
           threadInput = new JTextField(5);
           threadInput.setText("1");
  -        threadInput.addFocusListener(NumberFieldErrorListener.getNumberFieldErrorListener());
           threadInput.setName(THREAD_NAME);
           threadPanel.add(threadInput);
           threadPropsPanel.add(threadPanel);
  @@ -235,7 +234,6 @@
           rampInput = new JTextField(5);
           rampInput.setText("1");
           rampInput.setName(RAMP_NAME);
  -        rampInput.addFocusListener(NumberFieldErrorListener.getNumberFieldErrorListener());
           rampPanel.add(rampInput);
           threadPropsPanel.add(rampPanel);
   
  
  
  
  1.7       +22 -3     jakarta-jmeter/src/core/org/apache/jmeter/visualizers/gui/AbstractVisualizer.java
  
  Index: AbstractVisualizer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/visualizers/gui/AbstractVisualizer.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- AbstractVisualizer.java	28 Feb 2003 14:21:48 -0000	1.6
  +++ AbstractVisualizer.java	23 Apr 2003 18:52:08 -0000	1.7
  @@ -1,9 +1,13 @@
   package org.apache.jmeter.visualizers.gui;
  +import java.awt.Component;
  +import java.awt.FlowLayout;
   import java.io.IOException;
   import java.util.Arrays;
   import java.util.Collection;
   
  +import javax.swing.Box;
   import javax.swing.JCheckBox;
  +import javax.swing.JPanel;
   import javax.swing.JPopupMenu;
   import javax.swing.event.ChangeEvent;
   import javax.swing.event.ChangeListener;
  @@ -58,9 +62,12 @@
           return collector;
       }
   
  -    protected FilePanel getFilePanel()
  +    protected Component getFilePanel()
       {
  -        return filePanel;
  +        JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT));
  +        panel.add(filePanel);
  +        panel.add(getErrorLoggingCheckbox());
  +        return panel;
       }
   
       public void setFile(String filename)
  @@ -72,6 +79,8 @@
       {
           return filePanel.getFilename();
       }
  +    
  +    
   
       /****************************************
        * !ToDo (Method description)
  @@ -161,4 +170,14 @@
           super.configureTestElement(mc);
           mc.setListener(this);
       }
  +    /**
  +     * override parent method to add the file panel to the title panel.
  +     */
  +    protected Box makeTitlePanel()
  +    {
  +        Box box = super.makeTitlePanel();
  +        box.add(getFilePanel());
  +        return box;
  +    }
  +
   }
  
  
  
  1.9       +28 -1     jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/HttpTestSampleGui.java
  
  Index: HttpTestSampleGui.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/HttpTestSampleGui.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- HttpTestSampleGui.java	15 Apr 2003 21:40:31 -0000	1.8
  +++ HttpTestSampleGui.java	23 Apr 2003 18:52:08 -0000	1.9
  @@ -65,6 +65,8 @@
   import javax.swing.border.Border;
   import javax.swing.border.EmptyBorder;
   
  +import junit.framework.TestCase;
  +
   import org.apache.jmeter.protocol.http.config.gui.MultipartUrlConfigGui;
   import org.apache.jmeter.protocol.http.config.gui.UrlConfigGui;
   import org.apache.jmeter.protocol.http.sampler.HTTPSampler;
  @@ -199,5 +201,30 @@
           optionalTasksPanel.add(retrieveImagesPanel);
   
           return optionalTasksPanel;
  +    }
  +    
  +    public static class Test extends TestCase
  +    {
  +        HttpTestSampleGui gui;
  +        
  +        public Test(String name)
  +        {
  +            super(name);
  +        }
  +        
  +        public void setUp()
  +        {
  +            gui = new HttpTestSampleGui();
  +        }
  +        
  +        public void testCloneSampler() throws Exception
  +        {
  +            HTTPSampler sampler = (HTTPSampler)gui.createTestElement();
  +            sampler.addArgument("param","value");
  +            HTTPSampler clonedSampler = (HTTPSampler)sampler.clone();
  +            clonedSampler.setRunningVersion(true);
  +            sampler.getArguments().getArgument(0).setValue("new value");
  +            assertEquals("Sampler didn't clone correctly","new value",sampler.getArguments().getArgument(0).getValue());
  +        }
       }
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org