mstover1    2003/03/14 13:15:37

  Modified:    bin      jmeter.properties
               src/components/org/apache/jmeter/control
                        InterleaveControl.java OnceOnlyController.java
               src/core/org/apache/jmeter/config Arguments.java
               src/core/org/apache/jmeter/config/gui ArgumentsPanel.java
               src/core/org/apache/jmeter/control GenericController.java
                        LoopController.java
               src/core/org/apache/jmeter/engine PreCompiler.java
                        StandardJMeterEngine.java
               src/core/org/apache/jmeter/engine/util CompoundVariable.java
                        ValueReplacer.java
               src/core/org/apache/jmeter/threads JMeterContext.java
                        JMeterThread.java JMeterVariables.java
                        TestCompiler.java
               src/protocol/ftp/org/apache/jmeter/protocol/ftp/sampler
                        FTPSampler.java
               src/protocol/http/org/apache/jmeter/protocol/http/config
                        MultipartUrlConfig.java
               src/protocol/http/org/apache/jmeter/protocol/http/gui
                        HTTPArgumentsPanel.java
               src/protocol/http/org/apache/jmeter/protocol/http/sampler
                        HTTPSampler.java
               src/protocol/http/org/apache/jmeter/protocol/http/util
                        HTTPArgument.java
               src/protocol/java/org/apache/jmeter/protocol/java/sampler
                        JavaSampler.java
               src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler
                        JDBCSampler.java
  Added:       src/jorphan/org/apache/jorphan/gui ObjectTableModel.java
  Log:
  New table model making things simpler
  fixing problem with test plan level variables
  
  Revision  Changes    Path
  1.59      +1 -1      jakarta-jmeter/bin/jmeter.properties
  
  Index: jmeter.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/bin/jmeter.properties,v
  retrieving revision 1.58
  retrieving revision 1.59
  diff -u -r1.58 -r1.59
  --- jmeter.properties 11 Mar 2003 19:04:18 -0000      1.58
  +++ jmeter.properties 14 Mar 2003 21:15:35 -0000      1.59
  @@ -68,7 +68,7 @@
   
   #Logging levels for the logging categories in JMeter.  Correct values are 
FATAL_ERROR, ERROR, WARN, INFO, and DEBUG
   log_level.jmeter=WARN
  -log_level.jmeter.engine=WARN
  +log_level.jmeter.engine=DEBUG
   log_level.jmeter.gui=WARN
   log_level.jmeter.elements=WARN
   log_level.jmeter.util=WARN
  
  
  
  1.7       +3 -1      
jakarta-jmeter/src/components/org/apache/jmeter/control/InterleaveControl.java
  
  Index: InterleaveControl.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/control/InterleaveControl.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- InterleaveControl.java    5 Feb 2003 05:12:02 -0000       1.6
  +++ InterleaveControl.java    14 Mar 2003 21:15:35 -0000      1.7
  @@ -57,6 +57,7 @@
   
   import org.apache.jmeter.samplers.AbstractSampler;
   import org.apache.jmeter.samplers.Sampler;
  +import org.apache.jmeter.testelement.PerSampleClonable;
   import org.apache.jmeter.testelement.TestElement;
   
   /****************************************
  @@ -377,7 +378,8 @@
                        s.setName(name);
                        return s;
                }
  -             public class TestSampler extends AbstractSampler {
  +             public class TestSampler extends AbstractSampler
  +                                             implements PerSampleClonable {
                  public void addCustomTestElement(TestElement t) { }
                  public org.apache.jmeter.samplers.SampleResult 
sample(org.apache.jmeter.samplers.Entry e) { return null; }
                }
  
  
  
  1.4       +3 -1      
jakarta-jmeter/src/components/org/apache/jmeter/control/OnceOnlyController.java
  
  Index: OnceOnlyController.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/control/OnceOnlyController.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- OnceOnlyController.java   5 Feb 2003 05:12:02 -0000       1.3
  +++ OnceOnlyController.java   14 Mar 2003 21:15:35 -0000      1.4
  @@ -57,6 +57,7 @@
   import java.io.Serializable;
   
   import org.apache.jmeter.samplers.AbstractSampler;
  +import org.apache.jmeter.testelement.PerSampleClonable;
   import org.apache.jmeter.testelement.TestElement;
   
   /************************************************************
  @@ -147,7 +148,8 @@
                        s.setName(name);
                        return s;
                }
  -             public class TestSampler extends AbstractSampler {
  +             public class TestSampler extends AbstractSampler
  +                                             implements PerSampleClonable {
                  public void addCustomTestElement(TestElement t) { }
                  public org.apache.jmeter.samplers.SampleResult 
sample(org.apache.jmeter.samplers.Entry e) { return null; }
                }
  
  
  
  1.3       +7 -1      jakarta-jmeter/src/core/org/apache/jmeter/config/Arguments.java
  
  Index: Arguments.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/config/Arguments.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Arguments.java    18 Feb 2003 16:03:44 -0000      1.2
  +++ Arguments.java    14 Mar 2003 21:15:35 -0000      1.3
  @@ -99,6 +99,12 @@
        {
                return (List)getProperty(ARGUMENTS);
        }
  +    
  +    public void clear()
  +    {
  +        super.clear();
  +        setProperty(ARGUMENTS,new ArrayList());
  +    }
        
        public void setArguments(List arguments)
        {
  
  
  
  1.7       +20 -13    
jakarta-jmeter/src/core/org/apache/jmeter/config/gui/ArgumentsPanel.java
  
  Index: ArgumentsPanel.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/config/gui/ArgumentsPanel.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ArgumentsPanel.java       28 Feb 2003 14:21:45 -0000      1.6
  +++ ArgumentsPanel.java       14 Mar 2003 21:15:35 -0000      1.7
  @@ -79,10 +79,9 @@
   
   import org.apache.jmeter.config.Argument;
   import org.apache.jmeter.config.Arguments;
  -import org.apache.jmeter.gui.util.PowerTableModel;
   import org.apache.jmeter.testelement.TestElement;
   import org.apache.jmeter.util.JMeterUtils;
  -import org.apache.jorphan.collections.Data;
  +import org.apache.jorphan.gui.ObjectTableModel;
   import org.apache.log.Hierarchy;
   import org.apache.log.Logger;
   
  @@ -97,10 +96,10 @@
   public class ArgumentsPanel extends AbstractConfigGui implements FocusListener, 
ActionListener, CellEditorListener
   {
       transient private static Logger log = 
Hierarchy.getDefaultHierarchy().getLoggerFor(JMeterUtils.GUI);
  -    JTable table;
  +    transient JTable table;
       JButton add;
       JButton delete;
  -    protected PowerTableModel tableModel;
  +    protected transient ObjectTableModel tableModel;
       String name;
       JLabel tableLabel;
   
  @@ -185,15 +184,17 @@
        */
       public void modifyTestElement(TestElement args)
       {
  -        Data model = tableModel.getData();
  +        Iterator modelData = tableModel.iterator();
           Arguments arguments = null;
           if (args instanceof Arguments)
           {
               arguments = (Arguments) args;
  -            model.reset();
  -            while (model.next())
  +            arguments.clear();
  +            while (modelData.hasNext())
               {
  -                arguments.addArgument((String) 
model.getColumnValue(Arguments.COLUMN_NAMES[0]), 
model.getColumnValue(Arguments.COLUMN_NAMES[1]), "=");
  +                Argument arg = (Argument) modelData.next();
  +                arg.setMetaData("=");
  +                arguments.addArgument(arg);
               }
           }
           this.configureTestElement(args);
  @@ -214,7 +215,7 @@
               while (iter.hasNext())
               {
                   Argument arg = (Argument) iter.next();
  -                tableModel.addRow(new Object[] { arg.getName(), arg.getValue()});
  +                tableModel.addRow(arg);
               }
           }
           checkDeleteStatus();
  @@ -301,8 +302,7 @@
           // and stop the editing before adding a new row.
           stopTableEditing();
   
  -        tableModel.addNewRow();
  -        tableModel.fireTableDataChanged();
  +        tableModel.addRow(makeNewArgument());
   
           // Enable DELETE (which may already be enabled, but it won't hurt)
           delete.setEnabled(true);
  @@ -312,6 +312,11 @@
           table.setRowSelectionInterval(rowToSelect, rowToSelect);
       }
   
  +    protected Object makeNewArgument()
  +    {
  +        return new Argument("","");
  +    }
  +
       private void stopTableEditing()
       {
           if (table.isEditing())
  @@ -371,7 +376,9 @@
   
       protected void initializeTableModel()
       {
  -        tableModel = new PowerTableModel(new String[] { Arguments.COLUMN_NAMES[0], 
Arguments.COLUMN_NAMES[1] }, new Class[] { String.class, String.class });
  +        tableModel = new ObjectTableModel(new String[] { Arguments.COLUMN_NAMES[0], 
Arguments.COLUMN_NAMES[1] }, 
  +                new String[]{"name","value"},new 
Class[]{String.class,Object.class},new Class[] { String.class, String.class },
  +                new Argument());
       }
   
       protected void checkDeleteStatus()
  @@ -434,7 +441,7 @@
           public void testArgumentCreation() throws Exception
           {
               ArgumentsPanel gui = new ArgumentsPanel();
  -            gui.tableModel.addNewRow();
  +            gui.tableModel.addRow(new Argument());
               gui.tableModel.setValueAt("howdy", 0, 0);
               gui.tableModel.setValueAt("doody", 0, 1);
               assertEquals("=", ((Argument) ((Arguments) 
gui.createTestElement()).getArguments().get(0)).getMetaData());
  
  
  
  1.4       +3 -2      
jakarta-jmeter/src/core/org/apache/jmeter/control/GenericController.java
  
  Index: GenericController.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/control/GenericController.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- GenericController.java    5 Feb 2003 05:12:05 -0000       1.3
  +++ GenericController.java    14 Mar 2003 21:15:35 -0000      1.4
  @@ -62,6 +62,7 @@
   import org.apache.jmeter.samplers.AbstractSampler;
   import org.apache.jmeter.samplers.Sampler;
   import org.apache.jmeter.testelement.AbstractTestElement;
  +import org.apache.jmeter.testelement.PerSampleClonable;
   import org.apache.jmeter.testelement.PerThreadClonable;
   import org.apache.jmeter.testelement.TestElement;
   
  @@ -364,7 +365,7 @@
                        s.setName(name);
                        return s;
                }
  -             class TestSampler extends AbstractSampler {
  +             class TestSampler extends AbstractSampler implements PerSampleClonable 
{
                  public void addCustomTestElement(TestElement t) { }
                  public org.apache.jmeter.samplers.SampleResult 
sample(org.apache.jmeter.samplers.Entry e) { return null; }
                }
  
  
  
  1.3       +3 -2      
jakarta-jmeter/src/core/org/apache/jmeter/control/LoopController.java
  
  Index: LoopController.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/control/LoopController.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- LoopController.java       5 Feb 2003 05:12:05 -0000       1.2
  +++ LoopController.java       14 Mar 2003 21:15:35 -0000      1.3
  @@ -56,6 +56,7 @@
   import java.io.Serializable;
   
   import org.apache.jmeter.samplers.AbstractSampler;
  +import org.apache.jmeter.testelement.PerSampleClonable;
   import org.apache.jmeter.testelement.TestElement;
   /****************************************
    * Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
  @@ -219,7 +220,7 @@
                        s.setName(name);
                        return s;
                }
  -             class TestSampler extends AbstractSampler {
  +             class TestSampler extends AbstractSampler implements PerSampleClonable 
{
                  public void addCustomTestElement(TestElement t) { }
                  public org.apache.jmeter.samplers.SampleResult 
sample(org.apache.jmeter.samplers.Entry e) { return null; }
                }
  
  
  
  1.10      +45 -44    
jakarta-jmeter/src/core/org/apache/jmeter/engine/PreCompiler.java
  
  Index: PreCompiler.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/engine/PreCompiler.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- PreCompiler.java  10 Mar 2003 17:27:58 -0000      1.9
  +++ PreCompiler.java  14 Mar 2003 21:15:36 -0000      1.10
  @@ -5,6 +5,8 @@
   import org.apache.jmeter.functions.InvalidVariableException;
   import org.apache.jmeter.testelement.TestElement;
   import org.apache.jmeter.testelement.TestPlan;
  +import org.apache.jmeter.threads.JMeterContextService;
  +import org.apache.jmeter.threads.JMeterVariables;
   import org.apache.jmeter.util.JMeterUtils;
   import org.apache.jorphan.collections.HashTree;
   import org.apache.jorphan.collections.HashTreeTraverser;
  @@ -18,48 +20,47 @@
    */
   public class PreCompiler implements HashTreeTraverser
   {
  -     transient private static Logger log =
  -             Hierarchy.getDefaultHierarchy().getLoggerFor(JMeterUtils.ENGINE);
  -     private Map userDefinedVariables;
  -     private boolean testValid = true;
  -     private ValueReplacer replacer;
  -     public PreCompiler()
  -     {
  -             replacer = new ValueReplacer();
  -     }
  -     /**
  -      * @see ListedHashTreeVisitor#addNode(Object, ListedHashTree)
  -      */
  -     public void addNode(Object node, HashTree subTree)
  -     {
  -             if (node instanceof TestPlan)
  -             {
  -                     replacer.setUserDefinedVariables(
  -                             ((TestPlan) node).getUserDefinedVariables());
  -             }
  -             if (node instanceof TestElement)
  -             {
  -                     try
  -                     {
  -                             replacer.replaceValues((TestElement) node);
  -                     }
  -                     catch (InvalidVariableException e)
  -                     {
  -                             log.error("invalid variables",e);
  -                             testValid = false;
  -                     }
  -             }
  -     }
  -     /**
  -      * @see ListedHashTreeVisitor#subtractNode()
  -      */
  -     public void subtractNode()
  -     {
  -     }
  -     /**
  -      * @see ListedHashTreeVisitor#processPath()
  -      */
  -     public void processPath()
  -     {
  -     }
  +    transient private static Logger log = 
Hierarchy.getDefaultHierarchy().getLoggerFor(JMeterUtils.ENGINE);
  +    private Map userDefinedVariables;
  +    private boolean testValid = true;
  +    private ValueReplacer replacer;
  +    public PreCompiler()
  +    {
  +        replacer = new ValueReplacer();
  +    }
  +    /**
  +     * @see ListedHashTreeVisitor#addNode(Object, ListedHashTree)
  +     */
  +    public void addNode(Object node, HashTree subTree)
  +    {
  +        if (node instanceof TestPlan)
  +        {
  +            replacer.setUserDefinedVariables(((TestPlan) 
node).getUserDefinedVariables());
  +            JMeterVariables vars = new JMeterVariables();
  +            vars.putAll(((TestPlan) node).getUserDefinedVariables());
  +            JMeterContextService.getContext().setVariables(vars);
  +        }
  +        if (node instanceof TestElement)
  +        {
  +            try
  +            {
  +                replacer.replaceValues((TestElement) node);
  +            }
  +            catch (InvalidVariableException e)
  +            {
  +                log.error("invalid variables", e);
  +                testValid = false;
  +            }
  +        }
  +    }
  +    /**
  +     * @see ListedHashTreeVisitor#subtractNode()
  +     */
  +    public void subtractNode()
  +    {}
  +    /**
  +     * @see ListedHashTreeVisitor#processPath()
  +     */
  +    public void processPath()
  +    {}
   }
  
  
  
  1.17      +4 -2      
jakarta-jmeter/src/core/org/apache/jmeter/engine/StandardJMeterEngine.java
  
  Index: StandardJMeterEngine.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/engine/StandardJMeterEngine.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- StandardJMeterEngine.java 5 Feb 2003 05:12:06 -0000       1.16
  +++ StandardJMeterEngine.java 14 Mar 2003 21:15:36 -0000      1.17
  @@ -68,6 +68,7 @@
   import org.apache.jmeter.testelement.TestElement;
   import org.apache.jmeter.testelement.TestListener;
   import org.apache.jmeter.testelement.TestPlan;
  +import org.apache.jmeter.threads.JMeterContextService;
   import org.apache.jmeter.threads.JMeterThread;
   import org.apache.jmeter.threads.JMeterThreadMonitor;
   import org.apache.jmeter.threads.ListenerNotifier;
  @@ -172,6 +173,7 @@
                                        ListedHashTree threadGroupTree = 
(ListedHashTree)searcher.getSubTree(group);
                                        threadGroupTree.add(group,testLevelElements);
                                        threads[i] = new 
JMeterThread(cloneTree(threadGroupTree),this,notifier);
  +                    threads[i].setInitialContext(JMeterContextService.getContext());
                                        
threads[i].setInitialDelay((int)(((float)(group.getRampUp() * 1000) /
                                                        (float)group.getNumThreads()) 
* (float)i));
                                        
threads[i].setThreadName(group.getName()+"-"+(i+1));
  
  
  
  1.4       +3 -2      
jakarta-jmeter/src/core/org/apache/jmeter/engine/util/CompoundVariable.java
  
  Index: CompoundVariable.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/engine/util/CompoundVariable.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- CompoundVariable.java     14 Mar 2003 19:51:13 -0000      1.3
  +++ CompoundVariable.java     14 Mar 2003 21:15:36 -0000      1.4
  @@ -87,7 +87,7 @@
   public class CompoundVariable implements Function
   {
       transient private static Logger log =
  -        Hierarchy.getDefaultHierarchy().getLoggerFor("jmeter.elements");
  +        Hierarchy.getDefaultHierarchy().getLoggerFor(JMeterUtils.ENGINE);
       
       private JMeterVariables threadVars;
        private Map varMap = new HashMap();
  @@ -154,6 +154,7 @@
           while (iter.hasNext())
           {
               Object item = iter.next();
  +            log.debug("executing object: " + item);
               if (item instanceof Function)
               {
                   try
  
  
  
  1.2       +297 -196  
jakarta-jmeter/src/core/org/apache/jmeter/engine/util/ValueReplacer.java
  
  Index: ValueReplacer.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/engine/util/ValueReplacer.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ValueReplacer.java        10 Mar 2003 17:27:57 -0000      1.1
  +++ ValueReplacer.java        14 Mar 2003 21:15:36 -0000      1.2
  @@ -1,17 +1,20 @@
   package org.apache.jmeter.engine.util;
   
  +import java.util.ArrayList;
   import java.util.Collection;
   import java.util.HashMap;
   import java.util.Iterator;
  -import java.util.LinkedList;
   import java.util.List;
   import java.util.Map;
   
   import junit.framework.TestCase;
   
  +import org.apache.jmeter.config.ConfigTestElement;
   import org.apache.jmeter.functions.InvalidVariableException;
   import org.apache.jmeter.testelement.TestElement;
   import org.apache.jmeter.testelement.TestPlan;
  +import org.apache.jmeter.threads.JMeterContextService;
  +import org.apache.jmeter.threads.JMeterVariables;
   import org.apache.jmeter.util.JMeterUtils;
   import org.apache.jmeter.util.StringUtilities;
   import org.apache.log.Hierarchy;
  @@ -25,206 +28,304 @@
    */
   public class ValueReplacer
   {
  -     transient private static Logger log = 
Hierarchy.getDefaultHierarchy().getLoggerFor(JMeterUtils.ELEMENTS);
  -     CompoundVariable masterFunction = new CompoundVariable();
  -     Map variables = new HashMap();
  +    transient private static Logger log = 
Hierarchy.getDefaultHierarchy().getLoggerFor(JMeterUtils.ENGINE);
  +    CompoundVariable masterFunction = new CompoundVariable();
  +    Map variables = new HashMap();
       TestPlan tp;
  -     
  -     public ValueReplacer()
  -     {
  -     }
  -
  -     public ValueReplacer(TestPlan tp)
  -     {
  -             this.tp = tp;
  +
  +    public ValueReplacer()
  +    {
  +        tp = new TestPlan();
  +    }
  +
  +    public ValueReplacer(TestPlan tp)
  +    {
  +        this.tp = tp;
           setUserDefinedVariables(tp.getUserDefinedVariables());
  -     }
  -     
  -     public void setUserDefinedVariables(Map variables)
  -     {
  -             masterFunction.setUserDefinedVariables(variables);
  -             this.variables = variables;
  -     }
  -     
  -     public void replaceValues(TestElement el) throws InvalidVariableException
  -     {
  -             Iterator iter = el.getPropertyNames().iterator();
  -             while(iter.hasNext())
  -             {
  -                     String propName = (String)iter.next();
  -                     Object propValue = el.getProperty(propName);
  -                     if(propValue instanceof String)
  -                     {
  -                             Object newValue = getNewValue((String)propValue);
  -                             el.setProperty(propName,newValue);
  -                     }
  -                     else if(propValue instanceof TestElement)
  -                     {
  -                             replaceValues((TestElement)propValue);
  -                     }
  -                     else if(propValue instanceof Collection)
  -                     {
  -                             
el.setProperty(propName,replaceValues((Collection)propValue));
  -                     }
  -             }
  -     }
  -     
  -     private Object getNewValue(String propValue) throws InvalidVariableException
  -     {
  -             Object newValue = propValue;
  -                             masterFunction.clear();
  -                             masterFunction.setParameters((String)propValue);
  -                             if(masterFunction.hasFunction())
  -                             {
  -                                     newValue = masterFunction.getFunction();
  -                             }
  -                             else if(masterFunction.hasStatics())
  -                             {
  -                                     newValue = 
masterFunction.getStaticSubstitution();
  -                             }
  -                             return newValue;
  -     }
  -    
  -    public void addVariable(String name,String value)
  +    }
  +
  +    public void setUserDefinedVariables(Map variables)
  +    {
  +        masterFunction.setUserDefinedVariables(variables);
  +        this.variables = variables;
  +    }
  +
  +    public void replaceValues(TestElement el) throws InvalidVariableException
  +    {
  +        Iterator iter = el.getPropertyNames().iterator();
  +        while (iter.hasNext())
  +        {
  +            String propName = (String) iter.next();
  +            Object propValue = el.getProperty(propName);
  +            if (propValue instanceof String)
  +            {
  +                Object newValue = getNewValue((String) propValue);
  +                el.setProperty(propName, newValue);
  +            }
  +            else if (propValue instanceof TestElement)
  +            {
  +                replaceValues((TestElement) propValue);
  +            }
  +            else if (propValue instanceof Collection)
  +            {
  +                el.setProperty(propName, replaceValues((Collection) propValue));
  +            }
  +        }
  +    }
  +
  +    private Object getNewValue(String propValue) throws InvalidVariableException
  +    {
  +        Object newValue = propValue;
  +        masterFunction.clear();
  +        masterFunction.setParameters((String) propValue);
  +        log.debug("value replacer looking at: " + propValue);
  +        if (masterFunction.hasFunction())
  +        {
  +            newValue = masterFunction.getFunction();
  +            log.debug("replaced with: " + newValue);
  +        }
  +        else if (masterFunction.hasStatics())
  +        {
  +            newValue = masterFunction.getStaticSubstitution();
  +            log.debug("replaced with: " + newValue);
  +        }
  +        return newValue;
  +    }
  +
  +    public void addVariable(String name, String value)
       {
  -        tp.addParameter(name,value);
  +        tp.addParameter(name, value);
           setUserDefinedVariables(tp.getUserDefinedVariables());
       }
  -     
  -     public Collection replaceValues(Collection values) throws 
InvalidVariableException
  -     {
  -             Collection newColl = null;
  -             try {
  -                     newColl = (Collection)values.getClass().newInstance();
  -             } catch(Exception e) {
  -                     log.error("",e);
  -                     return values;
  -             } 
  -             Iterator iter = values.iterator();
  -             while(iter.hasNext())
  -             {
  -                     Object val = iter.next();
  -                     if(val instanceof TestElement)
  -                     {
  -                             replaceValues((TestElement)val);
  -                     }
  -                     else if(val instanceof String)
  -                     {
  -                             val = getNewValue((String)val);
  -                     }
  -                     else if(val instanceof Collection)
  -                     {
  -                             val = replaceValues((Collection)val);
  -                     }
  -                     newColl.add(val);
  -             }
  -             return newColl;
  -     }
  -     
  -     /**
  -      * Replaces raw values with user-defined variable names.
  -      */
  -     public Collection reverseReplace(Collection values)
  -     {
  -             Collection newColl = null;
  -             try {
  -                     newColl = (Collection)values.getClass().newInstance();
  -             } catch(Exception e) {
  -                     log.error("",e);
  -                     return values;
  -             } 
  -             Iterator iter = values.iterator();
  -             while(iter.hasNext())
  -             {
  -                     Object val = iter.next();
  -                     if(val instanceof TestElement)
  -                     {
  -                             reverseReplace((TestElement)val);
  -                     }
  -                     else if(val instanceof String)
  -                     {
  -                             val = substituteValues((String)val);
  -                     }
  -                     else if(val instanceof Collection)
  -                     {
  -                             val = reverseReplace((Collection)val);
  -                     }
  -                     newColl.add(val);
  -             }
  -             return newColl;
  -     } 
  -     
  -     /**
  -      * Replaces raw values with user-defined variable names.
  -      */
  -     public void reverseReplace(TestElement el)
  -     {
  -             Iterator iter = el.getPropertyNames().iterator();
  -             while(iter.hasNext())
  -             {
  -                     String propName = (String)iter.next();
  -                     Object propValue = el.getProperty(propName);
  -                     if(propValue instanceof String)
  -                     {
  -                             Object newValue = substituteValues((String)propValue);
  -                             el.setProperty(propName,newValue);
  -                     }
  -                     else if(propValue instanceof TestElement)
  -                     {
  -                             reverseReplace((TestElement)propValue);
  -                     }
  -                     else if(propValue instanceof Collection)
  -                     {
  -                             
el.setProperty(propName,reverseReplace((Collection)propValue));
  -                     }
  -             }
  -     }
  -     
  -     private String substituteValues(String input)
  -     {
  -             Iterator iter = variables.keySet().iterator();
  -             while(iter.hasNext())
  -             {
  -                     String key = (String)iter.next();
  -                     String value = (String)variables.get(key);
  -                     input = StringUtilities.substitute(input,value,"${"+key+"}");
  -             }
  -             return input;
  -     }
  -                     
  -                     
  -     
  -     public static class Test extends TestCase
  -     {
  -             TestPlan variables;
  -             
  -             public Test(String name)
  -             {
  -                     super(name);
  -             }
  -             
  -             public void setUp()
  -             {
  -                     variables = new TestPlan();
  -                     variables.addParameter("server","jakarta.apache.org");
  -                     variables.addParameter("username","jack");
  -                     variables.addParameter("password","jacks_password");
  -                     variables.addParameter("regex",".*");
  -             }
  -             
  -             public void testReverseReplacement() throws Exception
  -             {
  -                     ValueReplacer replacer = new ValueReplacer(variables);
  +
  +    public Collection replaceValues(Collection values) throws 
InvalidVariableException
  +    {
  +        Collection newColl = null;
  +        try
  +        {
  +            newColl = (Collection) values.getClass().newInstance();
  +        }
  +        catch (Exception e)
  +        {
  +            log.error("", e);
  +            return values;
  +        }
  +        Iterator iter = values.iterator();
  +        while (iter.hasNext())
  +        {
  +            Object val = iter.next();
  +            if (val instanceof TestElement)
  +            {
  +                replaceValues((TestElement) val);
  +            }
  +            else if (val instanceof String)
  +            {
  +                val = getNewValue((String) val);
  +            }
  +            else if (val instanceof Collection)
  +            {
  +                val = replaceValues((Collection) val);
  +            }
  +            newColl.add(val);
  +        }
  +        return newColl;
  +    }
  +
  +    /**
  +     * Replaces raw values with user-defined variable names.
  +     */
  +    public Collection reverseReplace(Collection values)
  +    {
  +        Collection newColl = null;
  +        try
  +        {
  +            newColl = (Collection) values.getClass().newInstance();
  +        }
  +        catch (Exception e)
  +        {
  +            log.error("", e);
  +            return values;
  +        }
  +        Iterator iter = values.iterator();
  +        while (iter.hasNext())
  +        {
  +            Object val = iter.next();
  +            if (val instanceof TestElement)
  +            {
  +                reverseReplace((TestElement) val);
  +            }
  +            else if (val instanceof String)
  +            {
  +                val = substituteValues((String) val);
  +            }
  +            else if (val instanceof Collection)
  +            {
  +                val = reverseReplace((Collection) val);
  +            }
  +            newColl.add(val);
  +        }
  +        return newColl;
  +    }
  +
  +    /**
  +         * Remove variables references and replace with the raw string values.
  +         */
  +    public Collection undoReverseReplace(Collection values)
  +    {
  +        Collection newColl = null;
  +        try
  +        {
  +            newColl = (Collection) values.getClass().newInstance();
  +        }
  +        catch (Exception e)
  +        {
  +            log.error("", e);
  +            return values;
  +        }
  +        Iterator iter = values.iterator();
  +        while (iter.hasNext())
  +        {
  +            Object val = iter.next();
  +            if (val instanceof TestElement)
  +            {
  +                undoReverseReplace((TestElement) val);
  +            }
  +            else if (val instanceof String)
  +            {
  +                val = substituteReferences((String) val);
  +            }
  +            else if (val instanceof Collection)
  +            {
  +                val = undoReverseReplace((Collection) val);
  +            }
  +            newColl.add(val);
  +        }
  +        return newColl;
  +    }
  +
  +    /**
  +     * Remove variables references and replace with the raw string values.
  +     * @param el
  +     */
  +    public void undoReverseReplace(TestElement el)
  +    {
  +        Iterator iter = el.getPropertyNames().iterator();
  +        while (iter.hasNext())
  +        {
  +            String propName = (String) iter.next();
  +            Object propValue = el.getProperty(propName);
  +            if (propValue instanceof String)
  +            {
  +                Object newValue = substituteReferences((String) propValue);
  +                el.setProperty(propName, newValue);
  +            }
  +            else if (propValue instanceof TestElement)
  +            {
  +                undoReverseReplace((TestElement) propValue);
  +            }
  +            else if (propValue instanceof Collection)
  +            {
  +                el.setProperty(propName, undoReverseReplace((Collection) 
propValue));
  +            }
  +        }
  +    }
  +
  +    /**
  +     * Replaces raw values with user-defined variable names.
  +     */
  +    public void reverseReplace(TestElement el)
  +    {
  +        Iterator iter = el.getPropertyNames().iterator();
  +        while (iter.hasNext())
  +        {
  +            String propName = (String) iter.next();
  +            Object propValue = el.getProperty(propName);
  +            if (propValue instanceof String)
  +            {
  +                Object newValue = substituteValues((String) propValue);
  +                el.setProperty(propName, newValue);
  +            }
  +            else if (propValue instanceof TestElement)
  +            {
  +                reverseReplace((TestElement) propValue);
  +            }
  +            else if (propValue instanceof Collection)
  +            {
  +                el.setProperty(propName, reverseReplace((Collection) propValue));
  +            }
  +        }
  +    }
  +
  +    private String substituteValues(String input)
  +    {
  +        Iterator iter = variables.keySet().iterator();
  +        while (iter.hasNext())
  +        {
  +            String key = (String) iter.next();
  +            String value = (String) variables.get(key);
  +            input = StringUtilities.substitute(input, value, "${" + key + "}");
  +        }
  +        return input;
  +    }
  +
  +    private String substituteReferences(String input)
  +    {
  +        Iterator iter = variables.keySet().iterator();
  +        while (iter.hasNext())
  +        {
  +            String key = (String) iter.next();
  +            String value = (String) variables.get(key);
  +            input = StringUtilities.substitute(input, "${" + key + "}", value);
  +        }
  +        return input;
  +    }
  +
  +    public static class Test extends TestCase
  +    {
  +        TestPlan variables;
  +
  +        public Test(String name)
  +        {
  +            super(name);
  +        }
  +
  +        public void setUp()
  +        {
  +            variables = new TestPlan();
  +            variables.addParameter("server", "jakarta.apache.org");
  +            variables.addParameter("username", "jack");
  +            variables.addParameter("password", "jacks_password");
  +            variables.addParameter("regex", ".*");
  +            JMeterVariables vars = new JMeterVariables();
  +            vars.put("server", "jakarta.apache.org");
  +           JMeterContextService.getContext().setVariables(vars);
  +        }
  +
  +        public void testReverseReplacement() throws Exception
  +        {
  +            ValueReplacer replacer = new ValueReplacer(variables);
               assertTrue(variables.getUserDefinedVariables().containsKey("server"));
               assertTrue(replacer.variables.containsKey("server"));
  -                     TestElement element = new TestPlan();
  -                     element.setProperty("domain","jakarta.apache.org");
  -                     List args = new LinkedList();
  -                     args.add("username is jack");
  -                     args.add("jacks_password");
  -                     element.setProperty("args",args);
  -                     replacer.reverseReplace(element);
  -                     assertEquals("${server}",element.getProperty("domain"));
  -             }
  -     }
  +            TestElement element = new TestPlan();
  +            element.setProperty("domain", "jakarta.apache.org");
  +            List args = new ArrayList();
  +            args.add("username is jack");
  +            args.add("jacks_password");
  +            element.setProperty("args", args);
  +            replacer.reverseReplace(element);
  +            assertEquals("${server}", element.getProperty("domain"));
  +            args = (List) element.getProperty("args");
  +            assertEquals("${password}", args.get(1));
  +        }
  +
  +        public void testReplace() throws Exception
  +        {
  +            ValueReplacer replacer = new ValueReplacer();
  +            replacer.setUserDefinedVariables(variables.getUserDefinedVariables());
  +            TestElement element = new ConfigTestElement();
  +            element.setProperty("domain", "${server}");
  +            replacer.replaceValues(element);
  +            assertEquals("jakarta.apache.org", ((CompoundVariable) 
element.getProperty("domain")).execute());
  +        }
  +    }
   }
  
  
  
  1.2       +1 -1      
jakarta-jmeter/src/core/org/apache/jmeter/threads/JMeterContext.java
  
  Index: JMeterContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/threads/JMeterContext.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- JMeterContext.java        28 Feb 2003 21:50:32 -0000      1.1
  +++ JMeterContext.java        14 Mar 2003 21:15:36 -0000      1.2
  @@ -29,7 +29,7 @@
                return variables;
        }
        
  -     void setVariables( JMeterVariables vars ) {
  +     public void setVariables( JMeterVariables vars ) {
                this.variables = vars;
        }
        
  
  
  
  1.17      +8 -3      
jakarta-jmeter/src/core/org/apache/jmeter/threads/JMeterThread.java
  
  Index: JMeterThread.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/threads/JMeterThread.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- JMeterThread.java 28 Feb 2003 21:52:23 -0000      1.16
  +++ JMeterThread.java 14 Mar 2003 21:15:36 -0000      1.17
  @@ -114,6 +114,11 @@
           threadListeners = threadListenerSearcher.getSearchResults();
           notifier = note;
       }
  +    
  +    public void setInitialContext(JMeterContext context)
  +    {
  +        threadVars.putAll(context.getVariables());
  +    }
   
       public void setThreadName(String threadName)
       {
  
  
  
  1.4       +59 -42    
jakarta-jmeter/src/core/org/apache/jmeter/threads/JMeterVariables.java
  
  Index: JMeterVariables.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/threads/JMeterVariables.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- JMeterVariables.java      14 Dec 2002 01:23:44 -0000      1.3
  +++ JMeterVariables.java      14 Mar 2003 21:15:36 -0000      1.4
  @@ -1,6 +1,7 @@
   package org.apache.jmeter.threads;
   
   import java.util.HashMap;
  +import java.util.Iterator;
   import java.util.Map;
   
   /**
  @@ -11,47 +12,63 @@
    * To enable and disable the creation of type comments go to
    * Window>Preferences>Java>Code Generation.
    */
  -public class JMeterVariables {
  -     private Map variables = new HashMap();
  -     private int iteration = 0;      
  -     
  -     public JMeterVariables()
  -     {
  -     }
  -     
  -     public String getThreadName()
  -     {
  -             return Thread.currentThread().getName();
  -     }
  -     
  -     public int getIteration()
  -     {
  -             return iteration;
  -     }
  -     
  -     public void incIteration()
  -     {
  -             iteration++;
  -     }
  -     
  -     public void initialize()
  -     {
  -             variables.clear();
  -     }
  -     
  -     public void put(String key,String value)
  -     {
  -             variables.put(key,value);
  -     }
  -     
  -     public String get(String key)
  -     {
  -             String val = (String)variables.get(key);
  -             if(val == null)
  -             {
  -                     return "";
  -             }
  -             return val;
  -     }
  +public class JMeterVariables
  +{
  +    private Map variables = new HashMap();
  +    private int iteration = 0;
  +
  +    public JMeterVariables()
  +    {}
  +
  +    public String getThreadName()
  +    {
  +        return Thread.currentThread().getName();
  +    }
  +
  +    public int getIteration()
  +    {
  +        return iteration;
  +    }
  +
  +    public void incIteration()
  +    {
  +        iteration++;
  +    }
  +
  +    public void initialize()
  +    {
  +        variables.clear();
  +    }
  +
  +    public void put(String key, String value)
  +    {
  +        variables.put(key, value);
  +    }
  +
  +    public void putAll(Map vars)
  +    {
  +        Iterator iter = vars.keySet().iterator();
  +        while (iter.hasNext())
  +        {
  +            String item = (String) iter.next();
  +            put(item, (String) vars.get(item));
  +
  +        }
  +    }
  +    
  +    public void putAll(JMeterVariables vars)
  +    {
  +        putAll(vars.variables);
  +    }
  +
  +    public String get(String key)
  +    {
  +        String val = (String) variables.get(key);
  +        if (val == null)
  +        {
  +            return "";
  +        }
  +        return val;
  +    }
   
   }
  
  
  
  1.15      +6 -7      
jakarta-jmeter/src/core/org/apache/jmeter/threads/TestCompiler.java
  
  Index: TestCompiler.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/threads/TestCompiler.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- TestCompiler.java 21 Feb 2003 18:19:44 -0000      1.14
  +++ TestCompiler.java 14 Mar 2003 21:15:36 -0000      1.15
  @@ -340,8 +340,7 @@
               assertEquals("A test value", sampler.getProperty("test.property"));
           }
   
  -        class TestSampler extends AbstractSampler
  -        {
  +        class TestSampler extends AbstractSampler implements PerSampleClonable {
               public void addCustomTestElement(TestElement t)
               {}
               public org.apache.jmeter.samplers.SampleResult 
sample(org.apache.jmeter.samplers.Entry e)
  
  
  
  1.1                  
jakarta-jmeter/src/jorphan/org/apache/jorphan/gui/ObjectTableModel.java
  
  Index: ObjectTableModel.java
  ===================================================================
  package org.apache.jorphan.gui;
  
  import java.lang.reflect.InvocationTargetException;
  import java.lang.reflect.Method;
  import java.util.ArrayList;
  import java.util.Arrays;
  import java.util.Iterator;
  import java.util.List;
  
  import javax.swing.event.TableModelEvent;
  import javax.swing.table.DefaultTableModel;
  
  import org.apache.jorphan.logging.LoggingManager;
  import org.apache.log.Logger;
  
  /**
   * @author Administrator
   *
   * To change this generated comment edit the template variable "typecomment":
   * Window>Preferences>Java>Templates.
   */
  public class ObjectTableModel extends DefaultTableModel
  {
      private static Logger log = LoggingManager.getLoggerFor("jorphan.gui");
      private transient ArrayList objects = new ArrayList();
      private transient List headers = new ArrayList();
      private transient ArrayList classes = new ArrayList();
      private transient Class objectClass;
  
      private transient ArrayList setMethods = new ArrayList();
      private transient ArrayList getMethods = new ArrayList();
  
      public ObjectTableModel(String[] headers, String[] propertyNames, Class[] 
propertyClasses, Class[] renderClasses, 
              Object sampleObject)
      {
          this.headers.addAll(Arrays.asList(headers));
          this.classes.addAll(Arrays.asList(renderClasses));
          objectClass = sampleObject.getClass();
          Class[] emptyClasses = new Class[0];
          for (int i = 0; i < propertyNames.length; i++)
          {
              propertyNames[i] = propertyNames[i].substring(0, 1).toUpperCase() + 
propertyNames[i].substring(1);
              try
              {
                  if (!propertyClasses[i].equals(Boolean.class) && 
!propertyClasses[i].equals(boolean.class))
                  {
                      getMethods.add(objectClass.getMethod("get" + propertyNames[i], 
emptyClasses));
                  }
                  else
                  {
                      getMethods.add(objectClass.getMethod("is" + propertyNames[i], 
emptyClasses));
                  }
                  setMethods.add(objectClass.getMethod("set" + propertyNames[i], new 
Class[]{propertyClasses[i]}));
              }
              catch (NoSuchMethodException e)
              {
                  log.error("Invalid Method name for class: " + objectClass, e);
              }
          }
      }
      
      public Iterator iterator()
      {
          return objects.iterator();
      }
      
      public void clearData()
      {
          int size = getRowCount();
          objects.clear();
          super.fireTableRowsDeleted(0,size);
      }
      
      public void addRow(Object value)
      {
          objects.add(value);
          super.fireTableRowsInserted(objects.size()-1,objects.size());
      }
  
      /**
       * @see javax.swing.table.TableModel#getColumnCount()
       */
      public int getColumnCount()
      {
          return headers.size();
      }
  
      /**
       * @see javax.swing.table.TableModel#getColumnName(int)
       */
      public String getColumnName(int col)
      {
          return (String) headers.get(col);
      }
  
      /**
       * @see javax.swing.table.TableModel#getRowCount()
       */
      public int getRowCount()
      {
          if(objects == null)
          {
              return 0;
          }
          return objects.size();
      }
  
      /**
       * @see javax.swing.table.TableModel#getValueAt(int, int)
       */
      public Object getValueAt(int row, int col)
      {
          Object value = objects.get(row);
          Method getMethod = (Method) getMethods.get(col);
          try
          {
              return getMethod.invoke(value, new Object[0]);
          }
          catch (IllegalAccessException e)
          {
              log.error("Illegal method access",e);
          }
          catch (InvocationTargetException e)
          {
              log.error("incorrect method access",e);
          }
          return null;
      }
  
      /**
       * @see javax.swing.table.TableModel#isCellEditable(int, int)
       */
      public boolean isCellEditable(int arg0, int arg1)
      {
          return true;
      }
  
      /**
       * @see javax.swing.table.DefaultTableModel#moveRow(int, int, int)
       */
      public void moveRow(int start, int end, int to)
      {
          List subList = objects.subList(start,end);
          for(int x = end-1;x >= start;x--)
          {
              objects.remove(x);
          }
          objects.addAll(to,subList);
          super.fireTableChanged(new TableModelEvent(this));
      }
  
      /**
       * @see javax.swing.table.DefaultTableModel#removeRow(int)
       */
      public void removeRow(int row)
      {
          objects.remove(row);
          super.fireTableRowsDeleted(row,row);
      }
  
      /**
       * @see javax.swing.table.TableModel#setValueAt(java.lang.Object, int, int)
       */
      public void setValueAt(Object cellValue, int row, int col)
      {
          Object value = objects.get(row);
          Method setMethod = (Method)setMethods.get(col);
          try
          {
              setMethod.invoke(value,new Object[]{cellValue});
          }
          catch (IllegalAccessException e)
          {
              log.error("Illegal method access",e);
          }
          catch (InvocationTargetException e)
          {
              log.error("incorrect method access",e);
          }
          super.fireTableDataChanged();
      }
  
      /**
       * @see javax.swing.table.TableModel#getColumnClass(int)
       */
      public Class getColumnClass(int arg0)
      {
          return (Class)classes.get(arg0);
      }
  
  }
  
  
  
  1.3       +4 -4      
jakarta-jmeter/src/protocol/ftp/org/apache/jmeter/protocol/ftp/sampler/FTPSampler.java
  
  Index: FTPSampler.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/protocol/ftp/org/apache/jmeter/protocol/ftp/sampler/FTPSampler.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FTPSampler.java   23 Aug 2002 22:51:46 -0000      1.2
  +++ FTPSampler.java   14 Mar 2003 21:15:36 -0000      1.3
  @@ -62,6 +62,7 @@
   import org.apache.jmeter.samplers.SampleResult;
   import org.apache.jmeter.samplers.Entry;
   import org.apache.jmeter.samplers.AbstractSampler;
  +import org.apache.jmeter.testelement.PerSampleClonable;
   import org.apache.jmeter.testelement.TestElement;
   
   /************************************************************
  @@ -72,8 +73,7 @@
    [EMAIL PROTECTED]    $Revision$
    ***********************************************************/
   
  -public class FTPSampler extends AbstractSampler
  -{
  +public class FTPSampler extends AbstractSampler implements PerSampleClonable {
        public final static String SERVER = "FTPSampler.server";
        public final static String FILENAME = "FTPSampler.filename";
   
  
  
  
  1.5       +1 -1      
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/config/MultipartUrlConfig.java
  
  Index: MultipartUrlConfig.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/config/MultipartUrlConfig.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- MultipartUrlConfig.java   27 Dec 2002 15:51:18 -0000      1.4
  +++ MultipartUrlConfig.java   14 Mar 2003 21:15:36 -0000      1.5
  @@ -153,7 +153,7 @@
                HTTPArgument arg = new HTTPArgument(name,value,true);
                if(arg.getName().equals(arg.getEncodedName()) && 
arg.getValue().equals(arg.getEncodedValue()))
                {
  -                     arg.setAlwaysEncode(false);
  +                     arg.setAlwaysEncoded(false);
                }
                args.addArgument(new HTTPArgument(name,value,true));
        }
  
  
  
  1.8       +19 -38    
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/gui/HTTPArgumentsPanel.java
  
  Index: HTTPArgumentsPanel.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/gui/HTTPArgumentsPanel.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- HTTPArgumentsPanel.java   18 Feb 2003 16:03:45 -0000      1.7
  +++ HTTPArgumentsPanel.java   14 Mar 2003 21:15:36 -0000      1.8
  @@ -7,11 +7,10 @@
   
   import org.apache.jmeter.config.Arguments;
   import org.apache.jmeter.config.gui.ArgumentsPanel;
  -import org.apache.jmeter.gui.util.PowerTableModel;
   import org.apache.jmeter.protocol.http.util.HTTPArgument;
   import org.apache.jmeter.testelement.TestElement;
   import org.apache.jmeter.util.JMeterUtils;
  -import org.apache.jorphan.collections.Data;
  +import org.apache.jorphan.gui.ObjectTableModel;
   
   /**
    * @author Administrator
  @@ -27,9 +26,12 @@
        
        
        protected void initializeTableModel() {
  -             tableModel = new PowerTableModel(new 
String[]{Arguments.COLUMN_NAMES[0],Arguments.COLUMN_NAMES[1],
  +             tableModel = new ObjectTableModel(new 
String[]{Arguments.COLUMN_NAMES[0],Arguments.COLUMN_NAMES[1],
                                ENCODE_OR_NOT,INCLUDE_EQUALS},
  -                             new 
Class[]{String.class,String.class,Boolean.class,Boolean.class});
  +                             new 
String[]{"name","value","alwaysEncoded","useEquals"},
  +                new Class[]{String.class,Object.class,boolean.class,boolean.class},
  +                new Class[]{String.class,String.class,Boolean.class,Boolean.class},
  +                new HTTPArgument());
        }
       
       protected void sizeColumns(JTable table)
  @@ -40,6 +42,14 @@
           fixSize(table.getColumn(ENCODE_OR_NOT));
           table.setAutoResizeMode(resizeMode);  
       }
  +    
  +    protected Object makeNewArgument()
  +    {
  +        HTTPArgument arg = new HTTPArgument("","");
  +        arg.setAlwaysEncoded(false);
  +        arg.setUseEquals(true);
  +        return arg;
  +    }
   
       private void fixSize(TableColumn column)
       {
  @@ -62,44 +72,16 @@
         ***************************************/
        public TestElement createTestElement()
        {
  -             Data model = tableModel.getData();
  +             Iterator modelData = tableModel.iterator();
                Arguments args = new Arguments();
  -             model.reset();
  -             while(model.next())
  +             while(modelData.hasNext())
                {
  -                     
if(((Boolean)model.getColumnValue(ENCODE_OR_NOT)).booleanValue())
  -                     {
  -                HTTPArgument arg = new 
HTTPArgument((String)model.getColumnValue(Arguments.COLUMN_NAMES[0]),
  -                model.getColumnValue(Arguments.COLUMN_NAMES[1]));
  -                setMetaData(arg);
  -                             args.addArgument(arg);
  -                     }
  -                     else
  -                     {
  -                             HTTPArgument arg = new HTTPArgument();
  -                             arg.setAlwaysEncode(false);
  -                             
arg.setName((String)model.getColumnValue(Arguments.COLUMN_NAMES[0]));
  -                             
arg.setValue(model.getColumnValue(Arguments.COLUMN_NAMES[1]));
  -                setMetaData(arg);
  -                             args.addArgument(arg);
  -                     }
  +            HTTPArgument arg = (HTTPArgument)modelData.next();
  +            args.addArgument(arg);
                }
                this.configureTestElement(args);
                return (TestElement)args.clone();
        }
  -    
  -    protected void setMetaData(HTTPArgument arg)
  -    {
  -        Data model = tableModel.getData();
  -        if(((Boolean)model.getColumnValue(INCLUDE_EQUALS)).booleanValue() || 
model.getColumnValue(Arguments.COLUMN_NAMES[1]).toString().length() > 0)
  -        {
  -            arg.setMetaData("=");
  -        }
  -        else
  -        {
  -            arg.setMetaData("");
  -        }
  -    }
        
        /****************************************
         * !ToDo (Method description)
  @@ -117,8 +99,7 @@
                        while(iter.hasNext())
                        {
                                HTTPArgument arg = (HTTPArgument)iter.next();
  -                             tableModel.addRow(new 
Object[]{arg.getName(),arg.getValue(),
  -                                             new Boolean(arg.getAlwaysEncode()), 
new Boolean(isMetaDataNormal(arg))});
  +                             tableModel.addRow(arg);
                        }
                }
                checkDeleteStatus();
  
  
  
  1.26      +5 -5      
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java
  
  Index: HTTPSampler.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- HTTPSampler.java  11 Mar 2003 19:04:19 -0000      1.25
  +++ HTTPSampler.java  14 Mar 2003 21:15:36 -0000      1.26
  @@ -76,6 +76,7 @@
   import org.apache.jmeter.samplers.AbstractSampler;
   import org.apache.jmeter.samplers.Entry;
   import org.apache.jmeter.samplers.SampleResult;
  +import org.apache.jmeter.testelement.PerSampleClonable;
   import org.apache.jmeter.testelement.TestElement;
   import org.apache.jmeter.util.SSLManager;
   import org.apache.jorphan.util.JOrphanUtils;
  @@ -95,8 +96,7 @@
    [EMAIL PROTECTED]   $Date$
    [EMAIL PROTECTED]   $Revision$
    ***************************************/
  -public class HTTPSampler extends AbstractSampler
  -{
  +public class HTTPSampler extends AbstractSampler implements PerSampleClonable {
       public final static String HEADERS = "headers";
       public final static String HEADER = "header";
       public final static String ARGUMENTS = "HTTPsampler.Arguments";
  @@ -261,7 +261,7 @@
           HTTPArgument arg = new HTTPArgument(name, value, metaData, true);
           if (arg.getName().equals(arg.getEncodedName()) && 
arg.getValue().equals(arg.getEncodedValue()))
           {
  -            arg.setAlwaysEncode(false);
  +            arg.setAlwaysEncoded(false);
           }
           args.addArgument(arg);
       }
  
  
  
  1.8       +31 -5     
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/util/HTTPArgument.java
  
  Index: HTTPArgument.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/util/HTTPArgument.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- HTTPArgument.java 21 Feb 2003 18:19:44 -0000      1.7
  +++ HTTPArgument.java 14 Mar 2003 21:15:36 -0000      1.8
  @@ -75,6 +75,7 @@
   {
   
       private static final String ALWAYS_ENCODE = "HTTPArgument.always_encode";
  +    private static final String USE_EQUALS = "HTTPArgument.use_equals";
   
       private static EncoderCache cache = new EncoderCache(1000);
   
  @@ -90,13 +91,38 @@
           this(name, value, false);
           this.setMetaData(metadata);
       }
  +    
  +    public void setUseEquals(boolean ue)
  +    {
  +        if(ue)
  +        {
  +            setMetaData("=");
  +        }
  +        else
  +        {
  +            setMetaData("");
  +        }
  +        setProperty(USE_EQUALS,new Boolean(ue));
  +    }
  +    
  +    public boolean isUseEquals()
  +    {
  +        boolean eq = getPropertyAsBoolean(USE_EQUALS);
  +        if(getMetaData().equals("=") || (getValue() != null && 
getValue().toString().length() > 0))
  +        {
  +            setUseEquals(true);
  +            return true;
  +        }
  +        return eq;
  +        
  +    }
   
  -    public void setAlwaysEncode(boolean ae)
  +    public void setAlwaysEncoded(boolean ae)
       {
           setProperty(ALWAYS_ENCODE, new Boolean(ae));
       }
   
  -    public boolean getAlwaysEncode()
  +    public boolean isAlwaysEncoded()
       {
           return getPropertyAsBoolean(ALWAYS_ENCODE);
       }
  @@ -114,7 +140,7 @@
   
       public HTTPArgument(String name, Object value, boolean alreadyEncoded)
       {
  -        setAlwaysEncode(true);
  +        setAlwaysEncoded(true);
           if (alreadyEncoded)
           {
               name = URLDecoder.decode(name);
  @@ -156,7 +182,7 @@
   
       public String getEncodedValue()
       {
  -        if (getAlwaysEncode())
  +        if (isAlwaysEncoded())
           {
               return cache.getEncoded(getValue().toString());
           }
  @@ -168,7 +194,7 @@
   
       public String getEncodedName()
       {
  -        if (getAlwaysEncode())
  +        if (isAlwaysEncoded())
           {
               return cache.getEncoded(getName());
           }
  
  
  
  1.5       +4 -2      
jakarta-jmeter/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JavaSampler.java
  
  Index: JavaSampler.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JavaSampler.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- JavaSampler.java  30 Aug 2002 14:43:20 -0000      1.4
  +++ JavaSampler.java  14 Mar 2003 21:15:37 -0000      1.5
  @@ -64,6 +64,7 @@
   import org.apache.jmeter.samplers.AbstractSampler;
   import org.apache.jmeter.samplers.Entry;
   import org.apache.jmeter.samplers.SampleResult;
  +import org.apache.jmeter.testelement.PerThreadClonable;
   import org.apache.jmeter.testelement.TestElement;
   import org.apache.log.Hierarchy;
   import org.apache.log.Logger;
  @@ -73,7 +74,8 @@
    */
   
   
  -public class JavaSampler extends AbstractSampler implements JavaSamplerClient {
  +public class JavaSampler extends AbstractSampler
  +     implements JavaSamplerClient, PerThreadClonable {
   
        /** Handle to Java client. **/
        
  @@ -264,4 +266,4 @@
                return sb.toString();
        }
   
  -}
  \ No newline at end of file
  +}
  
  
  
  1.11      +5 -4      
jakarta-jmeter/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSampler.java
  
  Index: JDBCSampler.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSampler.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- JDBCSampler.java  12 Jan 2003 01:28:40 -0000      1.10
  +++ JDBCSampler.java  14 Mar 2003 21:15:37 -0000      1.11
  @@ -70,6 +70,7 @@
   import org.apache.jmeter.samplers.AbstractSampler;
   import org.apache.jmeter.samplers.Entry;
   import org.apache.jmeter.samplers.SampleResult;
  +import org.apache.jmeter.testelement.PerSampleClonable;
   import org.apache.jmeter.testelement.TestElement;
   import org.apache.jmeter.testelement.TestListener;
   import org.apache.log.Hierarchy;
  @@ -82,8 +83,8 @@
    [EMAIL PROTECTED]    $Date$
    [EMAIL PROTECTED]    $Revision$
    ***********************************************************/
  -public class JDBCSampler extends AbstractSampler implements TestListener
  -{
  +public class JDBCSampler extends AbstractSampler
  +     implements TestListener, PerSampleClonable {
       transient private static Logger log =
               Hierarchy.getDefaultHierarchy().getLoggerFor("jmeter.protocol.jdbc");
       public final static String URL = "JDBCSampler.url";
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to