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/21 05:36:45 UTC

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

mstover1    02/05/20 20:36:44

  Modified:    src/org/apache/jmeter/engine RemoteJMeterEngine.java
                        RemoteJMeterEngineImpl.java
               src/org/apache/jmeter/reporters FileReporter.java
               src_1/org/apache/jmeter NewDriver.java
               src_1/org/apache/jmeter/config/gui AbstractConfigGui.java
                        ArgumentsPanel.java LoginConfigGui.java
               src_1/org/apache/jmeter/engine RemoteJMeterEngine.java
                        RemoteJMeterEngineImpl.java
                        StandardJMeterEngine.java
               src_1/org/apache/jmeter/gui MainFrame.java
               src_1/org/apache/jmeter/gui/action EditCommand.java
               src_1/org/apache/jmeter/gui/tree JMeterTreeListener.java
               src_1/org/apache/jmeter/gui/util JMeterMenuBar.java
               src_1/org/apache/jmeter/protocol/ftp/config/gui
                        FtpConfigGui.java
               src_1/org/apache/jmeter/protocol/http/config/gui
                        UrlConfigGui.java
               src_1/org/apache/jmeter/protocol/http/control
                        CookieManager.java
               src_1/org/apache/jmeter/protocol/http/gui AuthPanel.java
                        CookiePanel.java HeaderPanel.java
               src_1/org/apache/jmeter/protocol/jdbc/config/gui
                        DbConfigGui.java PoolConfigGui.java
                        SqlConfigGui.java
               src_1/org/apache/jmeter/reporters FileReporter.java
               src_1/org/apache/jmeter/resources messages.properties
                        messages_ja.properties messages_no.properties
               src_1/org/apache/jmeter/threads TestCompiler.java
                        ThreadGroup.java
               src_1/org/apache/jmeter/util SearchByClass.java
  Added:       src_1/org/apache/jmeter/protocol/java/config JavaConfig.java
               src_1/org/apache/jmeter/protocol/java/config/gui
                        JavaConfigGui.java
               src_1/org/apache/jmeter/protocol/java/control/gui
                        JavaTestSamplerGui.java
               src_1/org/apache/jmeter/protocol/java/sampler
                        JavaSampler.java JavaSamplerClient.java
               src_1/org/apache/jmeter/protocol/java/test SleepTest.java
  Log:
  Fixing numerous bugs and enhancements.  New Java protocol.
  
  Revision  Changes    Path
  1.6       +1 -1      jakarta-jmeter/src/org/apache/jmeter/engine/RemoteJMeterEngine.java
  
  Index: RemoteJMeterEngine.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/engine/RemoteJMeterEngine.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- RemoteJMeterEngine.java	26 Jul 2001 00:34:44 -0000	1.5
  +++ RemoteJMeterEngine.java	21 May 2002 03:36:43 -0000	1.6
  @@ -66,7 +66,7 @@
    ***********************************************************/
   public interface RemoteJMeterEngine extends Remote
   {
  -	void addThreadGroup(ThreadGroup tGroup) throws RemoteException;
  +	void addThreadGroup(org.apache.jmeter.threads.ThreadGroup tGroup) throws RemoteException;
   
   	void runTest() throws RemoteException;
   
  
  
  
  1.10      +1 -1      jakarta-jmeter/src/org/apache/jmeter/engine/RemoteJMeterEngineImpl.java
  
  Index: RemoteJMeterEngineImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/engine/RemoteJMeterEngineImpl.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- RemoteJMeterEngineImpl.java	28 Aug 2001 21:28:31 -0000	1.9
  +++ RemoteJMeterEngineImpl.java	21 May 2002 03:36:43 -0000	1.10
  @@ -98,7 +98,7 @@
   	 *      attribute
   	 *@exception  RemoteException  Description of Exception
   	 ***********************************************************/
  -	public void addThreadGroup(ThreadGroup tGroup) throws RemoteException
  +	public void addThreadGroup(org.apache.jmeter.threads.ThreadGroup tGroup) throws RemoteException
   	{
   		backingEngine.addThreadGroup(tGroup);
   	}
  
  
  
  1.7       +18 -4     jakarta-jmeter/src/org/apache/jmeter/reporters/FileReporter.java
  
  Index: FileReporter.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/reporters/FileReporter.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- FileReporter.java	4 Mar 2002 23:08:54 -0000	1.6
  +++ FileReporter.java	21 May 2002 03:36:43 -0000	1.7
  @@ -87,16 +87,30 @@
   		String line;
   		while ((line = reader.readLine()) != null) {
   			try {
  -				if (line.startsWith("#") || line.trim().length() == 0) continue;
  -				StringTokenizer st = new StringTokenizer(line, " ,");
  -				String key = (String) st.nextToken();
  -				Integer value = new Integer((String) st.nextToken());
  +				line.trim();
  +				if (line.startsWith("#") || line.length() == 0)
  +					continue;
  +				int splitter = line.lastIndexOf(' ');
  +				String key = line.substring(0, splitter);
  +				int len = line.length() - 1;
  +				Integer value = null;
  +				if (line.charAt(len) == ',') {
  +					value = new Integer(
  +						line.substring(splitter + 1, len));
  +				} else {
  +					value = new Integer(
  +						line.substring(splitter + 1));
  +				}
   				Vector v = getData(key);
   				if (v == null) {
   					v = new Vector();
   					this.data.put(key, v);
   				}
   				v.addElement(value);
  +			} catch (NumberFormatException nfe) {
  +				System.out.println(nfe.toString());
  +				System.out.println("This line could not be parsed: "
  +					+ line);
   			} catch (Exception e) {
   				System.out.println(e.toString());
   			}
  
  
  
  1.5       +1 -2      jakarta-jmeter/src_1/org/apache/jmeter/NewDriver.java
  
  Index: NewDriver.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/NewDriver.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- NewDriver.java	20 May 2002 13:05:50 -0000	1.4
  +++ NewDriver.java	21 May 2002 03:36:43 -0000	1.5
  @@ -90,13 +90,12 @@
   
   		JMeterTreeModel treeModel = new JMeterTreeModel();
   		JMeterTreeListener treeLis = new JMeterTreeListener(treeModel);
  +		treeLis.setActionHandler(ActionRouter.getInstance());
   		GuiPackage guiPack = GuiPackage.getInstance(treeLis, treeModel);
   		MainFrame main = new MainFrame(ActionRouter.getInstance(),
   				treeModel, treeLis);
  -		guiPack.setMainFrame(main);
   		main.setTitle("Apache JMeter");
   		main.setIconImage(JMeterUtils.getImage("jmeter.jpg").getImage());
  -		treeLis.setActionHandler(ActionRouter.getInstance());
   		ComponentUtil.centerComponentInWindow(main,80);
   		main.show();
   		ActionRouter.getInstance().actionPerformed(new ActionEvent(
  
  
  
  1.3       +33 -1     jakarta-jmeter/src_1/org/apache/jmeter/config/gui/AbstractConfigGui.java
  
  Index: AbstractConfigGui.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/config/gui/AbstractConfigGui.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- AbstractConfigGui.java	29 Apr 2002 17:08:07 -0000	1.2
  +++ AbstractConfigGui.java	21 May 2002 03:36:43 -0000	1.3
  @@ -65,12 +65,44 @@
    * Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
    *
    *@author    Michael Stover
  - *@created   $Date: 2002/04/29 17:08:07 $
  + *@created   $Date: 2002/05/21 03:36:43 $
    *@version   1.0
    ***************************************/
   
   public abstract class AbstractConfigGui extends JPanel implements JMeterGUIComponent
   {
  +	
  +	private NamePanel namePanel;
  +
  +  public AbstractConfigGui()
  +  {
  +	namePanel = new NamePanel();
  +		setName(getStaticLabel());
  +  }
  +
  +  public void setName(String name)
  +  {
  +	 namePanel.setName(name);
  +  }
  +  public String getName()
  +  {
  +	 return namePanel.getName();
  +  }
  +
  +  protected NamePanel getNamePanel()
  +  {
  +	return namePanel;
  +  }
  +  
  +    /****************************************
  +	 * !ToDo (Method description)
  +	 *
  +	 *@param element  !ToDo (Parameter description)
  +	 ***************************************/
  +	public void configure(TestElement element)
  +	{
  +		setName((String)element.getProperty(TestElement.NAME));
  +	}
   
   	/****************************************
   	 * !ToDo (Method description)
  
  
  
  1.5       +3 -25     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.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ArgumentsPanel.java	9 May 2002 01:58:37 -0000	1.4
  +++ ArgumentsPanel.java	21 May 2002 03:36:43 -0000	1.5
  @@ -93,7 +93,6 @@
   	{
   		tableModel = new InnerTableModel();
   		init();
  -		setName(getStaticLabel());
   	}
   
   	/****************************************
  @@ -107,27 +106,6 @@
   	}
   
   	/****************************************
  -	 * !ToDo (Method description)
  -	 *
  -	 *@param name  !ToDo (Parameter description)
  -	 ***************************************/
  -	public void setName(String name)
  -	{
  -		super.setName(name);
  -		this.name = name;
  -	}
  -
  -	/****************************************
  -	 * !ToDoo (Method description)
  -	 *
  -	 *@return   !ToDo (Return description)
  -	 ***************************************/
  -	public String getName()
  -	{
  -		return name;
  -	}
  -
  -	/****************************************
   	 * !ToDoo (Method description)
   	 *
   	 *@return   !ToDo (Return description)
  @@ -155,7 +133,7 @@
   	 ***************************************/
   	public void configure(TestElement el)
   	{
  -		setName((String)el.getProperty(TestElement.NAME));
  +		super.configure(el);
   		if(el instanceof Arguments)
   		{
   			tableModel.args = (Arguments)el;
  @@ -339,8 +317,8 @@
   	 * Inner class to handle table model calls
   	 *
   	 *@author    $Author: mstover1 $
  -	 *@created   $Date: 2002/05/09 01:58:37 $
  -	 *@version   $Revision: 1.4 $
  +	 *@created   $Date: 2002/05/21 03:36:43 $
  +	 *@version   $Revision: 1.5 $
   	 ***************************************/
   	private class InnerTableModel extends DefaultTableModel
   	{
  
  
  
  1.3       +2 -17     jakarta-jmeter/src_1/org/apache/jmeter/config/gui/LoginConfigGui.java
  
  Index: LoginConfigGui.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/config/gui/LoginConfigGui.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- LoginConfigGui.java	29 Apr 2002 17:08:07 -0000	1.2
  +++ LoginConfigGui.java	21 May 2002 03:36:43 -0000	1.3
  @@ -74,7 +74,6 @@
   {
   	JTextField username = new JTextField(15);
   	JTextField password = new JPasswordField(15);
  -	NamePanel namePanel;
   	private boolean displayName = true;
   
   	/****************************************
  @@ -93,23 +92,9 @@
   	public LoginConfigGui(boolean displayName)
   	{
   		this.displayName = displayName;
  -		namePanel = new NamePanel();
  -		setName(getStaticLabel());
   		init();
   	}
   
  -
  -	public void setName(String name)
  -	{
  -		super.setName(name);
  -		namePanel.setName(name);
  -	}
  -
  -	public String getName()
  -	{
  -		return namePanel.getName();
  -	}
  -
   	public String getStaticLabel()
   	{
   		return JMeterUtils.getResString("Login Config Element");
  @@ -117,7 +102,7 @@
   
   	public void configure(TestElement element)
   	{
  -		setName((String)element.getProperty(TestElement.NAME));
  +		super.configure(element);
   		username.setText((String)element.getProperty(ConfigTestElement.USERNAME));
   		password.setText((String)element.getProperty(ConfigTestElement.PASSWORD));
   	}
  @@ -137,7 +122,7 @@
   
   		if(displayName)
   		{
  -			this.add(namePanel);
  +			this.add(getNamePanel());
   		}
   
   		this.add(createUsernamePanel());
  
  
  
  1.3       +3 -3      jakarta-jmeter/src_1/org/apache/jmeter/engine/RemoteJMeterEngine.java
  
  Index: RemoteJMeterEngine.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/engine/RemoteJMeterEngine.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- RemoteJMeterEngine.java	29 Apr 2002 17:08:07 -0000	1.2
  +++ RemoteJMeterEngine.java	21 May 2002 03:36:43 -0000	1.3
  @@ -54,9 +54,9 @@
    */
   package org.apache.jmeter.engine;
   
  -import java.rmi.*;
  -import org.apache.jmeter.samplers.RemoteSampleListener;
  -import org.apache.jmeter.threads.ThreadGroup;
  +import java.rmi.Remote;
  +import java.rmi.RemoteException;
  +
   import org.apache.jmeter.util.ListedHashTree;
   
   /************************************************************
  
  
  
  1.3       +3 -5      jakarta-jmeter/src_1/org/apache/jmeter/engine/RemoteJMeterEngineImpl.java
  
  Index: RemoteJMeterEngineImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/engine/RemoteJMeterEngineImpl.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- RemoteJMeterEngineImpl.java	29 Apr 2002 17:08:07 -0000	1.2
  +++ RemoteJMeterEngineImpl.java	21 May 2002 03:36:43 -0000	1.3
  @@ -53,13 +53,11 @@
    * <http://www.apache.org/>.
    */
   package org.apache.jmeter.engine;
  -import java.io.*;
  -import java.rmi.*;
  +import java.rmi.Naming;
  +import java.rmi.RemoteException;
   
  -import java.util.*;
  -import org.apache.jmeter.threads.JMeterThread;
  -import org.apache.jmeter.threads.ThreadGroup;
   import org.apache.jmeter.util.ListedHashTree;
  +
   
   /************************************************************
    *  Description of the Class
  
  
  
  1.5       +2 -3      jakarta-jmeter/src_1/org/apache/jmeter/engine/StandardJMeterEngine.java
  
  Index: StandardJMeterEngine.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/engine/StandardJMeterEngine.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- StandardJMeterEngine.java	2 May 2002 22:54:58 -0000	1.4
  +++ StandardJMeterEngine.java	21 May 2002 03:36:43 -0000	1.5
  @@ -69,8 +69,8 @@
    *  !ToDo (Class description)
    *
    *@author     $Author: mstover1 $
  - *@created    $Date: 2002/05/02 22:54:58 $
  - *@version    $Revision: 1.4 $
  + *@created    $Date: 2002/05/21 03:36:43 $
  + *@version    $Revision: 1.5 $
    ***********************************************************/
   public class StandardJMeterEngine implements JMeterEngine,JMeterThreadMonitor
   {
  @@ -114,7 +114,6 @@
   		// and the listeners, and the timer
   		JMeterThread[] threads;
   		Iterator iter = searcher.getSearchResults().iterator();
  -		System.out.println("found " + searcher.getSearchResults().size() + " threadgroups");
   		notifyTestListenersOfStart();
   		while(iter.hasNext())
   		{
  
  
  
  1.6       +6 -4      jakarta-jmeter/src_1/org/apache/jmeter/gui/MainFrame.java
  
  Index: MainFrame.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/gui/MainFrame.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- MainFrame.java	20 May 2002 13:05:51 -0000	1.5
  +++ MainFrame.java	21 May 2002 03:36:43 -0000	1.6
  @@ -67,7 +67,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/21 03:36:43 $
    *@version   1.0
    ***************************************/
   
  @@ -104,6 +104,7 @@
   		this.treeListener = treeListener;
   		this.actionHandler = actionHandler;
   		this.treeModel = treeModel;
  +		GuiPackage.getInstance().setMainFrame(this);
   		init();
   		this.setDefaultCloseOperation(this.DO_NOTHING_ON_CLOSE);
   	}
  @@ -269,10 +270,11 @@
   	{
   		menuBar = new JMeterMenuBar();
   		createToolBar();
  -		createTreePanel();
   		createMainPanel();
  +		createTreePanel();
   		addThemAll();
   		addWindowListener(new WindowHappenings());
  +		tree.setSelectionRow(1);
   	}
   
   	private TreeCellRenderer getCellRenderer()
  @@ -361,8 +363,8 @@
   	 * !ToDo (Class description)
   	 *
   	 *@author    $Author: mstover1 $
  -	 *@created   $Date: 2002/05/20 13:05:51 $
  -	 *@version   $Revision: 1.5 $
  +	 *@created   $Date: 2002/05/21 03:36:43 $
  +	 *@version   $Revision: 1.6 $
   	 ***************************************/
   	private class WindowHappenings extends WindowAdapter
   	{
  
  
  
  1.5       +13 -1     jakarta-jmeter/src_1/org/apache/jmeter/gui/action/EditCommand.java
  
  Index: EditCommand.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/gui/action/EditCommand.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- EditCommand.java	2 May 2002 22:54:58 -0000	1.4
  +++ EditCommand.java	21 May 2002 03:36:43 -0000	1.5
  @@ -8,7 +8,7 @@
    * Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
    *
    *@author    Michael Stover
  - *@created   $Date: 2002/05/02 22:54:58 $
  + *@created   $Date: 2002/05/21 03:36:43 $
    *@version   1.0
    ***************************************/
   
  @@ -36,6 +36,18 @@
   		GuiPackage guiPackage = GuiPackage.getInstance();
   		guiPackage.getMainFrame().setMainPanel((javax.swing.JComponent)
   					guiPackage.getTreeListener().getCurrentNode().getUserObject());
  +		guiPackage.getMainFrame().setEditMenu(
  +				((JMeterGUIComponent)guiPackage.getTreeListener().getCurrentNode().getUserObject()).createPopupMenu());
  +		if(!(guiPackage.getTreeListener().getCurrentNode().getUserObject() instanceof NamePanel))
  +		{
  +			guiPackage.getMainFrame().setFileLoadEnabled(true);
  +			guiPackage.getMainFrame().setFileSaveEnabled(true);
  +		}
  +		else
  +		{
  +			guiPackage.getMainFrame().setFileLoadEnabled(false);
  +			guiPackage.getMainFrame().setFileSaveEnabled(false);
  +		}			
   	}
   
   	/****************************************
  
  
  
  1.4       +1 -2      jakarta-jmeter/src_1/org/apache/jmeter/gui/tree/JMeterTreeListener.java
  
  Index: JMeterTreeListener.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/gui/tree/JMeterTreeListener.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- JMeterTreeListener.java	20 May 2002 13:05:51 -0000	1.3
  +++ JMeterTreeListener.java	21 May 2002 03:36:43 -0000	1.4
  @@ -297,10 +297,9 @@
   		{
   			currentPath = tree.getPathForLocation(e.getX(), e.getY());
   		}
  -		actionHandler.actionPerformed(new ActionEvent(this, e.getID(), JMeterUtils.getResString("edit")));
   		if(selRow != -1)
   		{
  -			updateMainMenu(((JMeterGUIComponent)getCurrentNode().getUserObject()).createPopupMenu());
  +			//updateMainMenu(((JMeterGUIComponent)getCurrentNode().getUserObject()).createPopupMenu());
   			if(isRightClick(e))
   			{
   				if(tree.getSelectionCount() < 2)
  
  
  
  1.3       +30 -14    jakarta-jmeter/src_1/org/apache/jmeter/gui/util/JMeterMenuBar.java
  
  Index: JMeterMenuBar.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/gui/util/JMeterMenuBar.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- JMeterMenuBar.java	29 Apr 2002 17:08:09 -0000	1.2
  +++ JMeterMenuBar.java	21 May 2002 03:36:43 -0000	1.3
  @@ -1,8 +1,18 @@
   package org.apache.jmeter.gui.util;
  -import java.awt.event.*;
  -import java.util.*;
  -import javax.swing.*;
  -import org.apache.jmeter.gui.action.*;
  +import java.awt.Component;
  +import java.awt.event.KeyEvent;
  +import java.util.Collection;
  +import java.util.Iterator;
  +import java.util.LinkedList;
  +
  +import javax.swing.JMenu;
  +import javax.swing.JMenuBar;
  +import javax.swing.JMenuItem;
  +import javax.swing.JPopupMenu;
  +import javax.swing.KeyStroke;
  +import javax.swing.MenuElement;
  +import javax.swing.UIManager;
  +import org.apache.jmeter.gui.action.ActionRouter;
   import org.apache.jmeter.util.JMeterUtils;
   import org.apache.jmeter.util.SSLManager;
   
  @@ -11,7 +21,7 @@
    * Apache Foundation
    *
    *@author    Michael Stover
  - *@created   $Date: 2002/04/29 17:08:09 $
  + *@created   $Date: 2002/05/21 03:36:43 $
    *@version   1.0
    ***************************************/
   
  @@ -125,8 +135,20 @@
   
   	public void setEditMenu(JPopupMenu menu)
   	{
  -		editMenu.removeAll();
  -		editMenu.add(menu);
  +		if(menu != null)
  +		{
  +			editMenu.removeAll();
  +			Component[] comps = menu.getComponents();
  +			for(int i = 0;i < comps.length;i++)
  +			{
  +				editMenu.add(comps[i]);
  +			}
  +			editMenu.setEnabled(true);
  +		}
  +		else
  +		{
  +			editMenu.setEnabled(false);
  +		}
   	}
   
   	/****************************************
  @@ -235,13 +257,7 @@
   		fileMenu.add(file_exit);
   
   		// EDIT MENU
  -		editMenu = new JMenu(JMeterUtils.getResString("menu_edit"));
  -		editMenu.setMnemonic('E');
  -		edit_remove = new JMenuItem(JMeterUtils.getResString("remove"));
  -		edit_remove.setMnemonic('R');
  -		edit_remove.addActionListener(ActionRouter.getInstance());
  -		edit_remove.setEnabled(false);
  -		editMenu.add(edit_remove);
  +		editMenu = new JMenu(JMeterUtils.getResString("edit"));
   		// From the Java Look and Feel Guidelines: If all items in a menu
   		// are disabled, then disable the menu.  Makes sense.
   		editMenu.setEnabled(false);
  
  
  
  1.3       +3 -18     jakarta-jmeter/src_1/org/apache/jmeter/protocol/ftp/config/gui/FtpConfigGui.java
  
  Index: FtpConfigGui.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/ftp/config/gui/FtpConfigGui.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FtpConfigGui.java	29 Apr 2002 17:08:10 -0000	1.2
  +++ FtpConfigGui.java	21 May 2002 03:36:43 -0000	1.3
  @@ -70,7 +70,7 @@
    * Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
    *
    *@author    Michael Stover
  - *@created   $Date: 2002/04/29 17:08:10 $
  + *@created   $Date: 2002/05/21 03:36:43 $
    *@version   1.0
    ***************************************/
   
  @@ -84,8 +84,6 @@
   
   	private boolean displayName = true;
   
  -	private NamePanel namePanel;
  -
   	/****************************************
   	 * !ToDo (Constructor description)
   	 ***************************************/
  @@ -99,20 +97,9 @@
   		return JMeterUtils.getResString("ftp_sample_title");
   	}
   
  -	public void setName(String name)
  -	{
  -		super.setName(name);
  -		namePanel.setName(name);
  -	}
  -
  -	public String getName()
  -	{
  -		return namePanel.getName();
  -	}
  -
   	public void configure(TestElement element)
   	{
  -		setName((String)element.getProperty(TestElement.NAME));
  +		super.configure(element);
   		server.setText((String)element.getProperty(FTPSampler.SERVER));
   		filename.setText((String)element.getProperty(FTPSampler.FILENAME));
   	}
  @@ -134,8 +121,6 @@
   	public FtpConfigGui(boolean displayName)
   	{
   		this.displayName = displayName;
  -		namePanel = new NamePanel();
  -		setName(getStaticLabel());
   		init();
   	}
   
  @@ -181,7 +166,7 @@
   			mainPanel.add(panelTitleLabel);
   
   			// NAME
  -			mainPanel.add(namePanel);
  +			mainPanel.add(getNamePanel());
   
   			// LOOP
   			mainPanel.add(createServerPanel());
  
  
  
  1.5       +5 -38     jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/config/gui/UrlConfigGui.java
  
  Index: UrlConfigGui.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/config/gui/UrlConfigGui.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- UrlConfigGui.java	29 Apr 2002 17:08:10 -0000	1.4
  +++ UrlConfigGui.java	21 May 2002 03:36:43 -0000	1.5
  @@ -73,7 +73,7 @@
    * Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
    *
    *@author    Michael Stover
  - *@created   $Date: 2002/04/29 17:08:10 $
  + *@created   $Date: 2002/05/21 03:36:43 $
    *@version   1.0
    ***************************************/
   
  @@ -88,10 +88,6 @@
   	 * !ToDo (Field description)
   	 ***************************************/
   	protected ArgumentsPanel argsPanel;
  -	/****************************************
  -	 * !ToDo (Field description)
  -	 ***************************************/
  -	protected NamePanel namePanel;
   	private static String DOMAIN = "domain";
   	private static String PORT = "port";
   	private static String PATH = "path";
  @@ -125,34 +121,12 @@
   	 ***************************************/
   	public UrlConfigGui(boolean display)
   	{
  -		namePanel = new NamePanel();
   		displayName = display;
   		init();
   		setName(getStaticLabel());
   	}
   
   	/****************************************
  -	 * !ToDo (Method description)
  -	 *
  -	 *@param name  !ToDo (Parameter description)
  -	 ***************************************/
  -	public void setName(String name)
  -	{
  -		super.setName(name);
  -		namePanel.setName(name);
  -	}
  -
  -	/****************************************
  -	 * !ToDoo (Method description)
  -	 *
  -	 *@return   !ToDo (Return description)
  -	 ***************************************/
  -	public String getName()
  -	{
  -		return namePanel.getName();
  -	}
  -
  -	/****************************************
   	 * !ToDoo (Method description)
   	 *
   	 *@return   !ToDo (Return description)
  @@ -228,16 +202,6 @@
   	}
   
   	/****************************************
  -	 * !ToDoo (Method description)
  -	 *
  -	 *@return   !ToDo (Return description)
  -	 ***************************************/
  -	protected NamePanel getNamePanel()
  -	{
  -		return namePanel;
  -	}
  -
  -	/****************************************
   	 * !ToDo (Method description)
   	 ***************************************/
   	protected void init()
  @@ -274,7 +238,10 @@
   			mainPanel.add(panelTitleLabel);
   
   			// NAME
  -			mainPanel.add(getNamePanel());
  +			if(displayName)
  +			{
  +				mainPanel.add(getNamePanel());
  +			}
   
   			mainPanel.add(webServerPanel);
   			mainPanel.add(webRequestPanel);
  
  
  
  1.4       +20 -7     jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/control/CookieManager.java
  
  Index: CookieManager.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/control/CookieManager.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- CookieManager.java	29 Apr 2002 17:08:10 -0000	1.3
  +++ CookieManager.java	21 May 2002 03:36:43 -0000	1.4
  @@ -56,26 +56,39 @@
   package org.apache.jmeter.protocol.http.control;
   
   
  -import java.io.*;
  +import java.io.BufferedReader;
  +import java.io.File;
  +import java.io.FileReader;
  +import java.io.FileWriter;
  +import java.io.IOException;
  +import java.io.PrintWriter;
  +import java.io.Serializable;
   import java.net.URL;
  -import java.text.DateFormat;
   import java.text.ParseException;
   import java.text.SimpleDateFormat;
  -import java.util.*;
  +import java.util.ArrayList;
  +import java.util.Date;
  +import java.util.Enumeration;
  +import java.util.Iterator;
  +import java.util.LinkedList;
  +import java.util.List;
  +import java.util.StringTokenizer;
  +import java.util.TimeZone;
  +import java.util.Vector;
   
  -import org.apache.jmeter.config.*;
  -import org.apache.jmeter.util.JMeterUtils;
   import org.apache.jmeter.testelement.AbstractTestElement;
  +import org.apache.jmeter.testelement.PerThreadClonable;
  +import org.apache.jmeter.util.JMeterUtils;
   
   /**
    * This class provides an interface to the netscape cookies file to
    * pass cookies along with a request.
    *
    * @author  <a href="mailto:sdowd@arcmail.com">Sean Dowd</a>
  - * @version $Revision: 1.3 $ $Date: 2002/04/29 17:08:10 $
  + * @version $Revision: 1.4 $ $Date: 2002/05/21 03:36:43 $
    */
   public class CookieManager extends AbstractTestElement implements
  -		  Serializable
  +		  Serializable,PerThreadClonable
   {
   
   	 public static final String COOKIES = "CookieManager.cookies";
  
  
  
  1.5       +8 -32     jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/gui/AuthPanel.java
  
  Index: AuthPanel.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/gui/AuthPanel.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- AuthPanel.java	2 May 2002 22:54:58 -0000	1.4
  +++ AuthPanel.java	21 May 2002 03:36:44 -0000	1.5
  @@ -73,8 +73,8 @@
    * user selects.
    *
    *@author    $Author: mstover1 $
  - *@created   $Date: 2002/05/02 22:54:58 $
  - *@version   $Revision: 1.4 $
  + *@created   $Date: 2002/05/21 03:36:44 $
  + *@version   $Revision: 1.5 $
    ***************************************/
   public class AuthPanel extends AbstractConfigGui implements ActionListener
   {
  @@ -90,7 +90,6 @@
   	JButton loadButton;
   	JButton saveButton;
   	JPanel authManagerPanel;
  -	private NamePanel namePanel;
   
   	/****************************************
   	 * Default Constructor
  @@ -99,7 +98,6 @@
   	{
   		tableModel = new InnerTableModel();
   		init();
  -		setName(getStaticLabel());
   	}
   
   	/****************************************
  @@ -121,7 +119,7 @@
   	 ***************************************/
   	public void configure(TestElement el)
   	{
  -		setName((String)el.getProperty(TestElement.NAME));
  +		super.configure(el);
   		tableModel.manager = (AuthManager)el;
   	}
   
  @@ -136,27 +134,6 @@
   	}
   
   	/****************************************
  -	 * !ToDo (Method description)
  -	 *
  -	 *@param name  !ToDo (Parameter description)
  -	 ***************************************/
  -	public void setName(String name)
  -	{
  -		super.setName(name);
  -		namePanel.setName(name);
  -	}
  -
  -	/****************************************
  -	 * !ToDoo (Method description)
  -	 *
  -	 *@return   !ToDo (Return description)
  -	 ***************************************/
  -	public String getName()
  -	{
  -		return namePanel.getName();
  -	}
  -
  -	/****************************************
   	 * Shows the main authentication panel for this object
   	 ***************************************/
   	public void init()
  @@ -178,8 +155,7 @@
   		panelTitleLabel.setFont(new Font(curFont.getFontName(), curFont.getStyle(), curFontSize));
   		authManagerPanel.add(panelTitleLabel);
   
  -		namePanel = new NamePanel();
  -		authManagerPanel.add(namePanel);
  +		authManagerPanel.add(getNamePanel());
   
   		JPanel authTablePanel = createAuthTablePanel();
   		authManagerPanel.add(authTablePanel);
  @@ -399,8 +375,8 @@
   	 * !ToDo (Class description)
   	 *
   	 *@author    $Author: mstover1 $
  -	 *@created   $Date: 2002/05/02 22:54:58 $
  -	 *@version   $Revision: 1.4 $
  +	 *@created   $Date: 2002/05/21 03:36:44 $
  +	 *@version   $Revision: 1.5 $
   	 ***************************************/
   	private class InnerTableModel extends AbstractTableModel
   	{
  @@ -553,8 +529,8 @@
   	 * !ToDo (Class description)
   	 *
   	 *@author    $Author: mstover1 $
  -	 *@created   $Date: 2002/05/02 22:54:58 $
  -	 *@version   $Revision: 1.4 $
  +	 *@created   $Date: 2002/05/21 03:36:44 $
  +	 *@version   $Revision: 1.5 $
   	 ***************************************/
   	private class PasswordCellRenderer extends JPasswordField implements TableCellRenderer
   	{
  
  
  
  1.5       +5 -29     jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/gui/CookiePanel.java
  
  Index: CookiePanel.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/gui/CookiePanel.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- CookiePanel.java	2 May 2002 22:54:59 -0000	1.4
  +++ CookiePanel.java	21 May 2002 03:36:44 -0000	1.5
  @@ -73,8 +73,8 @@
    * for this service.
    *
    *@author    $Author: mstover1 $
  - *@created   $Date: 2002/05/02 22:54:59 $
  - *@version   $Revision: 1.4 $
  + *@created   $Date: 2002/05/21 03:36:44 $
  + *@version   $Revision: 1.5 $
    ***************************************/
   public class CookiePanel extends AbstractConfigGui implements ActionListener
   {
  @@ -88,7 +88,6 @@
   	JPanel cookieManagerPanel;
   	JTextPane nicknameTextPane;
   	JTextArea nicknameText;
  -	NamePanel namePanel;
   
   	/****************************************
   	 * Default constructor
  @@ -97,7 +96,6 @@
   	{
   		tableModel = new InnerTableModel();
   		init();
  -		setName(getStaticLabel());
   	}
   
   	/****************************************
  @@ -248,32 +246,11 @@
   	 ***************************************/
   	public void configure(TestElement el)
   	{
  -		setName((String)el.getProperty(TestElement.NAME));
  +		super.configure(el);
   		tableModel.manager = (CookieManager)el;
   	}
   
   	/****************************************
  -	 * !ToDo (Method description)
  -	 *
  -	 *@param name  !ToDo (Parameter description)
  -	 ***************************************/
  -	public void setName(String name)
  -	{
  -		super.setName(name);
  -		namePanel.setName(name);
  -	}
  -
  -	/****************************************
  -	 * !ToDoo (Method description)
  -	 *
  -	 *@return   !ToDo (Return description)
  -	 ***************************************/
  -	public String getName()
  -	{
  -		return namePanel.getName();
  -	}
  -
  -	/****************************************
   	 * Shows the main cookie configuration panel
   	 ***************************************/
   	public void init()
  @@ -295,8 +272,7 @@
   		panelTitleLabel.setFont(new Font(curFont.getFontName(), curFont.getStyle(), curFontSize));
   		cookieManagerPanel.add(panelTitleLabel);
   
  -		namePanel = new NamePanel();
  -		cookieManagerPanel.add(namePanel);
  +		cookieManagerPanel.add(getNamePanel());
   
   		JPanel cookieTablePanel = createCookieTablePanel();
   		cookieManagerPanel.add(cookieTablePanel);
  @@ -394,7 +370,7 @@
   	 *
   	 *@author    mike
   	 *@created   July 14, 2001
  -	 *@version   $Revision: 1.4 $
  +	 *@version   $Revision: 1.5 $
   	 ***************************************/
   	public class InnerTableModel extends AbstractTableModel
   	{
  
  
  
  1.5       +8 -32     jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/gui/HeaderPanel.java
  
  Index: HeaderPanel.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/gui/HeaderPanel.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- HeaderPanel.java	2 May 2002 22:54:59 -0000	1.4
  +++ HeaderPanel.java	21 May 2002 03:36:44 -0000	1.5
  @@ -72,8 +72,8 @@
    * parameters for this service.
    *
    *@author    $Author: mstover1 $
  - *@created   $Date: 2002/05/02 22:54:59 $
  - *@version   $Revision: 1.4 $
  + *@created   $Date: 2002/05/21 03:36:44 $
  + *@version   $Revision: 1.5 $
    ***************************************/
   public class HeaderPanel extends AbstractConfigGui implements ActionListener
   {
  @@ -84,7 +84,6 @@
   	 * A table to show the authentication information
   	 ***************************************/
   	JTable headerTable;
  -	NamePanel namePanel;
   
   	JButton addButton;
   	JButton deleteButton;
  @@ -99,7 +98,6 @@
   	{
   		tableModel = new InnerTableModel();
   		init();
  -		setName(getStaticLabel());
   	}
   
   	/****************************************
  @@ -121,7 +119,7 @@
   	 ***************************************/
   	public void configure(TestElement el)
   	{
  -		setName((String)el.getProperty(TestElement.NAME));
  +		super.configure(el);
   		tableModel.manager = (HeaderManager)el;
   	}
   
  @@ -136,27 +134,6 @@
   	}
   
   	/****************************************
  -	 * !ToDo (Method description)
  -	 *
  -	 *@param name  !ToDo (Parameter description)
  -	 ***************************************/
  -	public void setName(String name)
  -	{
  -		super.setName(name);
  -		namePanel.setName(name);
  -	}
  -
  -	/****************************************
  -	 * !ToDoo (Method description)
  -	 *
  -	 *@return   !ToDo (Return description)
  -	 ***************************************/
  -	public String getName()
  -	{
  -		return namePanel.getName();
  -	}
  -
  -	/****************************************
   	 * Gets a HeaderManager to manage the file that is currently selected. Null is
   	 * returned if no file is currently selected. Null will also be returned if
   	 * there is a problem reading the file while getting the HeaderManager.
  @@ -187,8 +164,7 @@
   		panelTitleLabel.setFont(new Font(curFont.getFontName(), curFont.getStyle(), curFontSize));
   		headerManagerPanel.add(panelTitleLabel);
   
  -		namePanel = new NamePanel();
  -		headerManagerPanel.add(namePanel);
  +		headerManagerPanel.add(getNamePanel());
   
   		JPanel headerTablePanel = createHeaderTablePanel();
   		headerManagerPanel.add(headerTablePanel);
  @@ -404,8 +380,8 @@
   	 * Updates a header record
   	 *
   	 *@author    $Author: mstover1 $
  -	 *@created   $Date: 2002/05/02 22:54:59 $
  -	 *@version   $Revision: 1.4 $
  +	 *@created   $Date: 2002/05/21 03:36:44 $
  +	 *@version   $Revision: 1.5 $
   	 ***************************************/
   	class HeaderUpdater implements ActionListener
   	{
  @@ -561,8 +537,8 @@
   	 * !ToDo (Class description)
   	 *
   	 *@author    $Author: mstover1 $
  -	 *@created   $Date: 2002/05/02 22:54:59 $
  -	 *@version   $Revision: 1.4 $
  +	 *@created   $Date: 2002/05/21 03:36:44 $
  +	 *@version   $Revision: 1.5 $
   	 ***************************************/
   	private class InnerTableModel extends AbstractTableModel
   	{
  
  
  
  1.1                  jakarta-jmeter/src_1/org/apache/jmeter/protocol/java/config/JavaConfig.java
  
  Index: JavaConfig.java
  ===================================================================
  /*
   * ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2002 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   * notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   * notice, this list of conditions and the following disclaimer in
   * the documentation and/or other materials provided with the
   * distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   * if any, must include the following acknowledgment:
   * "This product includes software developed by the
   * Apache Software Foundation (http://www.apache.org/)."
   * Alternately, this acknowledgment may appear in the software itself,
   * if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   * "Apache JMeter" must not be used to endorse or promote products
   * derived from this software without prior written permission. For
   * written permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   * "Apache JMeter", nor may "Apache" appear in their name, without
   * prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  package org.apache.jmeter.protocol.java.config;
  
  import java.io.Serializable;
  
  import org.apache.jmeter.config.Arguments;
  import org.apache.jmeter.protocol.java.sampler.JavaSampler;
  import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient;
  import org.apache.jmeter.testelement.AbstractTestElement;
  import org.apache.log4j.Category;
  
  
  /**
   *
   * The <code>JavaConfig</code> class contains the configuration data
   * necessary for the Java protocol.
   *
   *@author     Brad Kiewel
   *@created    $Date: 2002/05/21 03:36:44 $
   *@version    $Revision: 1.1 $
   */
  
  public class JavaConfig extends AbstractTestElement implements Serializable
  {
  
  	/** Logging  */
  	private static Category cat = Category.getInstance(JavaConfig.class);
  	
  	private transient JavaSamplerClient javaClient = null;
  
  	/**
  	 *  Constructor for the JavaConfig object
  	 */
  	public JavaConfig()
  	{
  		setArguments(new Arguments());
  	}
  
  	/**
  	 *  Sets the Classname attribute of the JavaConfig object
  	 *
  	 *@param  classname  The new Classname value
  	 */
  	public void setClassname(String classname)
  	{
  		setProperty(JavaSampler.CLASSNAME, classname);
  	}
  
  
  
  	/**
  	 *  Gets the Classname attribute of the JavaConfig object
  	 *
  	 *@return    The Classname value
  	 */
  	public String getClassname()
  	{
  		return (String) getPropertyAsString(JavaSampler.CLASSNAME);
  	}
  
  	public void addArgument(String name,String value)
  	{
  		Arguments args = this.getArguments();
  		args.addArgument(name,value);
  	}
  
  	public void removeArguments()
  	{
  		this.setProperty(JavaSampler.ARGUMENTS,new Arguments());
  	}
  	
  	public void setArguments(Arguments args)
  	{
  		setProperty(JavaSampler.ARGUMENTS,args);
  	}
  
  	/**
  	 *  Gets the Arguments attribute of the JavaConfig object
  	 *
  	 *@return    The Arguments value
  	 */
  	public Arguments getArguments()
  	{
  		return (Arguments) getProperty(JavaSampler.ARGUMENTS);
  	}
  }
  
  
  
  
  
  1.1                  jakarta-jmeter/src_1/org/apache/jmeter/protocol/java/config/gui/JavaConfigGui.java
  
  Index: JavaConfigGui.java
  ===================================================================
  /*
   * ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2002 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   * notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   * notice, this list of conditions and the following disclaimer in
   * the documentation and/or other materials provided with the
   * distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   * if any, must include the following acknowledgment:
   * "This product includes software developed by the
   * Apache Software Foundation (http://www.apache.org/)."
   * Alternately, this acknowledgment may appear in the software itself,
   * if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   * "Apache JMeter" must not be used to endorse or promote products
   * derived from this software without prior written permission. For
   * written permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   * "Apache JMeter", nor may "Apache" appear in their name, without
   * prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  package org.apache.jmeter.protocol.java.config.gui;
  
  import java.awt.Font;
  import java.awt.event.ActionEvent;
  import java.awt.event.ActionListener;
  import java.awt.event.KeyEvent;
  import java.awt.event.KeyListener;
  import java.util.ArrayList;
  
  import javax.swing.BorderFactory;
  import javax.swing.JComboBox;
  import javax.swing.JLabel;
  import javax.swing.JPanel;
  import javax.swing.border.Border;
  import javax.swing.border.EmptyBorder;
  import org.apache.jmeter.config.Arguments;
  import org.apache.jmeter.config.gui.AbstractConfigGui;
  import org.apache.jmeter.config.gui.ArgumentsPanel;
  import org.apache.jmeter.gui.NamePanel;
  import org.apache.jmeter.gui.util.VerticalLayout;
  import org.apache.jmeter.protocol.java.config.JavaConfig;
  import org.apache.jmeter.protocol.java.sampler.JavaSampler;
  import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient;
  import org.apache.jmeter.testelement.TestElement;
  import org.apache.jmeter.util.ClassFinder;
  import org.apache.jmeter.util.JMeterUtils;
  import org.apache.log4j.Category;
  
  
  /**
   * The <code>JavaConfigGui</code> class provides the user interface for
   * the JavaConfig object.
   * @author Brad Kiewel
   * @version $Revision: 1.1 $
   */
  
  public class JavaConfigGui extends AbstractConfigGui
  {
  	private static Category cat = Category.getInstance(JavaConfigGui.class);
  	private static String CLASSNAMECOMBO = "classnamecombo";
  
  	private JComboBox classnameCombo;
  	protected boolean displayName = true;
  	private ArgumentsPanel argsPanel;
  
  	public JavaConfigGui()
  	{
  		this(true);
  	}
  	
  	public String getStaticLabel()
  	{
  		return JMeterUtils.getResString("Java Request Defaults");
  	}
  
  	public JavaConfigGui(boolean displayNameField)
  	{
  		this.displayName = displayNameField;
  		init();
  	}
  
  	protected void init()
  	{
  		this.setLayout(new VerticalLayout(5, VerticalLayout.LEFT, VerticalLayout.TOP));
  
  		JPanel classnameRequestPanel = new JPanel();
  		classnameRequestPanel.setLayout(new VerticalLayout(5, VerticalLayout.LEFT, VerticalLayout.TOP));
  		classnameRequestPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("protocol_java_border")));
  		classnameRequestPanel.add(getClassnamePanel());
  		classnameRequestPanel.add(getParameterPanel());
  
  		if (displayName)
  		{
  			// 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(JMeterUtils.getResString("protocol_java_config_tile"));
  			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(classnameRequestPanel);
  
  			this.add(mainPanel);
  		}
  		else
  		{
  			this.add(classnameRequestPanel);
  		}
  	}
  
  
  	protected JPanel getClassnamePanel()
  	{
  		JPanel panel = new JPanel();
  		panel.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 10));
  		panel.add(new JLabel(JMeterUtils.getResString("protocol_java_classname")));
  		
  		ArrayList possibleClasses = null;
  		
  		try {
  			
  			// Find all the classes which implement the JavaSamplerClient interface
  		
  			possibleClasses = ClassFinder.findClassesByInterface(JMeterUtils.split(JMeterUtils.getPropDefault("search_paths", ".;ApacheJMeter.jar"), ";"),new Class[]{JavaSamplerClient.class});
  			
  			// Remove the JavaConfig class from the list since it only implements the interface for
  			// error conditions.
  			
  			possibleClasses.remove("org.apache.jmeter.protocol.java.config.JavaConfig");
  		
  		} catch (Exception e) {
  			cat.debug("Exception getting interfaces.",e);
  		}
  		
  		classnameCombo = new JComboBox(possibleClasses.toArray());
  		classnameCombo.setName(CLASSNAMECOMBO);
  		classnameCombo.setEditable(false);
  		panel.add(classnameCombo);
  		
  
  		return panel;
  	}
  
  	protected JPanel getParameterPanel()
  	{
  		argsPanel = new ArgumentsPanel();
  		return argsPanel;
  	}
  	
  	public void configure(TestElement config)
  	{
  		super.configure(config);
  		argsPanel.configure((Arguments)config.getProperty(JavaSampler.ARGUMENTS));
  		classnameCombo.setSelectedItem(config.getPropertyAsString(JavaSampler.CLASSNAME));
  	}
  	
  	public TestElement createTestElement()
  	{
  		JavaConfig config = new JavaConfig();
  		this.configureTestElement(config);
  		config.setArguments((Arguments)argsPanel.createTestElement());
  		config.setClassname(classnameCombo.getSelectedItem().toString());
  		return config;
  	}		
  
  }
  
  
  
  1.1                  jakarta-jmeter/src_1/org/apache/jmeter/protocol/java/control/gui/JavaTestSamplerGui.java
  
  Index: JavaTestSamplerGui.java
  ===================================================================
  /*
   * ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2002 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   * notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   * notice, this list of conditions and the following disclaimer in
   * the documentation and/or other materials provided with the
   * distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   * if any, must include the following acknowledgment:
   * "This product includes software developed by the
   * Apache Software Foundation (http://www.apache.org/)."
   * Alternately, this acknowledgment may appear in the software itself,
   * if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   * "Apache JMeter" must not be used to endorse or promote products
   * derived from this software without prior written permission. For
   * written permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   * "Apache JMeter", nor may "Apache" appear in their name, without
   * prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  package org.apache.jmeter.protocol.java.control.gui;
  
  import java.awt.Font;
  
  import javax.swing.JLabel;
  import javax.swing.JPanel;
  import javax.swing.border.Border;
  import javax.swing.border.EmptyBorder;
  import org.apache.jmeter.gui.util.VerticalLayout;
  import org.apache.jmeter.protocol.java.config.JavaConfig;
  import org.apache.jmeter.protocol.java.config.gui.JavaConfigGui;
  import org.apache.jmeter.protocol.java.sampler.JavaSampler;
  import org.apache.jmeter.samplers.gui.AbstractSamplerGui;
  import org.apache.jmeter.testelement.TestElement;
  import org.apache.jmeter.util.JMeterUtils;
  
  /**
   * The <code>JavaTestSamplerGui</code> class provides the user interface 
   * for the JavaTestSampler.
   * 
   * @author Brad Kiewel
   * @version $Revision: 1.1 $
   */
  
  public class JavaTestSamplerGui extends AbstractSamplerGui {
  	
  	private JavaConfigGui javaPanel = null;
  
  	/**
  	 * Constructor for JavaTestSamplerGui
  	 *
  	public JavaTestSamplerGui(LayoutManager arg0, boolean arg1) {
  		super(arg0, arg1);
  	}
  
  	/**
  	 * Constructor for JavaTestSamplerGui
  	 *
  	public JavaTestSamplerGui(LayoutManager arg0) {
  		super(arg0);
  	}
  
  	/**
  	 * Constructor for JavaTestSamplerGui
  	 *
  	public JavaTestSamplerGui(boolean arg0) {
  		super(arg0);
  	}
  
  	/**
  	 * Constructor for JavaTestSamplerGui
  	 */
  	public JavaTestSamplerGui() {
  		super();
  		init();
  	}
  	
  	public String getStaticLabel()
  	{
  		return JMeterUtils.getResString("Java Request");
  	}
  
  	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(JMeterUtils.getResString("protocol_java_test_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());
  
  		javaPanel = new JavaConfigGui(false);
  		
  		mainPanel.add(javaPanel);
  
  		this.add(mainPanel);
  	}
  	
  	public TestElement createTestElement()
  	{
  		JavaConfig config = (JavaConfig)javaPanel.createTestElement();
  		JavaSampler sampler = new JavaSampler();
  		this.configureTestElement(sampler);
  		sampler.addTestElement(config);
  		return sampler;
  	}
  	
  	public void configure(TestElement el)
  	{
  		super.configure(el);
  		javaPanel.configure(el);
  	}
  }
  
  
  
  
  1.1                  jakarta-jmeter/src_1/org/apache/jmeter/protocol/java/sampler/JavaSampler.java
  
  Index: JavaSampler.java
  ===================================================================
  /*
   * ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2002 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   * notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   * notice, this list of conditions and the following disclaimer in
   * the documentation and/or other materials provided with the
   * distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   * if any, must include the following acknowledgment:
   * "This product includes software developed by the
   * Apache Software Foundation (http://www.apache.org/)."
   * Alternately, this acknowledgment may appear in the software itself,
   * if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   * "Apache JMeter" must not be used to endorse or promote products
   * derived from this software without prior written permission. For
   * written permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   * "Apache JMeter", nor may "Apache" appear in their name, without
   * prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  package org.apache.jmeter.protocol.java.sampler;
  
  import java.util.HashMap;
  import java.util.Iterator;
  
  import org.apache.jmeter.config.Argument;
  import org.apache.jmeter.config.Arguments;
  import org.apache.jmeter.protocol.java.config.JavaConfig;
  import org.apache.jmeter.samplers.AbstractSampler;
  import org.apache.jmeter.samplers.Entry;
  import org.apache.jmeter.samplers.SampleResult;
  import org.apache.jmeter.testelement.TestElement;
  import org.apache.log4j.Category;
  
  /**
   * 
   */
  
  
  public class JavaSampler extends AbstractSampler implements JavaSamplerClient {
  
  	/** Handle to Java client. **/
  	
  	public final static String CLASSNAME = "classname";
  	
  	public final static String ARGUMENTS = "arguments";
  
  	private JavaSamplerClient javaClient = null;
  
  	/** Logging  */
  	private static Category cat = Category.getInstance(JavaSampler.class);
  
  	public JavaSampler() {
  		setArguments(new Arguments());
  	}
  	
  	public void setArguments(Arguments args)
  	{
  		this.setProperty(ARGUMENTS,args);
  	}
  	
  	public Arguments getArguments()
  	{
  		return (Arguments)getProperty(ARGUMENTS);
  	}
  	
  	public void addCustomTestElement(TestElement el)
  	{
  		if(el instanceof JavaConfig)
  		{
  			mergeIn(el);
  		}
  	}
  	
  	/**
  	 * Releases Java Client.
  	 */
  
  	public void releaseJavaClient () {
  		if (javaClient != null) {
  			javaClient.teardownTest(createArgumentsHashMap(getArguments()));
  		}
  		javaClient = null;
  	}
  	
  	/**
  	 *  Sets the Classname attribute of the JavaConfig object
  	 *
  	 *@param  classname  The new Classname value
  	 */
  	public void setClassname(String classname)
  	{
  		this.setProperty(CLASSNAME, classname);
  	}
  
  
  
  	/**
  	 *  Gets the Classname attribute of the JavaConfig object
  	 *
  	 *@return    The Classname value
  	 */
  	public String getClassname()
  	{
  		return this.getPropertyAsString(CLASSNAME);
  	}
  	
  	/**
  	 * Performs a test sample.
  	 * 
  	 * The <code>sample()</code> method retrieves the reference to the
  	 * Java client and calls its <code>runTest()</code> method.
  	 * @see Sampler#sample()
  	 * @see JavaSamplerClient#runTest()
  	 * 
  	 * @return test SampleResult
  	 */
  	
  
  	public SampleResult sample(Entry entry) {
  		return createJavaClient().runTest(createArgumentsHashMap(getArguments()));
  	}
  	
  	public HashMap createArgumentsHashMap(Arguments args)
  	{
  		HashMap newArgs = new HashMap();
  		Iterator iter = args.iterator();
  		while (iter.hasNext())
  		{
  			Argument item = (Argument)iter.next();
  			newArgs.put(item.getName(),item.getValue());
  		}
  
  		return newArgs;
  	}
  	
  		/**
  	 * Returns reference to <code>JavaSamplerClient</code>.
  	 * 
  	 * The <code>createJavaClient()</code> method uses reflection
  	 * to create an instance of the specified Java protocol client.
  	 * If the class can not be found, the method returns a reference
  	 * to <code>this</code> object.
  	 * 
  	 * @return JavaSamplerClient reference.
  	 */
  
  	public JavaSamplerClient createJavaClient() {
  		if (javaClient == null) {
  			try {
  
  				Class javaClass = Class.forName(getClassname().trim());
  				java.lang.reflect.Constructor[] constructors = javaClass.getConstructors();
  
  				for (int i = 0; i < constructors.length; i++) {
  					Class[] params = constructors[i].getParameterTypes();
  					if (params.length == 0) {
  						Object[] args = {};
  						javaClient = (JavaSamplerClient)constructors[i].newInstance(args);
  						javaClient.setupTest(createArgumentsHashMap(getArguments()));
  						if (cat.isDebugEnabled()) {
  							cat.debug(whoAmI() + "\tCreated:\t"+ getClassname()+ "@" + Integer.toHexString(javaClient.hashCode()));
  						}
  						break;
  					}
  				}
  
  			} catch (Exception e) {
  				cat.error(whoAmI() + "\tException creating: " + getClassname(),e);
  				javaClient = this;
  			}
  		}
  		
  		return javaClient;
  			
  	}
  	
  	/**
  	 * Retrieves reference to JavaSamplerClient.
  	 * 
  	 * Convience method used to check for null reference without
  	 * actually creating a JavaSamplerClient
  	 * 
  	 * @return reference to JavaSamplerClient
  	 */
  	
  	public JavaSamplerClient retrieveJavaClient() {
  		return javaClient;
  	}
  	
  	/**
  	 * Provide default setupTest() implementation for error conditions.
  	 * @see JavaSamplerClient#setupTest()
  	 */
  	public void setupTest(HashMap arguments) {
  		cat.debug(whoAmI() + "\tsetupTest");
  	}
  
  	/**
  	 * Provide default teardownTest() implementation for error conditions.
  	 * @see JavaSamplerClient#teardownTest()
  	 */
  	public void teardownTest(HashMap arguments) {
  		cat.debug(whoAmI() + "\tteardownTest");
  		javaClient = null;
  	}
  
  	/**
  	 * Return SampleResult with data on error.
  	 * @see JavaSamplerClient#runTest()
  	 */
  	public SampleResult runTest(HashMap arguments) {
  		cat.debug(whoAmI() + "\trunTest");
  		Thread.yield();
  		SampleResult results = new SampleResult();
  		results.setTime(0);
  		results.setSuccessful(false);
  		results.setResponseData(new String("Class not found: " + getClassname()).getBytes());
  		results.setSampleLabel("ERROR: " + getClassname());
  		return results;
  	}
  	
  	private String whoAmI() {
  		StringBuffer sb = new StringBuffer();
  		sb.append(Thread.currentThread().getName());
  		sb.append("@");
  		sb.append(Integer.toHexString(hashCode()));
  		return sb.toString();
  	}
  
  }
  
  
  1.1                  jakarta-jmeter/src_1/org/apache/jmeter/protocol/java/sampler/JavaSamplerClient.java
  
  Index: JavaSamplerClient.java
  ===================================================================
  /*
   * ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2002 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   * notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   * notice, this list of conditions and the following disclaimer in
   * the documentation and/or other materials provided with the
   * distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   * if any, must include the following acknowledgment:
   * "This product includes software developed by the
   * Apache Software Foundation (http://www.apache.org/)."
   * Alternately, this acknowledgment may appear in the software itself,
   * if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   * "Apache JMeter" must not be used to endorse or promote products
   * derived from this software without prior written permission. For
   * written permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   * "Apache JMeter", nor may "Apache" appear in their name, without
   * prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  package org.apache.jmeter.protocol.java.sampler;
  
  import java.util.HashMap;
  
  import org.apache.jmeter.samplers.SampleResult;
  /**
   *<code>JavaSamplerClient</code> provides a standard
   * interface to execute external Java programs within JMeter.
   * 
   * @author Brad Kiewel
   * @version $Revision: 1.1 $
   */
  
  public interface JavaSamplerClient {
  	
  	/**
  	 * Setup any resources need for each test run.
  	 */
  
  	public void setupTest(HashMap arguments);
  	
  	/**
  	 * Perform any clean up at the end of a test run.
  	 */
  
  	public void teardownTest(HashMap arguments);
  	
  	/**
  	 * Performs test for each iteration.
  	 * 
  	 * The <code>runTest()</code> method performs one test interation 
  	 * each time it is called.  The method returns a SampleResult object.
  	 * The method should, has a minimum, place the response time in 
  	 * the SampleResult object.
  	 * 
  	 * @return SampleResult object with results of the test run.
  	 */
  
  	public SampleResult runTest(HashMap arguments);
  }
  
  
  1.1                  jakarta-jmeter/src_1/org/apache/jmeter/protocol/java/test/SleepTest.java
  
  Index: SleepTest.java
  ===================================================================
  /*
   * ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   * notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   * notice, this list of conditions and the following disclaimer in
   * the documentation and/or other materials provided with the
   * distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   * if any, must include the following acknowledgment:
   * "This product includes software developed by the
   * Apache Software Foundation (http://www.apache.org/)."
   * Alternately, this acknowledgment may appear in the software itself,
   * if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   * "Apache JMeter" must not be used to endorse or promote products
   * derived from this software without prior written permission. For
   * written permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   * "Apache JMeter", nor may "Apache" appear in their name, without
   * prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  package org.apache.jmeter.protocol.java.test;
  
  import java.util.HashMap;
  import java.util.Iterator;
  import java.util.Map.Entry;
  
  import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient;
  import org.apache.jmeter.samplers.SampleResult;
  import org.apache.log4j.Category;
  
  /**
   * The <code>SleepTest</code> class is a simple example class for a 
   * JMeter Java protocol client.  The class implements the 
   * <code>JavaSamplerClient</code> interface.
   */
  
  public class SleepTest implements JavaSamplerClient {
  	/** Define category for logging  */
  	private static Category cat = Category.getInstance(SleepTest.class);
  	/** */
  	private long sleepTime = 1000;
  	/** */
  	private long sleepMask = 0x3ff;
  	/**
  	 * Default constructor for <code>SleepTest</code>.
  	 * 
  	 * {@link org.apache.jmeter.protocol.java.config.JavaConfig JavaConfig} 
  	 * uses the default constructor to instantiate an instance of
  	 * the client class.
  	 */
  	public SleepTest() {
  		cat.debug(whoAmI() + "\tConstruct");
  	}
  
  	/**
  	 * @see JavaSamplerClient#setupTest()
  	 * 
  	 * setupTest() provides a way to do any initialization that may be required.
  	 */
  	public void setupTest(HashMap arguments) {
  		cat.debug(whoAmI() + "\tsetupTest()");
  		Iterator argsIt = arguments.entrySet().iterator();
  		while (argsIt.hasNext()) {
  			Entry entry = (Entry)argsIt.next();
  			cat.debug(entry.getKey().toString() + "=" + entry.getValue().toString());
  		}
  		
  		if (arguments.containsKey("SleepTime")) {
  			setSleepTime(arguments.get("SleepTime"));
  		}
  		
  		if (arguments.containsKey("SleepMask")) {
  			setSleepMask(arguments.get("SleepMask"));
  		}
  	}
  
  	/**
  	 * @see JavaSamplerClient#teardownTest()
  	 * 
  	 * teardownTest() provides a way to do any clean-up that may be required.
  	 */
  	public void teardownTest(HashMap arguments) {
  		cat.debug(whoAmI() + "\tteardownTest()");
  		Iterator argsIt = arguments.entrySet().iterator();
  		while (argsIt.hasNext()) {
  			Entry entry = (Entry)argsIt.next();
  			cat.debug(entry.getKey().toString() + "=" + entry.getValue().toString());
  		}
  	}
  
  	/**
  	 * @see JavaSamplerClient#runTest()
  	 * 
  	 * runTest() is called for each sample.  The method returns a 
  	 * <code>SampleResult</code> object.  The method must calculate
  	 * how long the sample took to execute.
  	 */
  	public SampleResult runTest(HashMap arguments) {
  
  		SampleResult results = new SampleResult();
  		try {
  			//
  			// Generate a random value using the current time.
  			//
  			long ct = System.currentTimeMillis();
  			ct %= getSleepMask();
  			// 
  			// Record sample start time.
  			//
  			long start = System.currentTimeMillis();
  			//
  			// Execute the sample.  In this case sleep for the 
  			// specified time.
  			//
  			Thread.sleep(getSleepTime() + ct);
  			//
  			// Record end time and populate the results.
  			//
  			long end = System.currentTimeMillis();
  			results.setTime(end - start);
  			results.setSuccessful(true);
  			results.setSampleLabel("Sleep Test: time = "+getSleepTime() + ct);
  		} catch (Exception e) {
  		}
  
  		if (cat.isDebugEnabled()) {
  			cat.debug(whoAmI() + "\trunTest()" + "\tTime:\t" + results.getTime());
  			Iterator argsIt = arguments.entrySet().iterator();
  			while (argsIt.hasNext()) {
  				Entry entry = (Entry)argsIt.next();
  				cat.debug(entry.getKey().toString() + "=" + entry.getValue().toString());
  			}
  		}
  
  		return results;
  
  	}
  
  	private String whoAmI() {
  		StringBuffer sb = new StringBuffer();
  		sb.append(Thread.currentThread().toString());
  		sb.append("@");
  		sb.append(Integer.toHexString(hashCode()));
  		return sb.toString();
  	}
  	
  	private long getSleepTime() {return sleepTime;}
  	private long getSleepMask() {return sleepMask;}
  	private void setSleepTime(Object arg) {
  		try {
  			sleepTime = Long.parseLong((String)arg);
  		} catch (Exception e) {
  			cat.debug("Exception getting sleepTime:\t",e);
  			sleepTime = 1000l;
  		}
  	}
  	private void setSleepMask(Object arg) {
  		try {
  			sleepMask = Long.parseLong((String)arg);
  		} catch (Exception e) {
  			cat.debug("Exception getting sleepMask:\t",e);
  			sleepMask = 0x3ff;
  		}
  	}
  }
  
  
  1.4       +3 -17     jakarta-jmeter/src_1/org/apache/jmeter/protocol/jdbc/config/gui/DbConfigGui.java
  
  Index: DbConfigGui.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/jdbc/config/gui/DbConfigGui.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- DbConfigGui.java	29 Apr 2002 17:08:12 -0000	1.3
  +++ DbConfigGui.java	21 May 2002 03:36:44 -0000	1.4
  @@ -71,7 +71,7 @@
    * Title: Description: Copyright: Copyright (c) 2001 Company:
    *
    *@author    Michael Stover
  - *@created   $Date: 2002/04/29 17:08:12 $
  + *@created   $Date: 2002/05/21 03:36:44 $
    *@version   1.0
    ***************************************/
   
  @@ -85,7 +85,6 @@
   	private JTextField driverField = new JTextField(20);
   
   	private boolean displayName;
  -	private NamePanel namePanel;
   	private LoginConfigGui loginGui;
   
   	/****************************************
  @@ -104,22 +103,9 @@
   	public DbConfigGui(boolean displayName)
   	{
   		this.displayName = displayName;
  -		namePanel = new NamePanel();
  -		setName(getStaticLabel());
   		init();
   	}
   
  -	public void setName(String name)
  -	{
  -		super.setName(name);
  -		namePanel.setName(name);
  -	}
  -
  -	public String getName()
  -	{
  -		return namePanel.getName();
  -	}
  -
   	public String getStaticLabel()
   	{
   		return JMeterUtils.getResString("database_login_title");
  @@ -137,7 +123,7 @@
   
   	public void configure(TestElement element)
   	{
  -		setName((String)element.getProperty(TestElement.NAME));
  +		super.configure(element);
   		urlField.setText((String)element.getProperty(JDBCSampler.URL));
   		driverField.setText((String)element.getProperty(JDBCSampler.DRIVER));
   		loginGui.configure(element);
  @@ -164,7 +150,7 @@
   			mainPanel.add(panelTitleLabel);
   
   			// NAME
  -			mainPanel.add(namePanel);
  +			mainPanel.add(getNamePanel());
   
   			// URL and JDBC PROPS
   			JPanel urlJDBCPanel = new JPanel();
  
  
  
  1.4       +3 -7      jakarta-jmeter/src_1/org/apache/jmeter/protocol/jdbc/config/gui/PoolConfigGui.java
  
  Index: PoolConfigGui.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/jdbc/config/gui/PoolConfigGui.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- PoolConfigGui.java	29 Apr 2002 17:08:12 -0000	1.3
  +++ PoolConfigGui.java	21 May 2002 03:36:44 -0000	1.4
  @@ -70,7 +70,7 @@
    * Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
    *
    *@author    Michael Stover
  - *@created   $Date: 2002/04/29 17:08:12 $
  + *@created   $Date: 2002/05/21 03:36:44 $
    *@version   1.0
    ***************************************/
   
  @@ -85,8 +85,6 @@
   
   	private boolean displayName;
   
  -	private NamePanel namePanel;
  -
   	/****************************************
   	 * !ToDo (Constructor description)
   	 ***************************************/
  @@ -103,14 +101,12 @@
   	public PoolConfigGui(boolean displayName)
   	{
   		this.displayName = displayName;
  -		namePanel = new NamePanel();
  -		setName(getStaticLabel());
   		init();
   	}
   
   	public void configure(TestElement element)
   	{
  -		setName(element.getProperty(TestElement.NAME).toString());
  +		super.configure(element);
   		connField.setText(element.getProperty(JDBCSampler.CONNECTIONS).toString());
   		maxUseField.setText(element.getProperty(JDBCSampler.MAXUSE).toString());
   	}
  @@ -200,7 +196,7 @@
   			mainPanel.add(panelTitleLabel);
   
   			// NAME
  -			mainPanel.add(namePanel);
  +			mainPanel.add(getNamePanel());
   
   			// CONNECTION POOL
   			JPanel connPoolPanel = new JPanel();
  
  
  
  1.4       +3 -6      jakarta-jmeter/src_1/org/apache/jmeter/protocol/jdbc/config/gui/SqlConfigGui.java
  
  Index: SqlConfigGui.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/jdbc/config/gui/SqlConfigGui.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SqlConfigGui.java	29 Apr 2002 17:08:12 -0000	1.3
  +++ SqlConfigGui.java	21 May 2002 03:36:44 -0000	1.4
  @@ -70,14 +70,13 @@
    * Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
    *
    *@author    Michael Stover
  - *@created   $Date: 2002/04/29 17:08:12 $
  + *@created   $Date: 2002/05/21 03:36:44 $
    *@version   1.0
    ***************************************/
   
   public class SqlConfigGui extends AbstractConfigGui
   {
   	private JTextField sqlField = new JTextField(30);
  -	private NamePanel namePanel;
   	private boolean displayName;
   
   	/****************************************
  @@ -96,8 +95,6 @@
   	public SqlConfigGui(boolean displayName)
   	{
   		this.displayName = displayName;
  -		namePanel = new NamePanel();
  -		setName(getStaticLabel());
   		init();
   	}
   
  @@ -109,7 +106,7 @@
   	public void configure(TestElement element)
   	{
   		sqlField.setText(element.getProperty(JDBCSampler.QUERY).toString());
  -		setName(element.getProperty(TestElement.NAME).toString());
  +		super.configure(element);
   	}
   
   	public TestElement createTestElement()
  @@ -141,7 +138,7 @@
   			mainPanel.add(panelTitleLabel);
   
   			// NAME
  -			mainPanel.add(namePanel);
  +			mainPanel.add(getNamePanel());
   
   			// SQL
   			mainPanel.add(createSqlPanel());
  
  
  
  1.4       +18 -4     jakarta-jmeter/src_1/org/apache/jmeter/reporters/FileReporter.java
  
  Index: FileReporter.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/reporters/FileReporter.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- FileReporter.java	29 Apr 2002 17:08:13 -0000	1.3
  +++ FileReporter.java	21 May 2002 03:36:44 -0000	1.4
  @@ -87,16 +87,30 @@
   		String line;
   		while ((line = reader.readLine()) != null) {
   			try {
  -				if (line.startsWith("#") || line.trim().length() == 0) continue;
  -				StringTokenizer st = new StringTokenizer(line, " ,");
  -				String key = (String) st.nextToken();
  -				Integer value = new Integer((String) st.nextToken());
  +				line.trim();
  +				if (line.startsWith("#") || line.length() == 0)
  +					continue;
  +				int splitter = line.lastIndexOf(' ');
  +				String key = line.substring(0, splitter);
  +				int len = line.length() - 1;
  +				Integer value = null;
  +				if (line.charAt(len) == ',') {
  +					value = new Integer(
  +						line.substring(splitter + 1, len));
  +				} else {
  +					value = new Integer(
  +						line.substring(splitter + 1));
  +				}
   				Vector v = getData(key);
   				if (v == null) {
   					v = new Vector();
   					this.data.put(key, v);
   				}
   				v.addElement(value);
  +			} catch (NumberFormatException nfe) {
  +				System.out.println(nfe.toString());
  +				System.out.println("This line could not be parsed: "
  +					+ line);
   			} catch (Exception e) {
   				System.out.println(e.toString());
   			}
  
  
  
  1.10      +7 -1      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.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- messages.properties	20 May 2002 13:05:51 -0000	1.9
  +++ messages.properties	21 May 2002 03:36:44 -0000	1.10
  @@ -220,4 +220,10 @@
   insert_before=Insert Before
   insert_after=Insert After
   add_as_child=Add as Child
  -cancel=Cancel
  \ No newline at end of file
  +cancel=Cancel
  +protocol_java_classname=Classname:
  +protocol_java_config_tile=Configure Java Sample
  +protocol_java_border=Java class
  +protocol_java_test_title=Java Testing
  +java_request=Java Request
  +java_request_defaults=Java Request Defaults
  \ No newline at end of file
  
  
  
  1.9       +7 -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.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- messages_ja.properties	20 May 2002 13:05:51 -0000	1.8
  +++ messages_ja.properties	21 May 2002 03:36:44 -0000	1.9
  @@ -214,4 +214,10 @@
   insert_before=Insert Before
   insert_after=Insert After
   add_as_child=Add as Child
  -cancel=Cancel
  \ No newline at end of file
  +cancel=Cancel
  +protocol_java_classname=Classname:
  +protocol_java_config_tile=Configure Java Sample
  +protocol_java_border=Java class
  +protocol_java_test_title=Java Testing
  +java_request=Java Request
  +java_request_defaults=Java Request Defaults
  \ No newline at end of file
  
  
  
  1.9       +7 -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.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- messages_no.properties	20 May 2002 13:05:51 -0000	1.8
  +++ messages_no.properties	21 May 2002 03:36:44 -0000	1.9
  @@ -205,4 +205,10 @@
   insert_before=Insert Before
   insert_after=Insert After
   add_as_child=Add as Child
  -cancel=Cancel
  \ No newline at end of file
  +cancel=Cancel
  +protocol_java_classname=Classname:
  +protocol_java_config_tile=Configure Java Sample
  +protocol_java_border=Java class
  +protocol_java_test_title=Java Testing
  +java_request=Java Request
  +java_request_defaults=Java Request Defaults
  \ No newline at end of file
  
  
  
  1.5       +5 -6      jakarta-jmeter/src_1/org/apache/jmeter/threads/TestCompiler.java
  
  Index: TestCompiler.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/threads/TestCompiler.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- TestCompiler.java	2 May 2002 22:55:00 -0000	1.4
  +++ TestCompiler.java	21 May 2002 03:36:44 -0000	1.5
  @@ -29,7 +29,7 @@
    * Company: </p>
    *
    *@author    unascribed
  - *@created   $Date: 2002/05/02 22:55:00 $
  + *@created   $Date: 2002/05/21 03:36:44 $
    *@version   1.0
    ***************************************/
   
  @@ -135,7 +135,6 @@
   			ObjectPair pair = new ObjectPair(child, stack.getLast());
   			if(!pairing.contains(pair))
   			{
  -				System.out.println("Adding "+child+" to "+stack.getLast());
   				((TestElement)stack.getLast()).addTestElement(child);
   				pairing.add(pair);
   			}
  @@ -165,8 +164,8 @@
   	 * !ToDo (Class description)
   	 *
   	 *@author    $Author: mstover1 $
  -	 *@created   $Date: 2002/05/02 22:55:00 $
  -	 *@version   $Revision: 1.4 $
  +	 *@created   $Date: 2002/05/21 03:36:44 $
  +	 *@version   $Revision: 1.5 $
   	 ***************************************/
   	public static class Test extends junit.framework.TestCase
   	{
  @@ -213,8 +212,8 @@
   	 * !ToDo (Class description)
   	 *
   	 *@author    $Author: mstover1 $
  -	 *@created   $Date: 2002/05/02 22:55:00 $
  -	 *@version   $Revision: 1.4 $
  +	 *@created   $Date: 2002/05/21 03:36:44 $
  +	 *@version   $Revision: 1.5 $
   	 ***************************************/
   	private class ObjectPair
   	{
  
  
  
  1.4       +12 -12    jakarta-jmeter/src_1/org/apache/jmeter/threads/ThreadGroup.java
  
  Index: ThreadGroup.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/threads/ThreadGroup.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ThreadGroup.java	29 Apr 2002 17:08:14 -0000	1.3
  +++ ThreadGroup.java	21 May 2002 03:36:44 -0000	1.4
  @@ -53,33 +53,33 @@
    * <http://www.apache.org/>.
    */
   package org.apache.jmeter.threads;
  -import java.io.*;
  -import java.util.*;
  -import org.apache.jmeter.config.ConfigElement;
  +import java.io.Serializable;
  +import java.util.Collections;
  +import java.util.Iterator;
  +import java.util.LinkedList;
  +import java.util.List;
  +
   import org.apache.jmeter.control.Controller;
   import org.apache.jmeter.control.LoopController;
  -import org.apache.jmeter.gui.*;
  -import org.apache.jmeter.gui.util.MenuFactory;
   import org.apache.jmeter.samplers.RemoteSampleListener;
   import org.apache.jmeter.samplers.SampleEvent;
   import org.apache.jmeter.samplers.SampleListener;
  +import org.apache.jmeter.samplers.Sampler;
   import org.apache.jmeter.testelement.AbstractTestElement;
  +import org.apache.jmeter.testelement.PerThreadClonable;
   import org.apache.jmeter.testelement.TestElement;
  -import org.apache.jmeter.timers.Timer;
  -import org.apache.jmeter.util.JMeterUtils;
  -import org.apache.jmeter.samplers.Sampler;
   
   /****************************************
    * Title: Apache JMeter Description: Copyright: Copyright (c) 2000 Company:
    * Apache Foundation
    *
    *@author    Michael Stover
  - *@created   $Date: 2002/04/29 17:08:14 $
  + *@created   $Date: 2002/05/21 03:36:44 $
    *@version   1.0
    ***************************************/
   
   public class ThreadGroup extends AbstractTestElement implements SampleListener,
  -		Serializable,Controller
  +		Serializable,Controller,PerThreadClonable
   {
   
   	/****************************************
  @@ -256,8 +256,8 @@
   	 * issues.
   	 *
   	 *@author    $Author: mstover1 $
  -	 *@created   $Date: 2002/04/29 17:08:14 $
  -	 *@version   $Revision: 1.3 $
  +	 *@created   $Date: 2002/05/21 03:36:44 $
  +	 *@version   $Revision: 1.4 $
   	 ***************************************/
   	private class SampleQueue implements Runnable, Serializable
   	{
  
  
  
  1.5       +0 -4      jakarta-jmeter/src_1/org/apache/jmeter/util/SearchByClass.java
  
  Index: SearchByClass.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/util/SearchByClass.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SearchByClass.java	1 May 2002 23:48:53 -0000	1.4
  +++ SearchByClass.java	21 May 2002 03:36:44 -0000	1.5
  @@ -29,10 +29,6 @@
   			tree.set(node, subTree);
   			subTrees.put(node, tree);
   		}
  -		else
  -		{
  -			System.out.println(" - NOT assignable from "+searchClass);
  -		}
   	}
   	public static class Test extends junit.framework.TestCase {
   		public Test(String name) {
  
  
  

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