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:[EMAIL PROTECTED]";>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:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to