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 2002/05/30 00:41:54 UTC

cvs commit: jakarta-jmeter/src_1/org/apache/jmeter/util JMeterUtils.java

mstover1    02/05/29 15:41:54

  Modified:    src_1/org/apache/jmeter/config/gui ArgumentsPanel.java
               src_1/org/apache/jmeter/control/gui TestPlanGui.java
               src_1/org/apache/jmeter/gui/action Start.java
               src_1/org/apache/jmeter/gui/util JLabeledTextField.java
                        MenuFactory.java
               src_1/org/apache/jmeter/protocol/http/config UrlConfig.java
               src_1/org/apache/jmeter/resources messages.properties
                        messages_ja.properties messages_no.properties
               src_1/org/apache/jmeter/testelement AbstractTestElement.java
               src_1/org/apache/jmeter/util JMeterUtils.java
  Added:       src_1/org/apache/jmeter/gui/util JLabeledChoice.java
                        JLabeledField.java JLabeledPasswordField.java
                        JLabeledTextArea.java
               src_1/org/apache/jmeter/protocol/http/modifier
                        URLRewritingModifier.java
               src_1/org/apache/jmeter/protocol/http/modifier/gui
                        URLRewritingModifierGui.java
  Log:
  Fixing assorted bugs
  New URL Rewriting modifier
  
  Revision  Changes    Path
  1.7       +16 -11    jakarta-jmeter/src_1/org/apache/jmeter/config/gui/ArgumentsPanel.java
  
  Index: ArgumentsPanel.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/config/gui/ArgumentsPanel.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ArgumentsPanel.java	23 May 2002 15:47:04 -0000	1.6
  +++ ArgumentsPanel.java	29 May 2002 22:41:53 -0000	1.7
  @@ -138,6 +138,7 @@
   		{
   			tableModel.args = (Arguments)el;
   		}
  +		checkDeleteStatus();
   	}
   
   	/****************************************
  @@ -266,15 +267,7 @@
   		delete = new JButton(JMeterUtils.getResString("delete"));
   		delete.setActionCommand(DELETE);
   
  -		// Disable DELETE if there are no rows in the table to delete.
  -		if(tableModel.getRowCount() == 0)
  -		{
  -			delete.setEnabled(false);
  -		}
  -		else
  -		{
  -			delete.setEnabled(true);
  -		}
  +		checkDeleteStatus();
   
   		JPanel buttonPanel = new JPanel();
   		buttonPanel.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 10));
  @@ -287,6 +280,18 @@
   		this.add(innerPanel);
   	}
   
  +	private void checkDeleteStatus() {
  +		// Disable DELETE if there are no rows in the table to delete.
  +		if(tableModel.getRowCount() == 0)
  +		{
  +			delete.setEnabled(false);
  +		}
  +		else
  +		{
  +			delete.setEnabled(true);
  +		}
  +	}
  +
   	/****************************************
   	 * !ToDo (Method description)
   	 ***************************************/
  @@ -317,8 +322,8 @@
   	 * Inner class to handle table model calls
   	 *
   	 *@author    $Author: mstover1 $
  -	 *@created   $Date: 2002/05/23 15:47:04 $
  -	 *@version   $Revision: 1.6 $
  +	 *@created   $Date: 2002/05/29 22:41:53 $
  +	 *@version   $Revision: 1.7 $
   	 ***************************************/
   	private class InnerTableModel extends DefaultTableModel
   	{
  
  
  
  1.3       +7 -1      jakarta-jmeter/src_1/org/apache/jmeter/control/gui/TestPlanGui.java
  
  Index: TestPlanGui.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/control/gui/TestPlanGui.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TestPlanGui.java	29 Apr 2002 17:08:07 -0000	1.2
  +++ TestPlanGui.java	29 May 2002 22:41:53 -0000	1.3
  @@ -12,7 +12,7 @@
    * Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
    *
    *@author    Michael Stover
  - *@created   $Date: 2002/04/29 17:08:07 $
  + *@created   $Date: 2002/05/29 22:41:53 $
    *@version   1.0
    ***************************************/
   
  @@ -39,6 +39,12 @@
   		JMenu addMenu = new JMenu(JMeterUtils.getResString("Add"));
   		addMenu.add(MenuFactory.makeMenuItem(new ThreadGroupGui().getStaticLabel(),
   				ThreadGroupGui.class.getName(), "Add"));
  +		addMenu.add(MenuFactory.makeMenu(MenuFactory.LISTENERS,"Add"));
  +		addMenu.add(MenuFactory.makeMenu(MenuFactory.CONFIG_ELEMENTS,"Add"));
  +		addMenu.add(MenuFactory.makeMenu(MenuFactory.ASSERTIONS,"Add"));
  +		addMenu.add(MenuFactory.makeMenu(MenuFactory.MODIFIERS,"Add"));
  +		addMenu.add(MenuFactory.makeMenu(MenuFactory.RESPONSE_BASED_MODIFIERS,"Add"));
  +		addMenu.add(MenuFactory.makeMenu(MenuFactory.TIMERS,"Add"));
   		pop.add(addMenu);
   		MenuFactory.addFileMenu(pop);
   		return pop;
  
  
  
  1.8       +2 -2      jakarta-jmeter/src_1/org/apache/jmeter/gui/action/Start.java
  
  Index: Start.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/gui/action/Start.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Start.java	28 May 2002 17:30:18 -0000	1.7
  +++ Start.java	29 May 2002 22:41:53 -0000	1.8
  @@ -108,11 +108,11 @@
   	 ***************************************/
   	public void doAction(ActionEvent e)
   	{
  -		if(engine == null && e.getActionCommand().equals("start"))
  +		if(e.getActionCommand().equals("start"))
   		{
   			startEngine();
   		}
  -		else if(engine != null && e.getActionCommand().equals("stop"))
  +		else if(e.getActionCommand().equals("stop"))
   		{
   			engine.stopTest();
   			engine = null;
  
  
  
  1.3       +176 -148  jakarta-jmeter/src_1/org/apache/jmeter/gui/util/JLabeledTextField.java
  
  Index: JLabeledTextField.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/gui/util/JLabeledTextField.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- JLabeledTextField.java	29 Apr 2002 17:08:09 -0000	1.2
  +++ JLabeledTextField.java	29 May 2002 22:41:53 -0000	1.3
  @@ -1,167 +1,195 @@
  +/*
  + * Copyright(c) 2000 Soltima, Inc.
  + * Soltima Wireless Publishing Platform (WPP)
  + *
  + * @author S.Coleman
  + */
   package org.apache.jmeter.gui.util;
  -import java.awt.event.FocusEvent;
  -import java.awt.event.FocusListener;
  -import java.util.ArrayList;
  +
   import javax.swing.*;
  -import javax.swing.event.ChangeEvent;
  +import java.util.*;
   import javax.swing.event.ChangeListener;
  +import javax.swing.event.ChangeEvent;
  +import java.util.ArrayList;
  +import java.awt.event.FocusListener;
  +import java.awt.event.FocusEvent;
  +import java.awt.FlowLayout;
   
  -/****************************************
  - * A Helper component that wraps a JTextField with a label into a JPanel (this).
  - * This component also has an efficient event handling mechanism for handling
  - * the text changing in the Text Field. The registered change listeners are only
  - * called when the text has changed.
  +/**
  + * A Helper component that wraps a JTextField with a label into
  + * a JPanel (this). This component also has an efficient event handling
  + * mechanism for handling the text changing in the Text Field. The registered
  + * change listeners are only called when the text has changed.
    *
  - *@author    S.Coleman
  - *@created   $Date: 2002/04/29 17:08:09 $
  - *@version   $Revision: 1.2 $
  - ***************************************/
  -public class JLabeledTextField extends JPanel
  + * @author S.Coleman
  + */
  +public class JLabeledTextField extends JPanel implements JLabeledField
   {
  -	private JLabel mLabel = new JLabel();
  -	private JTextField mTextField = new JTextField(30);
  -	private ArrayList mChangeListeners = new ArrayList(3);// Maybe move to vector if MT problems occur
  -
  -	/****************************************
  -	 * Default constructor, The label and the Text field are left empty.
  -	 ***************************************/
  -	public JLabeledTextField()
  -	{
  -		super();
  -		init();
  -	}
  -
  -	/****************************************
  -	 * Constructs a new component with the label displaying the passed text.
  -	 *
  -	 *@param pLabel  The text to in the label.
  -	 ***************************************/
  -	public JLabeledTextField(String pLabel)
  -	{
  -		super();
  -		mLabel.setText(pLabel);
  -		init();
  -	}
  -
  -	/****************************************
  -	 * Set the text displayed in the label.
  -	 *
  -	 *@param pLabel  The new label text.
  -	 ***************************************/
  -	public void setLabel(String pLabel)
  -	{
  -		mLabel.setText(pLabel);
  -	}
  -
  -	/****************************************
  -	 * Set the text displayed in the Text Field.
  -	 *
  -	 *@param pText  The new text to display in the text field.
  -	 ***************************************/
  -	public void setText(String pText)
  -	{
  -		mTextField.setText(pText);
  -	}
  -
  -	/****************************************
  -	 * Returns the text in the Text Field.
  -	 *
  -	 *@return   The text in the Text Field.
  -	 ***************************************/
  -	public String getText()
  -	{
  -		return mTextField.getText();
  -	}
  -
  -	/****************************************
  -	 * Returns the text of the label.
  -	 *
  -	 *@return   The text of the label.
  -	 ***************************************/
  -	public String getLabel()
  -	{
  -		return mLabel.getText();
  -	}
  -
  -	/****************************************
  -	 * Adds a change listener, that will be notified when the text in the text
  -	 * field is changed. The ChangeEvent that will be passed to registered
  -	 * listeners will contain this object as the source, allowing the new text to
  -	 * be extracted using the {@link #getText() getText} method.
  -	 *
  -	 *@param pChangeListener  The listener to add
  -	 ***************************************/
  -	public void addChangeListener(ChangeListener pChangeListener)
  -	{
  -		mChangeListeners.add(pChangeListener);
  -	}
  -
  -	/****************************************
  -	 * Removes a change listener.
  -	 *
  -	 *@param pChangeListener  The change listener to remove.
  -	 ***************************************/
  -	public void removeChangeListener(ChangeListener pChangeListener)
  -	{
  -		mChangeListeners.remove(pChangeListener);
  -	}
  -
  -	/****************************************
  -	 * Initialises all of the components on this panel.
  -	 ***************************************/
  -	private void init()
  -	{
  -		// Register the handler for focus listening. This handler will
  -		// only notify the registered when the text changes from when
  -		// the focus is gained to when it is lost.
  -		mTextField.addFocusListener(
  -			new FocusListener()
  -			{
  -
  -				String oldValue = "";// A temporary cache.
  -
  -				/****************************************
  -				 * Callback method when the focus to the Text Field component is lost.
  +	 private JLabel mLabel = new JLabel();
  +	 protected JTextField mTextField;
  +	 private ArrayList mChangeListeners = new ArrayList(3);  // Maybe move to vector if MT problems occur
  +
  +	 /**
  +	  * Default constructor, The label and the Text field are left empty.
  +	  */
  +	 public JLabeledTextField()
  +	 {
  +		  super();
  +		  createTextField();
  +		  init();
  +	 }
  +
  +	 public List getComponentList()
  +	 {
  +		List comps = new LinkedList();
  +		comps.add(mLabel);
  +		comps.add(mTextField);
  +		return comps;
  +	 }
  +
  +	 protected void createTextField()
  +	 {
  +		mTextField = new JTextField(20);
  +	 }
  +
  +	 /**
  +	  * Constructs a new component with the label displaying the
  +	  * passed text.
  +	  *
  +	  * @param pLabel The text to in the label.
  +	  */
  +	 public JLabeledTextField(String pLabel)
  +	 {
  +		  super();
  +		  createTextField();
  +		  mLabel.setText(pLabel);
  +		  init();
  +	 }
  +
  +	 public void setEnabled(boolean enable)
  +	 {
  +		super.setEnabled(enable);
  +		mTextField.setEnabled(enable);
  +	 }
  +
  +	 /**
  +	  * Initialises all of the components on this panel.
  +	  */
  +	 private void init()
  +	 {
  +		this.setLayout(new FlowLayout(FlowLayout.LEFT));
  +		  // Register the handler for focus listening. This handler will
  +		  // only notify the registered when the text changes from when
  +		  // the focus is gained to when it is lost.
  +		  mTextField.addFocusListener(new FocusListener(){
  +
  +				String oldValue = ""; // A temporary cache.
  +
  +				/**
  +				 * Callback method when the focus to the Text Field component
  +				 * is lost.
   				 *
  -				 *@param pFocusEvent  The focus event that occured.
  -				 ***************************************/
  +				 * @param pFocusEvent The focus event that occured.
  +				 */
   				public void focusLost(FocusEvent pFocusEvent)
   				{
  -					// Compare if the value has changed, since we received focus.
  -					if(oldValue.equals(mTextField.getText()) == false)
  -					{
  -						notifyChangeListeners();
  -					}
  +					 // Compare if the value has changed, since we received focus.
  +					 if (oldValue.equals(mTextField.getText()) == false)
  +					 {
  +						  notifyChangeListeners();
  +					 }
   				}
   
  -				/****************************************
  +				/**
   				 * Catch what the value was when focus was gained.
  -				 *
  -				 *@param pFocusEvent  !ToDo (Parameter description)
  -				 ***************************************/
  +				 */
   				public void focusGained(FocusEvent pFocusEvent)
   				{
  -					oldValue = mTextField.getText();
  +					 oldValue = mTextField.getText();
   				}
  -			});
  +		  });
  +
  +		  // Add the sub components
  +		  this.add(mLabel);
  +		  this.add(mTextField);
  +	 }
  +
  +	 /**
  +	  * Set the text displayed in the label.
  +	  *
  +	  * @param pLabel The new label text.
  +	  */
  +	 public void setLabel(String pLabel)
  +	 {
  +		  mLabel.setText(pLabel);
  +	 }
  +
  +	 /**
  +	  * Set the text displayed in the Text Field.
  +	  *
  +	  * @param pText The new text to display in the text field.
  +	  */
  +	 public void setText(String pText)
  +	 {
  +		  mTextField.setText(pText);
  +	 }
  +
  +	 /**
  +	  * Returns the text in the Text Field.
  +	  *
  +	  * @return The text in the Text Field.
  +	  */
  +	 public String getText()
  +	 {
  +		  return mTextField.getText();
  +	 }
  +
  +	 /**
  +	  * Returns the text of the label.
  +	  *
  +	  * @return The text of the label.
  +	  */
  +	 public String getLabel()
  +	 {
  +		  return mLabel.getText();
  +	 }
  +
  +	 /**
  +	  * Adds a change listener, that will be notified when the text in the
  +	  * text field is changed. The ChangeEvent that will be passed
  +	  * to registered listeners will contain this object as the source, allowing
  +	  * the new text to be extracted using the {@link #getText() getText} method.
  +	  *
  +	  * @param pChangeListener The listener to add
  +	  */
  +	 public void addChangeListener(ChangeListener pChangeListener)
  +	 {
  +		  mChangeListeners.add(pChangeListener);
  +	 }
  +
  +	 /**
  +	  * Removes a change listener.
  +	  *
  +	  * @param pChangeListener The change listener to remove.
  +	  */
  +	 public void removeChangeListener(ChangeListener pChangeListener)
  +	 {
  +		  mChangeListeners.remove(pChangeListener);
  +	 }
  +
  +	 /**
  +	  * Notify all registered change listeners that the
  +	  * text in the text field has changed.
  +	  */
  +	 protected void notifyChangeListeners()
  +	 {
  +		  ChangeEvent ce = new ChangeEvent(this);
  +		  for (int index = 0; index < mChangeListeners.size(); index ++)
  +		  {
  +				((ChangeListener)mChangeListeners.get(index)).stateChanged(ce);
  +		  }
  +	 }
   
  -		// Add the sub components
  -		this.add(mLabel);
  -		this.add(mTextField);
  -	}
  -
  -	/****************************************
  -	 * Notify all registered change listeners that the text in the text field has
  -	 * changed.
  -	 ***************************************/
  -	private void notifyChangeListeners()
  -	{
  -		ChangeEvent ce = new ChangeEvent(this);
  -		for(int index = 0; index < mChangeListeners.size(); index++)
  -		{
  -			((ChangeListener)mChangeListeners.get(index)).stateChanged(ce);
  -		}
  -	}
   
   }
   
  
  
  
  1.6       +7 -3      jakarta-jmeter/src_1/org/apache/jmeter/gui/util/MenuFactory.java
  
  Index: MenuFactory.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/gui/util/MenuFactory.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- MenuFactory.java	20 May 2002 13:05:51 -0000	1.5
  +++ MenuFactory.java	29 May 2002 22:41:53 -0000	1.6
  @@ -10,7 +10,7 @@
    * Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
    *
    *@author    Michael Stover
  - *@created   $Date: 2002/05/20 13:05:51 $
  + *@created   $Date: 2002/05/29 22:41:53 $
    *@version   1.0
    ***************************************/
   
  @@ -167,7 +167,9 @@
   		JPopupMenu pop = new JPopupMenu();
   		pop.add(MenuFactory.makeMenus(new String[]{MenuFactory.CONTROLLERS,
   				MenuFactory.SAMPLERS, MenuFactory.CONFIG_ELEMENTS,
  -				MenuFactory.MODIFIERS,MenuFactory.RESPONSE_BASED_MODIFIERS},
  +				MenuFactory.MODIFIERS,MenuFactory.RESPONSE_BASED_MODIFIERS,
  +				MenuFactory.TIMERS,
  +				MenuFactory.LISTENERS},
   				JMeterUtils.getResString("Add"),
   				"Add"));
   		pop.add(makeMenus(new String[]{MenuFactory.CONTROLLERS},
  @@ -187,7 +189,9 @@
   		JPopupMenu pop = new JPopupMenu();
   		pop.add(MenuFactory.makeMenus(new String[]{MenuFactory.CONFIG_ELEMENTS,
   				MenuFactory.ASSERTIONS,MenuFactory.MODIFIERS,
  -				MenuFactory.RESPONSE_BASED_MODIFIERS},
  +				MenuFactory.RESPONSE_BASED_MODIFIERS,
  +				MenuFactory.TIMERS,
  +				MenuFactory.LISTENERS},
   				JMeterUtils.getResString("Add"),
   				"Add"));
   		pop.add(makeMenus(new String[]{MenuFactory.CONTROLLERS},
  
  
  
  1.1                  jakarta-jmeter/src_1/org/apache/jmeter/gui/util/JLabeledChoice.java
  
  Index: JLabeledChoice.java
  ===================================================================
  /*
   * Copyright(c) 2000 Soltima, Inc.
   * Soltima Wireless Publishing Platform (WPP)
   *
   * @author S.Coleman
   */
  package org.apache.jmeter.gui.util;
  
  import java.util.*;
  import javax.swing.*;
  import java.awt.event.*;
  import java.awt.Component;
  import java.awt.Insets;
  import javax.swing.event.ChangeListener;
  import javax.swing.event.ChangeEvent;
  import java.util.*;
  import javax.swing.plaf.basic.BasicComboBoxEditor;
  
  /**
   * A Helper component that wraps a JTextField with a label into
   * a JPanel (this). This component also has an efficient event handling
   * mechanism for handling the text changing in the Text Field. The registered
   * change listeners are only called when the text has changed.
   *
   * @author S.Coleman
   */
  public class JLabeledChoice extends JPanel implements JLabeledField
  {
  	 private JLabel mLabel = new JLabel();
  	 private JComboBox choiceList;
  	 private ArrayList mChangeListeners = new ArrayList(3);  // Maybe move to vector if MT problems occur
  	 private JButton delete,add;
  
  	 /**
  	  * Default constructor, The label and the Text field are left empty.
  	  */
  	 public JLabeledChoice()
  	 {
  		  super();
  		  choiceList = new JComboBox();
  		  init();
  	 }
  
  	 public List getComponentList()
  	 {
  		List comps = new LinkedList();
  		comps.add(mLabel);
  		comps.add(choiceList);
  		return comps;
  	 }
  
  	 /**
  	  * Constructs a new component with the label displaying the
  	  * passed text.
  	  *
  	  * @param pLabel The text to in the label.
  	  */
  	 public JLabeledChoice(String pLabel,String[] items)
  	 {
  		  super();
  		  mLabel.setText(pLabel);
  		  choiceList = new JComboBox(items);
  		choiceList.setEditable(false);
  		  init();
  	 }
  
  	 public JLabeledChoice(String pLabel,String[] items,boolean editable)
  	 {
  		super();
  		  mLabel.setText(pLabel);
  		  choiceList = new JComboBox(items);
  			choiceList.setEditable(editable);
  		  init();
  	 }
  
  	 /**
  	  * Initialises all of the components on this panel.
  	  */
  	 private void init()
  	 {
  		/*if(choiceList.isEditable())
  		{
  			choiceList.addActionListener(new ComboListener());
  		}*/
  		choiceList.setBorder(BorderFactory.createLoweredBevelBorder());
  		  // Register the handler for focus listening. This handler will
  		  // only notify the registered when the text changes from when
  		  // the focus is gained to when it is lost.
  		  choiceList.addItemListener(new ItemListener(){
  
  				/**
  				 * Callback method when the focus to the Text Field component
  				 * is lost.
  				 *
  				 * @param pFocusEvent The focus event that occured.
  				 */
  				public void itemStateChanged(ItemEvent e)
  				{
  					if(e.getStateChange() == e.SELECTED)
  					{
  						notifyChangeListeners();
  					}
  				}
  		  });
  
  		  // Add the sub components
  		  this.add(mLabel);
  		  this.add(choiceList);
  		  if(choiceList.isEditable())
  		  {
  			add = new JButton("Add");
  			add.setMargin(new Insets(1,1,1,1));
  			add.addActionListener(new AddListener());
  			this.add(add);
  			delete = new JButton("Del");
  			delete.setMargin(new Insets(1,1,1,1));
  			delete.addActionListener(new DeleteListener());
  			this.add(delete);
  		  }
  
  	 }
  
  	 /**
  	  * Set the text displayed in the label.
  	  *
  	  * @param pLabel The new label text.
  	  */
  	 public void setLabel(String pLabel)
  	 {
  		  mLabel.setText(pLabel);
  	 }
  
  	 /**
  	  * Set the text displayed in the Text Field.
  	  *
  	  * @param pText The new text to display in the text field.
  	  */
  	 public void setText(String pText)
  	 {
  		  choiceList.setSelectedItem(pText);
  	 }
  
  	 /**
  	  * Returns the text in the Text Field.
  	  *
  	  * @return The text in the Text Field.
  	  */
  	 public String getText()
  	 {
  		  return (String)choiceList.getSelectedItem();
  	 }
  
  	 public Object[] getSelectedItems()
  	 {
  		return choiceList.getSelectedObjects();
  	 }
  
  	 public String[] getItems()
  	 {
  		String[] items = new String[choiceList.getItemCount()];
  		for (int i = 0; i < items.length; i++)
  		{
  			items[i] = (String)choiceList.getItemAt(i);
  		}
  		return items;
  	 }
  
  	 /**
  	  * Returns the text of the label.
  	  *
  	  * @return The text of the label.
  	  */
  	 public String getLabel()
  	 {
  		  return mLabel.getText();
  	 }
  
  	 /**
  	  * Adds a change listener, that will be notified when the text in the
  	  * text field is changed. The ChangeEvent that will be passed
  	  * to registered listeners will contain this object as the source, allowing
  	  * the new text to be extracted using the {@link #getText() getText} method.
  	  *
  	  * @param pChangeListener The listener to add
  	  */
  	 public void addChangeListener(ChangeListener pChangeListener)
  	 {
  		  mChangeListeners.add(pChangeListener);
  	 }
  
  	 /**
  	  * Removes a change listener.
  	  *
  	  * @param pChangeListener The change listener to remove.
  	  */
  	 public void removeChangeListener(ChangeListener pChangeListener)
  	 {
  		  mChangeListeners.remove(pChangeListener);
  	 }
  
  	 /**
  	  * Notify all registered change listeners that the
  	  * text in the text field has changed.
  	  */
  	 private void notifyChangeListeners()
  	 {
  		  ChangeEvent ce = new ChangeEvent(this);
  		  for (int index = 0; index < mChangeListeners.size(); index ++)
  		  {
  				((ChangeListener)mChangeListeners.get(index)).stateChanged(ce);
  		  }
  	 }
  
  	 private class AddListener implements ActionListener
  	 {
  
  		public void actionPerformed(ActionEvent e)
  		{
  			Object item = choiceList.getSelectedItem();
  			int index = choiceList.getSelectedIndex();
  			if(!item.equals(choiceList.getItemAt(index)))
  			{
  				choiceList.addItem(item);
  			}
  			choiceList.setSelectedItem(item);
  			notifyChangeListeners();
  		}
  	 }
  
  
  	 private class DeleteListener implements ActionListener
  	 {
  
  		public void actionPerformed(ActionEvent e)
  		{
  			if(choiceList.getItemCount() > 1)
  			{
  				choiceList.removeItemAt(choiceList.getSelectedIndex());
  				notifyChangeListeners();
  			}
  		}
  	 }
  }
  
  
  1.1                  jakarta-jmeter/src_1/org/apache/jmeter/gui/util/JLabeledField.java
  
  Index: JLabeledField.java
  ===================================================================
  package org.apache.jmeter.gui.util;
  
  import javax.swing.event.*;
  import java.util.*;
  
  /**
   * Title:
   * Description:
   * Copyright:    Copyright (c) 2000
   * Company:
   * @author
   * @version 1.0
   */
  
  public interface JLabeledField
  {
  
  	public String getText();
  	public void setText(String text);
  	public void setLabel(String pLabel);
  	public void addChangeListener(ChangeListener pChangeListener);
  	public List getComponentList();
  }
  
  
  1.1                  jakarta-jmeter/src_1/org/apache/jmeter/gui/util/JLabeledPasswordField.java
  
  Index: JLabeledPasswordField.java
  ===================================================================
  package org.apache.jmeter.gui.util;
  
  import javax.swing.JPasswordField;
  
  /**
   * Title:
   * Description:
   * Copyright:    Copyright (c) 2000
   * Company:
   * @author
   * @version 1.0
   */
  
  public class JLabeledPasswordField extends JLabeledTextField
  {
  
  	public JLabeledPasswordField()
  	{
  		super();
  	}
  
  	/**
  	  * Constructs a new component with the label displaying the
  	  * passed text.
  	  *
  	  * @param pLabel The text to in the label.
  	  */
  	 public JLabeledPasswordField(String pLabel)
  	 {
  		  super(pLabel);
  	 }
  
  	 protected void createTextField()
  	 {
  		mTextField = new JPasswordField(30);
  	 }
  }
  
  
  1.1                  jakarta-jmeter/src_1/org/apache/jmeter/gui/util/JLabeledTextArea.java
  
  Index: JLabeledTextArea.java
  ===================================================================
  package org.apache.jmeter.gui.util;
  
  import javax.swing.*;
  import java.util.*;
  import javax.swing.text.Document;
  import javax.swing.event.ChangeListener;
  import javax.swing.event.ChangeEvent;
  import java.awt.BorderLayout;
  import java.util.ArrayList;
  import java.awt.event.FocusListener;
  import java.awt.event.FocusEvent;
  
  /**
   * A Helper component that wraps a JTextField with a label into
   * a JPanel (this). This component also has an efficient event handling
   * mechanism for handling the text changing in the Text Field. The registered
   * change listeners are only called when the text has changed.
   *
   * @author S.Coleman
   */
  public class JLabeledTextArea extends JPanel implements JLabeledField
  {
  	 private JLabel mLabel = new JLabel();
  	 private JTextArea mTextArea = new JTextArea(4,40);
  	 private ArrayList mChangeListeners = new ArrayList(3);  // Maybe move to vector if MT problems occur
  
  	 /**
  	  * Default constructor, The label and the Text field are left empty.
  	  */
  	 public JLabeledTextArea()
  	 {
  		  super();
  		  init();
  	 }
  
  	 public List getComponentList()
  	 {
  		List comps = new LinkedList();
  		comps.add(mLabel);
  		comps.add(mTextArea);
  		return comps;
  	 }
  
  	 /**
  	  * Constructs a new component with the label displaying the
  	  * passed text.
  	  *
  	  * @param pLabel The text to in the label.
  	  */
  	 public JLabeledTextArea(String pLabel,Document docModel)
  	 {
  		  super();
  		  mLabel.setText(pLabel);
  		  if(docModel != null)
  		  {
  			setDocumentModel(docModel);
  		  }
  		  init();
  	 }
  
  	 public void setDocumentModel(Document docModel)
  	 {
  		mTextArea.setDocument(docModel);
  	 }
  
  	 /**
  	  * Initialises all of the components on this panel.
  	  */
  	 private void init()
  	 {
  		this.setLayout(new BorderLayout());
  		mTextArea.setLineWrap(true);
  		mTextArea.setWrapStyleWord(true);
  		  // Register the handler for focus listening. This handler will
  		  // only notify the registered when the text changes from when
  		  // the focus is gained to when it is lost.
  		  mTextArea.addFocusListener(new FocusListener(){
  
  				String oldValue = ""; // A temporary cache.
  
  				/**
  				 * Callback method when the focus to the Text Field component
  				 * is lost.
  				 *
  				 * @param pFocusEvent The focus event that occured.
  				 */
  				public void focusLost(FocusEvent pFocusEvent)
  				{
  					 // Compare if the value has changed, since we received focus.
  					 if (oldValue.equals(mTextArea.getText()) == false)
  					 {
  						  notifyChangeListeners();
  					 }
  				}
  
  				/**
  				 * Catch what the value was when focus was gained.
  				 */
  				public void focusGained(FocusEvent pFocusEvent)
  				{
  					 oldValue = mTextArea.getText();
  				}
  		  });
  		  mTextArea.setBorder(BorderFactory.createLoweredBevelBorder());
  
  		  // Add the sub components
  		  this.add(mLabel,BorderLayout.NORTH);
  		  this.add(mTextArea,BorderLayout.CENTER);
  	 }
  
  	 /**
  	  * Set the text displayed in the label.
  	  *
  	  * @param pLabel The new label text.
  	  */
  	 public void setLabel(String pLabel)
  	 {
  		  mLabel.setText(pLabel);
  	 }
  
  	 /**
  	  * Set the text displayed in the Text Field.
  	  *
  	  * @param pText The new text to display in the text field.
  	  */
  	 public void setText(String pText)
  	 {
  		  mTextArea.setText(pText);
  	 }
  
  	 /**
  	  * Returns the text in the Text Field.
  	  *
  	  * @return The text in the Text Field.
  	  */
  	 public String getText()
  	 {
  		  return mTextArea.getText();
  	 }
  
  	 /**
  	  * Returns the text of the label.
  	  *
  	  * @return The text of the label.
  	  */
  	 public String getLabel()
  	 {
  		  return mLabel.getText();
  	 }
  
  	 /**
  	  * Adds a change listener, that will be notified when the text in the
  	  * text field is changed. The ChangeEvent that will be passed
  	  * to registered listeners will contain this object as the source, allowing
  	  * the new text to be extracted using the {@link #getText() getText} method.
  	  *
  	  * @param pChangeListener The listener to add
  	  */
  	 public void addChangeListener(ChangeListener pChangeListener)
  	 {
  		  mChangeListeners.add(pChangeListener);
  	 }
  
  	 /**
  	  * Removes a change listener.
  	  *
  	  * @param pChangeListener The change listener to remove.
  	  */
  	 public void removeChangeListener(ChangeListener pChangeListener)
  	 {
  		  mChangeListeners.remove(pChangeListener);
  	 }
  
  	 /**
  	  * Notify all registered change listeners that the
  	  * text in the text field has changed.
  	  */
  	 private void notifyChangeListeners()
  	 {
  		  ChangeEvent ce = new ChangeEvent(this);
  		  for (int index = 0; index < mChangeListeners.size(); index ++)
  		  {
  				((ChangeListener)mChangeListeners.get(index)).stateChanged(ce);
  		  }
  	 }
  
  
  }
  
  
  1.6       +7 -3      jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/config/UrlConfig.java
  
  Index: UrlConfig.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/config/UrlConfig.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- UrlConfig.java	29 Apr 2002 17:08:10 -0000	1.5
  +++ UrlConfig.java	29 May 2002 22:41:53 -0000	1.6
  @@ -72,8 +72,8 @@
    *  the value you specify here.
    *
    *@author     Michael Stover
  - *@created    $Date: 2002/04/29 17:08:10 $
  - *@version    $Revision: 1.5 $
  + *@created    $Date: 2002/05/29 22:41:53 $
  + *@version    $Revision: 1.6 $
    */
   
   public class UrlConfig extends AbstractTestElement implements Serializable
  @@ -344,7 +344,11 @@
   			if(index > -1)
   			{
   				String name = args[i].substring(0,index);
  -				String value = args[i].substring(index + 1);
  +				String value = "";
  +				if((index+1) < args[i].length())
  +				{
  +					value = args[i].substring(index + 1);
  +				}
   
   				// In JDK 1.2, the decode() method has a throws clause:
   				// "throws Exception". In JDK 1.3, the method does not have
  
  
  
  1.1                  jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/modifier/URLRewritingModifier.java
  
  Index: URLRewritingModifier.java
  ===================================================================
  package org.apache.jmeter.protocol.http.modifier;
  
  import java.io.Serializable;
  
  import org.apache.jmeter.config.Argument;
  import org.apache.jmeter.config.ResponseBasedModifier;
  import org.apache.jmeter.protocol.http.sampler.HTTPSampler;
  import org.apache.jmeter.samplers.SampleResult;
  import org.apache.jmeter.samplers.Sampler;
  import org.apache.jmeter.testelement.AbstractTestElement;
  import org.apache.oro.text.regex.MalformedPatternException;
  import org.apache.oro.text.regex.MatchResult;
  import org.apache.oro.text.regex.Pattern;
  import org.apache.oro.text.regex.Perl5Compiler;
  import org.apache.oro.text.regex.Perl5Matcher;
  
  /**
   * @author mstover
   *
   * To change this generated comment edit the template variable "typecomment":
   * Window>Preferences>Java>Templates.
   */
  public class URLRewritingModifier
  	extends AbstractTestElement
  	implements Serializable, ResponseBasedModifier {
  		
  		private Pattern case1,case2,case3;
  		Perl5Compiler compiler = new Perl5Compiler();
  
  	private final static String ARGUMENT_NAME = "argument_name";
  	private final static String PATH_EXTENSION = "path_extension";
  	
  	/**
  	 * @see ResponseBasedModifier#modifyEntry(Sampler, SampleResult)
  	 */
  	public boolean modifyEntry(Sampler sampler, SampleResult responseText) {
  		String text = new String(responseText.getResponseData());
  		
  		Perl5Matcher matcher = new Perl5Matcher();
  		String value = "";
  		if(matcher.contains(text,case1))
  		{
  			MatchResult result = matcher.getMatch();
  			value = result.group(1);
  		}
  		else if(matcher.contains(text,case2))
  		{
  			MatchResult result = matcher.getMatch();
  			value = result.group(1);
  		}
  		else if(matcher.contains(text,case3))
  		{
  			MatchResult result = matcher.getMatch();
  			value = result.group(1);
  		}
  		modify((HTTPSampler)sampler,value);		
  		if(value.length() > 0)
  		{
  			return true;
  		}
  		return false;
  	}
  	
  	private void modify(HTTPSampler sampler,String value)
  	{
  		if(isPathExtension())
  		{
  			sampler.setPath(sampler.getPath()+";"+getArgumentName()+"="+value);
  		}
  		else
  		{
  			sampler.getArguments().addArgument(getArgumentName(),value);
  		}
  	}
  	
  	public void setArgumentName(String argName)
  	{
  		setProperty(ARGUMENT_NAME,argName);
  		try {
  			case1 = compiler.compile(argName+"=(.*)[& ]");
  			case2 = compiler.compile("[Nn][Aa][Mm][Ee]=\""+argName+"\"[^>]+[vV][Aa][Ll][Uu][Ee]=\"(.*)\"");
  			case3 = compiler.compile("[vV][Aa][Ll][Uu][Ee]=\"(.*)\"[^>]+[Nn][Aa][Mm][Ee]=\""+argName+"\"");
  		} catch(MalformedPatternException e) {
  			e.printStackTrace();
  		}
  	}
  	
  	public String getArgumentName()
  	{
  		return getPropertyAsString(ARGUMENT_NAME);
  	}
  	
  	public void setPathExtension(boolean pathExt)
  	{
  		setProperty(PATH_EXTENSION,new Boolean(pathExt));
  	}
  	
  	public boolean isPathExtension()
  	{
  		return getPropertyAsBoolean(PATH_EXTENSION);
  	}
  
  }
  
  
  
  1.1                  jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/modifier/gui/URLRewritingModifierGui.java
  
  Index: URLRewritingModifierGui.java
  ===================================================================
  package org.apache.jmeter.protocol.http.modifier.gui;
  
  import java.awt.Font;
  
  import javax.swing.JCheckBox;
  import javax.swing.JLabel;
  import javax.swing.JPanel;
  import javax.swing.border.Border;
  import javax.swing.border.EmptyBorder;
  import org.apache.jmeter.config.gui.AbstractResponseBasedModifierGui;
  import org.apache.jmeter.gui.util.JLabeledTextField;
  import org.apache.jmeter.gui.util.VerticalLayout;
  import org.apache.jmeter.protocol.http.modifier.URLRewritingModifier;
  import org.apache.jmeter.testelement.TestElement;
  import org.apache.jmeter.util.JMeterUtils;
  
  /**
   * @author mstover
   *
   * To change this generated comment edit the template variable "typecomment":
   * Window>Preferences>Java>Templates.
   */
  public class URLRewritingModifierGui extends AbstractResponseBasedModifierGui {
  	
  	JLabeledTextField argumentName;
  	JCheckBox pathExt;
  	private final static String title = JMeterUtils.getResString("http_url_rewriting_modifier_title");
  
  	/**
  	 * @see JMeterGUIComponent#getStaticLabel()
  	 */
  	public String getStaticLabel() {
  		return title;
  	}
  	
  	public URLRewritingModifierGui()
  	{
  		init();
  	}
  	
  	private void init()
  	{
  		this.setLayout(new VerticalLayout(5, VerticalLayout.LEFT, VerticalLayout.TOP));
  
  		// MAIN PANEL
  		JPanel mainPanel = new JPanel();
  		Border margin = new EmptyBorder(10, 10, 5, 10);
  		mainPanel.setBorder(margin);
  		mainPanel.setLayout(new VerticalLayout(5, VerticalLayout.LEFT));
  
  		// TITLE
  		JLabel panelTitleLabel = new JLabel(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());
  		argumentName = new JLabeledTextField(JMeterUtils.getResString("session_argument_name"));
  		mainPanel.add(argumentName);
  		pathExt = new JCheckBox(JMeterUtils.getResString("Path_Extension_choice"));
  		
  		mainPanel.add(pathExt);	
  
  		this.add(mainPanel);
  	}
  
  	/**
  	 * @see JMeterGUIComponent#createTestElement()
  	 */
  	public TestElement createTestElement() {
  		URLRewritingModifier modifier = new URLRewritingModifier();
  		this.configureTestElement(modifier);
  		modifier.setArgumentName(argumentName.getText());
  		modifier.setPathExtension(pathExt.isSelected());
  		return modifier;
  	}
  	
  	public void configure(TestElement el)
  	{
  		argumentName.setText(((URLRewritingModifier)el).getArgumentName());
  		pathExt.setSelected(((URLRewritingModifier)el).isPathExtension());
  		super.configure(el);
  	}
  
  }
  
  
  
  1.12      +5 -2      jakarta-jmeter/src_1/org/apache/jmeter/resources/messages.properties
  
  Index: messages.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/resources/messages.properties,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- messages.properties	23 May 2002 15:47:06 -0000	1.11
  +++ messages.properties	29 May 2002 22:41:53 -0000	1.12
  @@ -18,7 +18,7 @@
   menu_assertions=Assertions
   menu_listener=Listener
   menu_logic_controller=Logic Controller
  -menu_generative_controller=Generative Controller
  +menu_generative_controller=Sampler
   menu_config_element=Config Element
   menu_response_based_modifiers=Response Based Modifiers
   menu_modifiers=Modifiers
  @@ -229,4 +229,7 @@
   java_request_defaults=Java Request Defaults
   second=second
   graph_results_throughput=Throughput
  -minute=minute
  \ No newline at end of file
  +minute=minute
  +http_url_rewriting_modifier_title=HTTP URL-Rewriting Modifier
  +session_argument_name=Session Argument Name
  +path_extension_choice=Path Extension (use ";" as separator)
  \ No newline at end of file
  
  
  
  1.11      +4 -1      jakarta-jmeter/src_1/org/apache/jmeter/resources/messages_ja.properties
  
  Index: messages_ja.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/resources/messages_ja.properties,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- messages_ja.properties	23 May 2002 15:47:06 -0000	1.10
  +++ messages_ja.properties	29 May 2002 22:41:53 -0000	1.11
  @@ -223,4 +223,7 @@
   java_request_defaults=Java Request Defaults
   second=second
   graph_results_throughput=Throughput
  -minute=minute
  \ No newline at end of file
  +minute=minute
  +http_url_rewriting_modifier_title=HTTP URL-Rewriting Modifier
  +session_argument_name=Session Argument Name
  +path_extension_choice=Path Extension (use ";" as separator)
  \ No newline at end of file
  
  
  
  1.11      +12 -1     jakarta-jmeter/src_1/org/apache/jmeter/resources/messages_no.properties
  
  Index: messages_no.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/resources/messages_no.properties,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- messages_no.properties	23 May 2002 15:47:06 -0000	1.10
  +++ messages_no.properties	29 May 2002 22:41:53 -0000	1.11
  @@ -14,6 +14,14 @@
   analyze=Analyser data fil...
   option=Innstillinger
   appearance=Look and Feel
  +menu_timer=Timer
  +menu_assertions=Assertions
  +menu_listener=Listener
  +menu_logic_controller=Logic Controller
  +menu_generative_controller=Sampler
  +menu_config_element=Config Element
  +menu_response_based_modifiers=Response Based Modifiers
  +menu_modifiers=Modifiers
   sslManager=SSL manager
   pkcs12_desc=PKCS 12 Key (*.p12)
   ssl_error_title=Key Store Problem
  @@ -214,4 +222,7 @@
   java_request_defaults=Java Request Defaults
   second=second
   graph_results_throughput=Throughput
  -minute=minute
  \ No newline at end of file
  +minute=minute
  +http_url_rewriting_modifier_title=HTTP URL-Rewriting Modifier
  +session_argument_name=Session Argument Name
  +path_extension_choice=Path Extension (use ";" as separator)
  \ No newline at end of file
  
  
  
  1.10      +17 -6     jakarta-jmeter/src_1/org/apache/jmeter/testelement/AbstractTestElement.java
  
  Index: AbstractTestElement.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/testelement/AbstractTestElement.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- AbstractTestElement.java	28 May 2002 18:23:46 -0000	1.9
  +++ AbstractTestElement.java	29 May 2002 22:41:54 -0000	1.10
  @@ -9,7 +9,7 @@
    * Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
    *
    *@author    Michael Stover
  - *@created   $Date: 2002/05/28 18:23:46 $
  + *@created   $Date: 2002/05/29 22:41:54 $
    *@version   1.0
    ***************************************/
   
  @@ -304,7 +304,11 @@
   			}
   			if(value instanceof TestElement)
   			{
  -				if(getProperty(key) instanceof TestElement)
  +				if(getProperty(key) == null)
  +				{
  +					setProperty(key,value);
  +				}
  +				else if(getProperty(key) instanceof TestElement)
   				{
   					((TestElement)getProperty(key)).addTestElement((TestElement)value);
   				}
  @@ -313,12 +317,19 @@
   			{
   				Iterator iter2 = ((Collection)value).iterator();
   				Collection localCollection = (Collection)getProperty(key);
  -				while(iter2.hasNext())
  +				if(localCollection == null)
  +				{
  +					setProperty(key,localCollection);
  +				}
  +				else
   				{
  -					Object item = iter2.next();
  -					if(!localCollection.contains(item))
  +					while(iter2.hasNext())
   					{
  -						localCollection.add(item);
  +						Object item = iter2.next();
  +						if(!localCollection.contains(item))
  +						{
  +							localCollection.add(item);
  +						}
   					}
   				}
   			}
  
  
  
  1.5       +22 -12    jakarta-jmeter/src_1/org/apache/jmeter/util/JMeterUtils.java
  
  Index: JMeterUtils.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/util/JMeterUtils.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- JMeterUtils.java	23 May 2002 15:47:07 -0000	1.4
  +++ JMeterUtils.java	29 May 2002 22:41:54 -0000	1.5
  @@ -57,18 +57,28 @@
   
   package org.apache.jmeter.util;
   
  -import java.io.*;
  -import java.net.*;
  -import java.util.*;
  -import java.awt.*;
  -import java.awt.event.*;
  -import javax.swing.*;
  -import org.apache.jmeter.visualizers.*;
  -import org.xml.sax.*;
  -import org.apache.jmeter.gui.util.ComponentUtil;
  -import org.apache.jmeter.gui.GuiPackage;
  +import java.awt.Dimension;
  +import java.awt.event.ActionListener;
  +import java.io.BufferedReader;
  +import java.io.File;
  +import java.io.FileInputStream;
  +import java.io.IOException;
  +import java.io.InputStreamReader;
  +import java.util.Enumeration;
  +import java.util.Hashtable;
  +import java.util.MissingResourceException;
  +import java.util.Properties;
  +import java.util.ResourceBundle;
  +import java.util.StringTokenizer;
  +import java.util.Vector;
  +
  +import javax.swing.ImageIcon;
  +import javax.swing.JButton;
  +import javax.swing.JComboBox;
  +import javax.swing.JOptionPane;
   import javax.xml.parsers.SAXParserFactory;
  -import javax.xml.parsers.SAXParser;
  +import org.apache.jmeter.gui.GuiPackage;
  +import org.xml.sax.XMLReader;
   
   
   /**
  @@ -76,7 +86,7 @@
    *
    *@author     <a href="mailto://stefano@apache.org">Stefano Mazzocchi</a>
    *@created    June 28, 2001
  - *@version    $Revision: 1.4 $ $Date: 2002/05/23 15:47:07 $
  + *@version    $Revision: 1.5 $ $Date: 2002/05/29 22:41:54 $
    */
   
   public class JMeterUtils
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>