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