You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by ms...@apache.org on 2003/05/05 19:23:02 UTC

cvs commit: jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy ProxyControl.java

mstover1    2003/05/05 10:23:02

  Modified:    src/components/org/apache/jmeter/visualizers
                        TableVisualizer.java
               src/core/org/apache/jmeter/engine/util ValueReplacer.java
               src/core/org/apache/jmeter/gui/action Copy.java Load.java
               src/core/org/apache/jmeter/gui/util JMeterMenuBar.java
                        MenuFactory.java
               src/core/org/apache/jmeter/reporters ResultCollector.java
               src/core/org/apache/jmeter/testelement/property
                        CollectionProperty.java DoubleProperty.java
                        FloatProperty.java IntegerProperty.java
                        LongProperty.java MapProperty.java
                        TestElementProperty.java
               src/core/org/apache/jmeter/visualizers/gui
                        AbstractVisualizer.java
               src/protocol/http/org/apache/jmeter/protocol/http/proxy
                        ProxyControl.java
  Added:       src/core/org/apache/jmeter/engine/util
                        AbstractTransformer.java
                        ReplaceFunctionsWithStrings.java
                        ReplaceStringWithFunctions.java
                        UndoVariableReplacement.java ValueTransformer.java
               src/core/org/apache/jmeter/testelement/property
                        MultiProperty.java NumberProperty.java
  Log:
  Various refactorings to reduce duplicate code
  Fixed bug that caused visualizers to clear at start of test run
  
  Revision  Changes    Path
  1.9       +2 -1      jakarta-jmeter/src/components/org/apache/jmeter/visualizers/TableVisualizer.java
  
  Index: TableVisualizer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/visualizers/TableVisualizer.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- TableVisualizer.java	23 Apr 2003 18:52:07 -0000	1.8
  +++ TableVisualizer.java	5 May 2003 17:23:01 -0000	1.9
  @@ -164,6 +164,7 @@
        ***************************************/
       public synchronized void clear()
       {
  +        log.warn("Clear called",new Exception());
           // this.graph.clear();
           model.clear();
           dataField.setText("0000");
  
  
  
  1.6       +37 -359   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.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ValueReplacer.java	15 Apr 2003 12:37:49 -0000	1.5
  +++ ValueReplacer.java	5 May 2003 17:23:01 -0000	1.6
  @@ -15,16 +15,13 @@
   import org.apache.jmeter.testelement.TestElement;
   import org.apache.jmeter.testelement.TestPlan;
   import org.apache.jmeter.testelement.property.CollectionProperty;
  -import org.apache.jmeter.testelement.property.FunctionProperty;
   import org.apache.jmeter.testelement.property.JMeterProperty;
  -import org.apache.jmeter.testelement.property.MapProperty;
  +import org.apache.jmeter.testelement.property.MultiProperty;
   import org.apache.jmeter.testelement.property.PropertyIterator;
   import org.apache.jmeter.testelement.property.StringProperty;
  -import org.apache.jmeter.testelement.property.TestElementProperty;
   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;
   import org.apache.log.Logger;
   
  @@ -59,384 +56,65 @@
   
       public void replaceValues(TestElement el) throws InvalidVariableException
       {
  -        PropertyIterator iter = el.propertyIterator();
  -        List newProps = new LinkedList();
  -        while (iter.hasNext())
  -        {
  -            JMeterProperty prop = iter.next();
  -            if (prop instanceof TestElementProperty)
  -            {
  -                replaceValues((TestElement) prop.getObjectValue());
  -            }
  -            else if (prop instanceof CollectionProperty)
  -            {
  -                replaceValues((CollectionProperty) prop);
  -            }
  -            else if (prop instanceof MapProperty)
  -            {
  -                replaceValues((MapProperty) prop);
  -            }
  -            else if (prop instanceof StringProperty)
  -            {
  -                JMeterProperty newValue = getNewValue((StringProperty) prop);
  -                newProps.add(newValue);
  -            }
  -        }
  -        Iterator props = newProps.iterator();
  -        while (props.hasNext())
  -        {
  -            el.setProperty((JMeterProperty) props.next());
  -        }
  -    }
  -
  -    private JMeterProperty getNewValue(StringProperty prop) throws InvalidVariableException
  -    {
  -        JMeterProperty newValue = prop;
  -        masterFunction.clear();
  -        masterFunction.setParameters(prop.getStringValue());
  -        log.debug("value replacer looking at: " + prop.getStringValue());
  -        if (masterFunction.hasFunction())
  -        {
  -            newValue = new FunctionProperty(prop.getName(), masterFunction.getFunction());
  -            log.debug("replaced with function: " + newValue.getStringValue());
  -        }
  -        else if (masterFunction.hasStatics())
  -        {
  -            newValue = new StringProperty(prop.getName(), masterFunction.getStaticSubstitution());
  -            log.debug("replaced with static string: " + newValue.getStringValue());
  -        }
  -        return newValue;
  -    }
  -
  -    public void addVariable(String name, String value)
  -    {
  -        tp.addParameter(name, value);
  -        setUserDefinedVariables(tp.getUserDefinedVariables());
  -    }
  -
  -    public void replaceValues(CollectionProperty values) throws InvalidVariableException
  -    {
  -        Collection newColl = null;
  -        try
  -        {
  -            newColl = (Collection) values.getObjectValue().getClass().newInstance();
  -        }
  -        catch (Exception e)
  -        {
  -            log.error("", e);
  -            return;
  -        }
  -        PropertyIterator iter = values.iterator();
  -        while (iter.hasNext())
  -        {
  -            JMeterProperty val = iter.next();
  -            if (val instanceof TestElementProperty)
  -            {
  -                replaceValues((TestElement) val.getObjectValue());
  -            }
  -            else if (val instanceof StringProperty)
  -            {
  -                val = getNewValue((StringProperty) val);
  -            }
  -            else if (val instanceof CollectionProperty)
  -            {
  -                replaceValues((CollectionProperty) val);
  -            }
  -            else if (val instanceof MapProperty)
  -            {
  -                replaceValues((MapProperty) val);
  -            }
  -            newColl.add(val);
  -        }
  -        values.setCollection(newColl);
  +        Collection newProps = replaceValues(el.propertyIterator(),new ReplaceStringWithFunctions(masterFunction,variables));
  +        setProperties(el, newProps);
       }
   
  -    private void replaceValues(MapProperty values) throws InvalidVariableException
  +    private void setProperties(TestElement el, Collection newProps)
       {
  -        Map newMap = null;
  -        try
  -        {
  -            newMap = (Map) values.getObjectValue().getClass().newInstance();
  -        }
  -        catch (Exception e)
  -        {
  -            log.error("", e);
  -            return;
  -        }
  -        PropertyIterator iter = values.valueIterator();
  -        while (iter.hasNext())
  +        Iterator iter = newProps.iterator();
  +        el.clear();
  +        while(iter.hasNext())
           {
  -            JMeterProperty val = iter.next();
  -            if (val instanceof TestElementProperty)
  -            {
  -                replaceValues((TestElement) val.getObjectValue());
  -            }
  -            else if (val instanceof StringProperty)
  -            {
  -                val = getNewValue((StringProperty) val);
  -            }
  -            else if (val instanceof CollectionProperty)
  -            {
  -                replaceValues((CollectionProperty) val);
  -            }
  -            else if (val instanceof MapProperty)
  -            {
  -                replaceValues((MapProperty) val);
  -            }
  -            newMap.put(val.getName(), val);
  +            el.setProperty((JMeterProperty)iter.next());
           }
  -        values.setMap(newMap);
       }
  -
  -    /**
  -     * Replaces raw values with user-defined variable names.
  -     */
  -    public void reverseReplace(CollectionProperty prop)
  -    {
  -        Collection newColl = null;
  -        try
  +    
  +    public void reverseReplace(TestElement el) throws InvalidVariableException
           {
  -            newColl = (Collection) prop.getObjectValue().getClass().newInstance();
  +            Collection newProps = replaceValues(el.propertyIterator(),new ReplaceFunctionsWithStrings(masterFunction,variables));
  +            setProperties(el, newProps);
           }
  -        catch (Exception e)
  -        {
  -            log.error("", e);
  -            return;
  -        }
  -        PropertyIterator iter = prop.iterator();
  -        while (iter.hasNext())
  -        {
  -            JMeterProperty val = iter.next();
  -            if (val instanceof TestElementProperty)
  -            {
  -                reverseReplace((TestElement) val.getObjectValue());
  -            }
  -            else if (val instanceof StringProperty)
  +        
  +    public void undoReverseReplace(TestElement el) throws InvalidVariableException
               {
  -                val = substituteValues((StringProperty) val);
  +                Collection newProps = replaceValues(el.propertyIterator(),new UndoVariableReplacement(masterFunction,variables));
  +                setProperties(el, newProps);
               }
  -            else if (val instanceof CollectionProperty)
  -            {
  -                reverseReplace((CollectionProperty) val);
  -            }
  -            else if (val instanceof MapProperty)
  -            {
  -                reverseReplace((MapProperty) val);
  -            }
  -            newColl.add(val);
  -        }
  -        prop.setCollection(newColl);
  -    }
   
  -    private void reverseReplace(MapProperty prop)
  -    {
  -        Map newMap = null;
  -        try
  -        {
  -            newMap = (Map) prop.getObjectValue().getClass().newInstance();
  -        }
  -        catch (Exception e)
  -        {
  -            log.error("", e);
  -            return;
  -        }
  -        PropertyIterator iter = prop.valueIterator();
  -        while (iter.hasNext())
  -        {
  -            JMeterProperty val = iter.next();
  -            if (val instanceof TestElementProperty)
  -            {
  -                reverseReplace((TestElement) val.getObjectValue());
  -            }
  -            else if (val instanceof StringProperty)
  -            {
  -                val = substituteValues((StringProperty) val);
  -            }
  -            else if (val instanceof CollectionProperty)
  -            {
  -                reverseReplace((CollectionProperty) val);
  -            }
  -            else if (val instanceof MapProperty)
  -            {
  -                reverseReplace((MapProperty) val);
  -            }
  -            newMap.put(val.getName(), val);
  -        }
  -        prop.setMap(newMap);
  -    }
  -
  -    private void undoReverseReplace(MapProperty prop)
  +    public void addVariable(String name, String value)
       {
  -        Map newMap = null;
  -        try
  -        {
  -            newMap = (Map) prop.getObjectValue().getClass().newInstance();
  -        }
  -        catch (Exception e)
  -        {
  -            log.error("", e);
  -            return;
  -        }
  -        PropertyIterator iter = prop.valueIterator();
  -        while (iter.hasNext())
  -        {
  -            JMeterProperty val = iter.next();
  -            if (val instanceof TestElementProperty)
  -            {
  -                undoReverseReplace((TestElement) val.getObjectValue());
  -            }
  -            else if (val instanceof StringProperty)
  -            {
  -                val = substituteReferences((StringProperty) val);
  -            }
  -            else if (val instanceof CollectionProperty)
  -            {
  -                undoReverseReplace((CollectionProperty) val);
  -            }
  -            else if (val instanceof MapProperty)
  -            {
  -                undoReverseReplace((MapProperty) val);
  -            }
  -            newMap.put(val.getName(), val);
  -        }
  -        prop.setMap(newMap);
  +        tp.addParameter(name, value);
  +        setUserDefinedVariables(tp.getUserDefinedVariables());
       }
  -
  -    /**
  -         * Remove variables references and replace with the raw string values.
  -         */
  -    public void undoReverseReplace(CollectionProperty prop)
  +    
  +    private Collection replaceValues(PropertyIterator iter, ValueTransformer transform) throws InvalidVariableException
       {
  -        Collection newColl = null;
  -        try
  -        {
  -            newColl = (Collection) prop.getObjectValue().getClass().newInstance();
  -        }
  -        catch (Exception e)
  -        {
  -            log.error("", e);
  -            return;
  -        }
  -        PropertyIterator iter = prop.iterator();
  -        while (iter.hasNext())
  +        List props = new LinkedList();
  +        while(iter.hasNext())
           {
               JMeterProperty val = iter.next();
  -            if (val instanceof TestElementProperty)
  -            {
  -                undoReverseReplace((TestElement) val.getObjectValue());
  -            }
  -            else if (val instanceof StringProperty)
  +            if (val instanceof StringProperty)
               {
  -                val = substituteReferences((StringProperty) val);
  +                val = transform.transformValue((StringProperty) val);
               }
  -            else if (val instanceof CollectionProperty)
  +            else if (val instanceof MultiProperty)
               {
  -                undoReverseReplace((CollectionProperty) val);
  +                MultiProperty multiVal = (MultiProperty)val;
  +                Collection newValues = replaceValues(multiVal.iterator(),transform); 
  +                multiVal.clear();
  +                Iterator propIter = newValues.iterator();
  +                while(propIter.hasNext())
  +                {
  +                    multiVal.addProperty((JMeterProperty)propIter.next());               
  +                }
               }
  -            else if (val instanceof MapProperty)
  -            {
  -                undoReverseReplace((MapProperty) val);
  -            }
  -            newColl.add(val);
  +            props.add(val);
           }
  -        prop.setCollection(newColl);
  +        return props;
       }
   
  -    /**
  -     * Remove variables references and replace with the raw string values.
  -     * @param el
  -     */
  -    public void undoReverseReplace(TestElement el)
  -    {
  -        PropertyIterator iter = el.propertyIterator();
  -        List newProps = new LinkedList();
  -        while (iter.hasNext())
  -        {
  -            JMeterProperty prop = iter.next();
  -            if (prop instanceof StringProperty)
  -            {
  -                newProps.add(substituteReferences((StringProperty) prop));
  -            }
  -            else if (prop instanceof TestElementProperty)
  -            {
  -                undoReverseReplace((TestElement) prop.getObjectValue());
  -            }
  -            else if (prop instanceof CollectionProperty)
  -            {
  -                undoReverseReplace((CollectionProperty) prop);
  -            }
  -            else if (prop instanceof MapProperty)
  -            {
  -                undoReverseReplace((MapProperty) prop);
  -            }
  -        }
  -        Iterator props = newProps.iterator();
  -        while (props.hasNext())
  -        {
  -            el.setProperty((JMeterProperty) props.next());
  -        }
  -    }
  -
  -    /**
  -     * Replaces raw values with user-defined variable names.
  -     */
  -    public void reverseReplace(TestElement el)
  -    {
  -        PropertyIterator iter = el.propertyIterator();
  -        List newProps = new LinkedList();
  -        while (iter.hasNext())
  -        {
  -            JMeterProperty prop = iter.next();
  -            if (prop instanceof StringProperty)
  -            {
  -                newProps.add(substituteValues((StringProperty) prop));
  -            }
  -            else if (prop instanceof TestElementProperty)
  -            {
  -                reverseReplace((TestElement) prop.getObjectValue());
  -            }
  -            else if (prop instanceof CollectionProperty)
  -            {
  -                reverseReplace((CollectionProperty) prop);
  -            }
  -            else if (prop instanceof MapProperty)
  -            {
  -                reverseReplace((MapProperty) prop);
  -            }
  -        }
  -        Iterator props = newProps.iterator();
  -        while (props.hasNext())
  -        {
  -            el.setProperty((JMeterProperty) props.next());
  -
  -        }
  -    }
  -
  -    private StringProperty substituteValues(StringProperty prop)
  -    {
  -        Iterator iter = variables.keySet().iterator();
  -        String input = prop.getStringValue();
  -        while (iter.hasNext())
  -        {
  -            String key = (String) iter.next();
  -            String value = (String) variables.get(key);
  -            input = StringUtilities.substitute(input, value, "${" + key + "}");
  -        }
  -        return new StringProperty(prop.getName(), input);
  -    }
  -
  -    private StringProperty substituteReferences(StringProperty prop)
  -    {
  -        Iterator iter = variables.keySet().iterator();
  -        String input = prop.getStringValue();
  -        while (iter.hasNext())
  -        {
  -            String key = (String) iter.next();
  -            String value = (String) variables.get(key);
  -            input = StringUtilities.substitute(input, "${" + key + "}", value);
  -        }
  -        return new StringProperty(prop.getName(), input);
  -    }
  +    
   
       public static class Test extends TestCase
       {
  
  
  
  1.1                  jakarta-jmeter/src/core/org/apache/jmeter/engine/util/AbstractTransformer.java
  
  Index: AbstractTransformer.java
  ===================================================================
  /*
   * Created on May 4, 2003
   *
   * To change the template for this generated file go to
   * Window>Preferences>Java>Code Generation>Code and Comments
   */
  package org.apache.jmeter.engine.util;
  
  import java.util.Collection;
  import java.util.Map;
  
  import org.apache.jmeter.testelement.TestElement;
  import org.apache.jmeter.testelement.property.JMeterProperty;
  
  /**
   * @author ano ano
   *
   * To change the template for this generated type comment go to
   * Window>Preferences>Java>Code Generation>Code and Comments
   */
  abstract class AbstractTransformer implements ValueTransformer
  {
  
  
      protected CompoundVariable masterFunction;
      protected Map variables;
      /**
       * @param variable
       */
      public void setMasterFunction(CompoundVariable variable)
      {
          masterFunction = variable;
      }
      
      protected CompoundVariable getMasterFunction()
      {
          return masterFunction;
      }
  
      /**
       * @return
       */
      public Map getVariables()
      {
          return variables;
      }
  
      /**
       * @param map
       */
      public void setVariables(Map map)
      {
          variables = map;
      }
  
  }
  
  
  
  1.1                  jakarta-jmeter/src/core/org/apache/jmeter/engine/util/ReplaceFunctionsWithStrings.java
  
  Index: ReplaceFunctionsWithStrings.java
  ===================================================================
  /*
   * Created on May 4, 2003
   *
   * To change the template for this generated file go to
   * Window>Preferences>Java>Code Generation>Code and Comments
   */
  package org.apache.jmeter.engine.util;
  
  import java.util.Iterator;
  import java.util.Map;
  
  import org.apache.jmeter.functions.InvalidVariableException;
  import org.apache.jmeter.testelement.property.JMeterProperty;
  import org.apache.jmeter.testelement.property.StringProperty;
  import org.apache.jmeter.util.StringUtilities;
  
  /**
   * @author ano ano
   *
   * To change the template for this generated type comment go to
   * Window>Preferences>Java>Code Generation>Code and Comments
   */
  public class ReplaceFunctionsWithStrings extends AbstractTransformer
  {
  
      public ReplaceFunctionsWithStrings(CompoundVariable masterFunction,Map variables)
      {
          super();
          setMasterFunction(masterFunction);
          setVariables(variables);
      }
  
      /* (non-Javadoc)
       * @see org.apache.jmeter.engine.util.ValueTransformer#transformValue(org.apache.jmeter.testelement.property.JMeterProperty)
       */
      public JMeterProperty transformValue(JMeterProperty prop) throws InvalidVariableException
      {
          Iterator iter = getVariables().keySet().iterator();
          String input = prop.getStringValue();
          while (iter.hasNext())
          {
              String key = (String) iter.next();
              String value = (String) getVariables().get(key);
              input = StringUtilities.substitute(input, value, "${" + key + "}");
          }
          StringProperty newProp =  new StringProperty(prop.getName(), input);
          return newProp;
      }
  
  }
  
  
  
  1.1                  jakarta-jmeter/src/core/org/apache/jmeter/engine/util/ReplaceStringWithFunctions.java
  
  Index: ReplaceStringWithFunctions.java
  ===================================================================
  /*
   * Created on May 4, 2003
   *
   * To change the template for this generated file go to
   * Window>Preferences>Java>Code Generation>Code and Comments
   */
  package org.apache.jmeter.engine.util;
  
  import java.util.Map;
  
  import org.apache.jmeter.functions.InvalidVariableException;
  import org.apache.jmeter.testelement.property.FunctionProperty;
  import org.apache.jmeter.testelement.property.JMeterProperty;
  import org.apache.jmeter.testelement.property.StringProperty;
  
  /**
   * @author ano ano
   *
   * To change the template for this generated type comment go to
   * Window>Preferences>Java>Code Generation>Code and Comments
   */
  public class ReplaceStringWithFunctions extends AbstractTransformer
  {
      
      public ReplaceStringWithFunctions(CompoundVariable masterFunction,Map variables)
          {
              super();
              setMasterFunction(masterFunction);
              setVariables(variables);
          }
  
      /* (non-Javadoc)
       * @see org.apache.jmeter.engine.util.ValueTransformer#transformValue(org.apache.jmeter.testelement.property.JMeterProperty)
       */
      public JMeterProperty transformValue(JMeterProperty prop) throws InvalidVariableException
      {
          JMeterProperty newValue = prop;
          getMasterFunction().clear();
          getMasterFunction().setParameters(prop.getStringValue());
          if (getMasterFunction().hasFunction())
          {
              newValue = new FunctionProperty(prop.getName(), getMasterFunction().getFunction());
          }
          else if (getMasterFunction().hasStatics())
          {
              newValue = new StringProperty(prop.getName(), getMasterFunction().getStaticSubstitution());
          }
          return newValue;
      }
  
  }
  
  
  
  1.1                  jakarta-jmeter/src/core/org/apache/jmeter/engine/util/UndoVariableReplacement.java
  
  Index: UndoVariableReplacement.java
  ===================================================================
  /*
   * Created on May 4, 2003
   *
   * To change the template for this generated file go to
   * Window>Preferences>Java>Code Generation>Code and Comments
   */
  package org.apache.jmeter.engine.util;
  
  import java.util.Iterator;
  import java.util.Map;
  
  import org.apache.jmeter.functions.InvalidVariableException;
  import org.apache.jmeter.testelement.property.JMeterProperty;
  import org.apache.jmeter.testelement.property.StringProperty;
  import org.apache.jmeter.util.StringUtilities;
  
  /**
   * @author ano ano
   *
   * To change the template for this generated type comment go to
   * Window>Preferences>Java>Code Generation>Code and Comments
   */
  public class UndoVariableReplacement extends AbstractTransformer
  {
      
      public UndoVariableReplacement(CompoundVariable masterFunction,Map variables)
          {
              super();
              setMasterFunction(masterFunction);
              setVariables(variables);
          }
  
      /* (non-Javadoc)
       * @see org.apache.jmeter.engine.util.ValueTransformer#transformValue(org.apache.jmeter.testelement.property.JMeterProperty)
       */
      public JMeterProperty transformValue(JMeterProperty prop) throws InvalidVariableException
      {
          Iterator iter = getVariables().keySet().iterator();
           String input = prop.getStringValue();
           while (iter.hasNext())
           {
               String key = (String) iter.next();
               String value = (String) getVariables().get(key);
               input = StringUtilities.substitute(input, "${" + key + "}", value);
           }
          StringProperty newProp = new StringProperty(prop.getName(), input);
          return newProp;
      }
  
  }
  
  
  
  1.1                  jakarta-jmeter/src/core/org/apache/jmeter/engine/util/ValueTransformer.java
  
  Index: ValueTransformer.java
  ===================================================================
  /*
   * Created on May 4, 2003
   *
   * To change the template for this generated file go to
   * Window>Preferences>Java>Code Generation>Code and Comments
   */
  package org.apache.jmeter.engine.util;
  
  import java.util.Map;
  
  import org.apache.jmeter.functions.InvalidVariableException;
  import org.apache.jmeter.testelement.property.JMeterProperty;
  
  /**
   * @author ano ano
   *
   * To change the template for this generated type comment go to
   * Window>Preferences>Java>Code Generation>Code and Comments
   */
  interface ValueTransformer
  {
      
      /**
       * Transform the given property and return the new version.
       * @param property
       * @return
       */
      public JMeterProperty transformValue(JMeterProperty property) throws InvalidVariableException;
      
      /**
       * Set the master function for the value transformer.  This handles converting strings to functions.
       * @param masterFunction
       */
      public void setMasterFunction(CompoundVariable masterFunction);
      
      /**
       * Set the variable names and values used to reverse replace functions with strings, and undo functions to raw values.
       * @param vars
       */
      public void setVariables(Map vars);
      
      
  }
  
  
  
  1.3       +4 -0      jakarta-jmeter/src/core/org/apache/jmeter/gui/action/Copy.java
  
  Index: Copy.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/action/Copy.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Copy.java	10 Apr 2003 20:33:10 -0000	1.2
  +++ Copy.java	5 May 2003 17:23:01 -0000	1.3
  @@ -48,6 +48,10 @@
   	
   	public static JMeterTreeNode getCopiedNode() 
   	{
  +        if(copiedNode == null)
  +        {
  +            return null;
  +        }
   		return cloneTreeNode(copiedNode);
   	}
   
  
  
  
  1.15      +20 -54    jakarta-jmeter/src/core/org/apache/jmeter/gui/action/Load.java
  
  Index: Load.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/action/Load.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- Load.java	29 Apr 2003 15:47:43 -0000	1.14
  +++ Load.java	5 May 2003 17:23:01 -0000	1.15
  @@ -254,84 +254,50 @@
   		 ***********************************************************/
   
   		public void testFile3() throws Exception {
  -			HashTree tree = getTree(testFile3);
  -			//loader.updateTree(tree);
  -			log.debug("tree contents: "+tree.list());
  -			assertTrue(tree.getArray()[0] instanceof org.apache.jmeter.testelement.TestPlan);
  -			loader.convertTree(tree);
  -			assertTrue(tree.getArray()[0] instanceof org.apache.jmeter.control.gui.TestPlanGui);
  +			loadAndAssertTree(getTree(testFile3));
   		}
  +
  +        private void loadAndAssertTree(HashTree tree) throws Exception
  +        {
  +            assertTrue(tree.getArray()[0] instanceof org.apache.jmeter.testelement.TestPlan);
  +            loader.convertTree(tree);
  +            assertTrue(tree.getArray()[0] instanceof org.apache.jmeter.control.gui.TestPlanGui);
  +        }
   		
   		public void testFile4() throws Exception {
  -			HashTree tree = getTree(testFile4);
  -			//loader.updateTree(tree);
  -			assertTrue(tree.getArray()[0] instanceof org.apache.jmeter.testelement.TestPlan);
  -			loader.convertTree(tree);
  -			assertTrue(tree.getArray()[0] instanceof org.apache.jmeter.control.gui.TestPlanGui);
  +            loadAndAssertTree(getTree(testFile4));
   		}
   		
   		public void testFile5() throws Exception {
  -			HashTree tree = getTree(testFile5);
  -			//loader.updateTree(tree);
  -			assertTrue(tree.getArray()[0] instanceof org.apache.jmeter.testelement.TestPlan);
  -			loader.convertTree(tree);
  -			assertTrue(tree.getArray()[0] instanceof org.apache.jmeter.control.gui.TestPlanGui);
  +            loadAndAssertTree(getTree(testFile5));
   		}
   		
   		public void testFile6() throws Exception {
  -			HashTree tree = getTree(testFile6);
  -			//loader.updateTree(tree);
  -			assertTrue(tree.getArray()[0] instanceof org.apache.jmeter.testelement.TestPlan);
  -			loader.convertTree(tree);
  -			assertTrue(tree.getArray()[0] instanceof org.apache.jmeter.control.gui.TestPlanGui);
  +            loadAndAssertTree(getTree(testFile6));
   		}
   		
   		public void testFile7() throws Exception {
  -			HashTree tree = getTree(testFile7);
  -			//loader.updateTree(tree);
  -			assertTrue(tree.getArray()[0] instanceof org.apache.jmeter.testelement.TestPlan);
  -			loader.convertTree(tree);
  -			assertTrue(tree.getArray()[0] instanceof org.apache.jmeter.control.gui.TestPlanGui);
  +            loadAndAssertTree(getTree(testFile7));
   		}
   		
   		public void testFile8() throws Exception {
  -			HashTree tree = getTree(testFile8);
  -			//loader.updateTree(tree);
  -			assertTrue(tree.getArray()[0] instanceof org.apache.jmeter.testelement.TestPlan);
  -			loader.convertTree(tree);
  -			assertTrue(tree.getArray()[0] instanceof org.apache.jmeter.control.gui.TestPlanGui);
  +            loadAndAssertTree(getTree(testFile8));
   		}
   		
   		public void testFile9() throws Exception {
  -			HashTree tree = getTree(testFile9);
  -			//loader.updateTree(tree);
  -			assertTrue(tree.getArray()[0] instanceof org.apache.jmeter.testelement.TestPlan);
  -			loader.convertTree(tree);
  -			assertTrue(tree.getArray()[0] instanceof org.apache.jmeter.control.gui.TestPlanGui);
  +            loadAndAssertTree(getTree(testFile9));
   		}
   		
   		public void testFile10() throws Exception {
  -			HashTree tree = getTree(testFile10);
  -			//loader.updateTree(tree);
  -			assertTrue(tree.getArray()[0] instanceof org.apache.jmeter.testelement.TestPlan);
  -			loader.convertTree(tree);
  -			assertTrue(tree.getArray()[0] instanceof org.apache.jmeter.control.gui.TestPlanGui);
  +            loadAndAssertTree(getTree(testFile10));
   		}
   		
   		public void testFile11() throws Exception {
  -			HashTree tree = getTree(testFile11);
  -			//loader.updateTree(tree);
  -			assertTrue(tree.getArray()[0] instanceof org.apache.jmeter.testelement.TestPlan);
  -			loader.convertTree(tree);
  -			assertTrue(tree.getArray()[0] instanceof org.apache.jmeter.control.gui.TestPlanGui);
  +            loadAndAssertTree(getTree(testFile11));
   		}
   		
   		public void testFile12() throws Exception {
  -			HashTree tree = getTree(testFile12);
  -			//loader.updateTree(tree);
  -			assertTrue(tree.getArray()[0] instanceof org.apache.jmeter.testelement.TestPlan);
  -			loader.convertTree(tree);
  -			assertTrue(tree.getArray()[0] instanceof org.apache.jmeter.control.gui.TestPlanGui);
  +            loadAndAssertTree(getTree(testFile12));
   		}
   
   		private HashTree getTree(File f) throws Exception {
  
  
  
  1.13      +3 -2      jakarta-jmeter/src/core/org/apache/jmeter/gui/util/JMeterMenuBar.java
  
  Index: JMeterMenuBar.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/util/JMeterMenuBar.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- JMeterMenuBar.java	2 May 2003 20:58:10 -0000	1.12
  +++ JMeterMenuBar.java	5 May 2003 17:23:02 -0000	1.13
  @@ -377,6 +377,7 @@
   		run_clearAll = new JMenuItem(JMeterUtils.getResString("clear_all"), 'a');
   		run_clearAll.addActionListener(ActionRouter.getInstance());
   		run_clearAll.setActionCommand(org.apache.jmeter.gui.action.Clear.CLEAR_ALL);
  +        run_clearAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,KeyEvent.CTRL_MASK));
   		runMenu.add(run_start);
   		if (remote_start != null)
   		{
  @@ -396,7 +397,7 @@
   		}
   		remote_stop_all = new JMenuItem(JMeterUtils.getResString("remote_stop_all"), 'X');
   		remote_stop_all.setAccelerator(
  -			KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.CTRL_MASK));
  +			KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.ALT_MASK));
   		remote_stop_all.addActionListener(ActionRouter.getInstance());
   		remote_stop_all.setActionCommand("remote_stop_all");
   		runMenu.add(remote_stop_all);
  
  
  
  1.16      +14 -5     jakarta-jmeter/src/core/org/apache/jmeter/gui/util/MenuFactory.java
  
  Index: MenuFactory.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/util/MenuFactory.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- MenuFactory.java	25 Apr 2003 15:30:10 -0000	1.15
  +++ MenuFactory.java	5 May 2003 17:23:02 -0000	1.16
  @@ -52,6 +52,7 @@
    * information on the Apache Software Foundation, please see
    * <http://www.apache.org/>.
    */package org.apache.jmeter.gui.util;
  +import java.awt.event.KeyEvent;
   import java.util.Collection;
   import java.util.Collections;
   import java.util.HashMap;
  @@ -65,6 +66,7 @@
   import javax.swing.JMenu;
   import javax.swing.JMenuItem;
   import javax.swing.JPopupMenu;
  +import javax.swing.KeyStroke;
   import javax.swing.MenuElement;
   
   import org.apache.jmeter.gui.GuiPackage;
  @@ -199,11 +201,11 @@
   		addSeparator(menu);
   		if(removable)
   		{
  -			menu.add(makeMenuItem(JMeterUtils.getResString("remove"), "Remove","remove"));
  +			menu.add(makeMenuItem(JMeterUtils.getResString("remove"), "Remove","remove",KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0)));
   		}
  -		menu.add(makeMenuItem(JMeterUtils.getResString("cut"), "Cut", "Cut"));
  -		menu.add(makeMenuItem(JMeterUtils.getResString("copy"), "Copy", "Copy"));
  -		menu.add(makeMenuItem(JMeterUtils.getResString("paste"), "Paste", "Paste"));
  +		menu.add(makeMenuItem(JMeterUtils.getResString("cut"), "Cut", "Cut",KeyStroke.getKeyStroke(KeyEvent.VK_X,KeyEvent.CTRL_MASK)));
  +		menu.add(makeMenuItem(JMeterUtils.getResString("copy"), "Copy", "Copy",KeyStroke.getKeyStroke(KeyEvent.VK_C,KeyEvent.CTRL_MASK)));
  +		menu.add(makeMenuItem(JMeterUtils.getResString("paste"), "Paste", "Paste",KeyStroke.getKeyStroke(KeyEvent.VK_V,KeyEvent.CTRL_MASK)));
   		menu.add(makeMenuItem(JMeterUtils.getResString("paste_insert"), "Paste Insert", "Paste Insert"));
   	}
   
  @@ -438,6 +440,13 @@
   
   		return newMenuChoice;
   	}
  +    
  +    public static JMenuItem makeMenuItem(String label,String name,String actionCommand,KeyStroke accel)
  +    {
  +        JMenuItem item = makeMenuItem(label,name,actionCommand);
  +        item.setAccelerator(accel);
  +        return item;
  +    }
   
   	private static void initializeMenus()
   	{
  
  
  
  1.21      +3 -3      jakarta-jmeter/src/core/org/apache/jmeter/reporters/ResultCollector.java
  
  Index: ResultCollector.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/reporters/ResultCollector.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- ResultCollector.java	2 May 2003 21:38:10 -0000	1.20
  +++ ResultCollector.java	5 May 2003 17:23:02 -0000	1.21
  @@ -201,7 +201,7 @@
               try
               {
                   Configuration savedSamples = getConfiguration(getFilename());
  -                clear();
  +                clearVisualizer();
                   readSamples(savedSamples);
               }
               catch (Exception e)
  @@ -340,7 +340,7 @@
           return builder.buildFromFile(filename);
       }
   
  -    public void clear()
  +    public void clearVisualizer()
       {
           current = -1;
           if (getVisualizer() != null && getVisualizer() instanceof Clearable)
  
  
  
  1.7       +7 -64     jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/CollectionProperty.java
  
  Index: CollectionProperty.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/CollectionProperty.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- CollectionProperty.java	2 May 2003 21:38:09 -0000	1.6
  +++ CollectionProperty.java	5 May 2003 17:23:02 -0000	1.7
  @@ -5,7 +5,7 @@
   
   import org.apache.jmeter.testelement.TestElement;
   
  -public class CollectionProperty extends AbstractProperty
  +public class CollectionProperty extends MultiProperty
   {
   
       protected Collection value;
  @@ -86,12 +86,9 @@
       {
           if (v instanceof Collection)
           {
  -            if (isRunningVersion())
  -            {
  -                savedValue = this.value;
  -            }
  -            value = normalizeList((Collection) v);
  +            setCollection((Collection) v);
           }
  +
       }
   
       public PropertyIterator iterator()
  @@ -151,30 +148,11 @@
   
       public void setCollection(Collection coll)
       {
  -        value = coll;
  -    }
  -
  -    /* (non-Javadoc)
  -     * @see org.apache.jmeter.testelement.property.JMeterProperty#mergeIn(org.apache.jmeter.testelement.property.JMeterProperty)
  -     */
  -    public void mergeIn(JMeterProperty prop)
  -    {
  -        if (((CollectionProperty) prop).value == this.value)
  +        if (isRunningVersion())
           {
  -            return;
  -        }
  -        if (prop instanceof CollectionProperty)
  -        {
  -            PropertyIterator iter = ((CollectionProperty) prop).iterator();
  -            while (iter.hasNext())
  -            {
  -                value.add(iter.next());
  -            }
  -        }
  -        else
  -        {
  -            addProperty(prop);
  +            savedValue = this.value;
           }
  +        value = normalizeList(coll);
       }
   
       public void clear()
  @@ -216,16 +194,6 @@
           }
       }
   
  -    public void setRunningVersion(boolean running)
  -    {
  -        super.setRunningVersion(running);
  -        PropertyIterator iter = iterator();
  -        while (iter.hasNext())
  -        {
  -            iter.next().setRunningVersion(running);
  -        }
  -    }
  -
       /* (non-Javadoc)
        * @see org.apache.jmeter.testelement.property.JMeterProperty#recoverRunningVersion(org.apache.jmeter.testelement.TestElement)
        */
  @@ -236,32 +204,7 @@
               value = savedValue;
               savedValue = null;
           }
  -        PropertyIterator iter = iterator();
  -        while (iter.hasNext())
  -        {
  -            JMeterProperty prop = iter.next();
  -            if (prop.isTemporary(owner))
  -            {
  -                iter.remove();
  -            }
  -            else
  -            {
  -                prop.recoverRunningVersion(owner);
  -            }
  -        }
  -    }
  -
  -    /* (non-Javadoc)
  -     * @see org.apache.jmeter.testelement.property.JMeterProperty#setTemporary(boolean, TestElement)
  -     */
  -    public void setTemporary(boolean temporary, TestElement owner)
  -    {
  -        super.setTemporary(temporary, owner);
  -        PropertyIterator iter = iterator();
  -        while (iter.hasNext())
  -        {
  -            iter.next().setTemporary(temporary, owner);
  -        }
  +        recoverRunningVersionOfSubElements(owner);
       }
   
   }
  
  
  
  1.2       +6 -41     jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/DoubleProperty.java
  
  Index: DoubleProperty.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/DoubleProperty.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DoubleProperty.java	7 Apr 2003 14:35:23 -0000	1.1
  +++ DoubleProperty.java	5 May 2003 17:23:02 -0000	1.2
  @@ -6,7 +6,7 @@
    * To change this generated comment edit the template variable "typecomment":
    * Window>Preferences>Java>Templates.
    */
  -public class DoubleProperty extends AbstractProperty
  +public class DoubleProperty extends NumberProperty
   {
   
        double value;
  @@ -26,23 +26,15 @@
           this.value = value;
       }
       
  -    public void setObjectValue(Object v)
  -    {
  -        if(v instanceof Number)
  +    protected void setNumberValue(Number n)
           {
  -            value = ((Number)v).doubleValue();
  +            value = n.doubleValue();
           }
  -        else
  +    
  +        protected void setNumberValue(String n) throws NumberFormatException
           {
  -            try
  -            {
  -                value = Double.parseDouble(v.toString());
  -            }
  -            catch (RuntimeException e)
  -            {}
  +            value = Double.parseDouble(n);
           }
  -    }
  -
       /**
        * @see org.apache.jmeter.testelement.property.JMeterProperty#getStringValue()
        */
  @@ -67,33 +59,6 @@
           DoubleProperty prop = (DoubleProperty)super.clone();
           prop.value = value;
           return prop;
  -    }
  -
  -    /**
  -     * @see java.lang.Comparable#compareTo(java.lang.Object)
  -     */
  -    public int compareTo(Object arg0)
  -    {
  -        if(arg0 instanceof JMeterProperty)
  -        {
  -            double argValue = ((JMeterProperty)arg0).getDoubleValue();
  -            if(value < argValue)
  -            {
  -                return -1;
  -            }
  -            else if(value == argValue)
  -            {
  -                return 0;
  -            }
  -            else
  -            {
  -                return 1;
  -            }
  -        }
  -        else
  -        {
  -            return -1;
  -        }
       }
   
       /**
  
  
  
  1.3       +8 -42     jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/FloatProperty.java
  
  Index: FloatProperty.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/FloatProperty.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FloatProperty.java	7 Apr 2003 14:35:23 -0000	1.2
  +++ FloatProperty.java	5 May 2003 17:23:02 -0000	1.3
  @@ -6,7 +6,7 @@
    * To change this generated comment edit the template variable "typecomment":
    * Window>Preferences>Java>Templates.
    */
  -public class FloatProperty extends AbstractProperty
  +public class FloatProperty extends NumberProperty
   {
       float value;
       
  @@ -25,21 +25,14 @@
           this.value = value;
       }
       
  -    public void setObjectValue(Object v)
  +    protected void setNumberValue(Number n)
       {
  -        if(v instanceof Number)
  -        {
  -            value = ((Number)v).floatValue();
  -        }
  -        else
  -        {
  -            try
  -            {
  -                value = Float.parseFloat(v.toString());
  -            }
  -            catch (RuntimeException e)
  -            {}
  -        }
  +        value = n.floatValue();
  +    }
  +    
  +    protected void setNumberValue(String n) throws NumberFormatException
  +    {
  +        value = Float.parseFloat(n);
       }
   
       /**
  @@ -66,33 +59,6 @@
           FloatProperty prop = (FloatProperty)super.clone();
           prop.value = value;
           return prop;
  -    }
  -
  -    /**
  -     * @see java.lang.Comparable#compareTo(java.lang.Object)
  -     */
  -    public int compareTo(Object arg0)
  -    {
  -        if(arg0 instanceof JMeterProperty)
  -        {
  -            float argValue = ((JMeterProperty)arg0).getFloatValue();
  -            if(value < argValue)
  -            {
  -                return -1;
  -            }
  -            else if(value == argValue)
  -            {
  -                return 0;
  -            }
  -            else
  -            {
  -                return 1;
  -            }
  -        }
  -        else
  -        {
  -            return -1;
  -        }
       }
   
       /**
  
  
  
  1.3       +24 -53    jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/IntegerProperty.java
  
  Index: IntegerProperty.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/IntegerProperty.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- IntegerProperty.java	7 Apr 2003 14:35:23 -0000	1.2
  +++ IntegerProperty.java	5 May 2003 17:23:02 -0000	1.3
  @@ -6,42 +6,40 @@
    * To change this generated comment edit the template variable "typecomment":
    * Window>Preferences>Java>Templates.
    */
  -public class IntegerProperty extends AbstractProperty
  +public class IntegerProperty extends NumberProperty
   {
       int value;
  -    
  -    public IntegerProperty(String name,int value)
  +
  +    public IntegerProperty(String name, int value)
       {
           super(name);
           this.value = value;
       }
  -    
  +
  +    public IntegerProperty(String name)
  +    {
  +        super(name);
  +    }
  +
       public IntegerProperty()
       {
           super();
       }
  -    
  +
       public void setValue(int value)
       {
           this.value = value;
       }
  -    
  -    public void setObjectValue(Object v)
  -        {
  -            if(v instanceof Number)
  -            {
  -                value = ((Number)v).intValue();
  -            }
  -            else
  -            {
  -                try
  -                {
  -                    value = Integer.parseInt(v.toString());
  -                }
  -                catch (RuntimeException e)
  -                {}
  -            }
  -        }
  +
  +    protected void setNumberValue(Number n)
  +    {
  +        value = n.intValue();
  +    }
  +
  +    protected void setNumberValue(String n) throws NumberFormatException
  +    {
  +        value = Integer.parseInt(n);
  +    }
   
       /**
        * @see org.apache.jmeter.testelement.property.JMeterProperty#getStringValue()
  @@ -64,39 +62,12 @@
        */
       public Object clone()
       {
  -        IntegerProperty prop = (IntegerProperty)super.clone();
  +        IntegerProperty prop = (IntegerProperty) super.clone();
           prop.value = value;
           return prop;
       }
   
       /**
  -     * @see java.lang.Comparable#compareTo(java.lang.Object)
  -     */
  -    public int compareTo(Object arg0)
  -    {
  -        if(arg0 instanceof JMeterProperty)
  -        {
  -            int argValue = ((JMeterProperty)arg0).getIntValue();
  -            if(value < argValue)
  -            {
  -                return -1;
  -            }
  -            else if(value == argValue)
  -            {
  -                return 0;
  -            }
  -            else
  -            {
  -                return 1;
  -            }
  -        }
  -        else
  -        {
  -            return -1;
  -        }
  -    }
  -
  -    /**
        * @see org.apache.jmeter.testelement.property.JMeterProperty#getBooleanValue()
        */
       public boolean getBooleanValue()
  @@ -109,7 +80,7 @@
        */
       public double getDoubleValue()
       {
  -        return (double)value;
  +        return (double) value;
       }
   
       /**
  @@ -117,7 +88,7 @@
        */
       public float getFloatValue()
       {
  -        return (float)value;
  +        return (float) value;
       }
   
       /**
  @@ -133,7 +104,7 @@
        */
       public long getLongValue()
       {
  -        return (long)value;
  +        return (long) value;
       }
   
   }
  
  
  
  1.3       +92 -127   jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/LongProperty.java
  
  Index: LongProperty.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/LongProperty.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- LongProperty.java	7 Apr 2003 14:35:23 -0000	1.2
  +++ LongProperty.java	5 May 2003 17:23:02 -0000	1.3
  @@ -6,135 +6,100 @@
    * To change this generated comment edit the template variable "typecomment":
    * Window>Preferences>Java>Templates.
    */
  -public class LongProperty extends AbstractProperty
  +public class LongProperty extends NumberProperty
   {
       long value;
  -    
  -        public LongProperty(String name,long value)
  -        {
  -            super(name);
  -            this.value = value;
  -        }
  -    
  -        public LongProperty()
  -        {
  -            super();
  -        }
  -    
  -        public void setValue(int value)
  -        {
  -            this.value = value;
  -        }
  -    
  -        public void setObjectValue(Object v)
  -            {
  -                if(v instanceof Number)
  -                {
  -                    value = ((Number)v).intValue();
  -                }
  -                else
  -                {
  -                    try
  -                    {
  -                        value = Integer.parseInt(v.toString());
  -                    }
  -                    catch (RuntimeException e)
  -                    {}
  -                }
  -            }
  -
  -        /**
  -         * @see org.apache.jmeter.testelement.property.JMeterProperty#getStringValue()
  -         */
  -        public String getStringValue()
  -        {
  -            return Long.toString(value);
  -        }
  -
  -        /**
  -         * @see org.apache.jmeter.testelement.property.JMeterProperty#getObjectValue()
  -         */
  -        public Object getObjectValue()
  -        {
  -            return new Long(value);
  -        }
  -
  -        /**
  -         * @see java.lang.Object#clone()
  -         */
  -        public Object clone()
  -        {
  -            LongProperty prop = (LongProperty)super.clone();
  -            prop.value = value;
  -            return prop;
  -        }
  -
  -        /**
  -         * @see java.lang.Comparable#compareTo(java.lang.Object)
  -         */
  -        public int compareTo(Object arg0)
  -        {
  -            if(arg0 instanceof JMeterProperty)
  -            {
  -                long argValue = ((JMeterProperty)arg0).getLongValue();
  -                if(value < argValue)
  -                {
  -                    return -1;
  -                }
  -                else if(value == argValue)
  -                {
  -                    return 0;
  -                }
  -                else
  -                {
  -                    return 1;
  -                }
  -            }
  -            else
  -            {
  -                return -1;
  -            }
  -        }
  -
  -        /**
  -         * @see org.apache.jmeter.testelement.property.JMeterProperty#getBooleanValue()
  -         */
  -        public boolean getBooleanValue()
  -        {
  -            return getLongValue() > 0 ? true : false;
  -        }
  -
  -        /**
  -         * @see org.apache.jmeter.testelement.property.JMeterProperty#getDoubleValue()
  -         */
  -        public double getDoubleValue()
  -        {
  -            return (double)value;
  -        }
  -
  -        /**
  -         * @see org.apache.jmeter.testelement.property.JMeterProperty#getFloatValue()
  -         */
  -        public float getFloatValue()
  -        {
  -            return (float)value;
  -        }
  -
  -        /**
  -         * @see org.apache.jmeter.testelement.property.JMeterProperty#getIntValue()
  -         */
  -        public int getIntValue()
  -        {
  -            return (int)value;
  -        }
  -
  -        /**
  -         * @see org.apache.jmeter.testelement.property.JMeterProperty#getLongValue()
  -         */
  -        public long getLongValue()
  -        {
  -            return value;
  -        }
   
  +    public LongProperty(String name, long value)
  +    {
  +        super(name);
  +        this.value = value;
  +    }
  +
  +    public LongProperty()
  +    {
  +        super();
  +    }
  +
  +    public void setValue(int value)
  +    {
  +        this.value = value;
  +    }
  +
  +    protected void setNumberValue(Number n)
  +    {
  +        value = n.longValue();
  +    }
  +
  +    protected void setNumberValue(String n) throws NumberFormatException
  +    {
  +        value = Long.parseLong(n);
  +    }
  +
  +    /**
  +     * @see org.apache.jmeter.testelement.property.JMeterProperty#getStringValue()
  +     */
  +    public String getStringValue()
  +    {
  +        return Long.toString(value);
  +    }
  +
  +    /**
  +     * @see org.apache.jmeter.testelement.property.JMeterProperty#getObjectValue()
  +     */
  +    public Object getObjectValue()
  +    {
  +        return new Long(value);
  +    }
  +
  +    /**
  +     * @see java.lang.Object#clone()
  +     */
  +    public Object clone()
  +    {
  +        LongProperty prop = (LongProperty) super.clone();
  +        prop.value = value;
  +        return prop;
  +    }
  +
  +    /**
  +     * @see org.apache.jmeter.testelement.property.JMeterProperty#getBooleanValue()
  +     */
  +    public boolean getBooleanValue()
  +    {
  +        return getLongValue() > 0 ? true : false;
  +    }
  +
  +    /**
  +     * @see org.apache.jmeter.testelement.property.JMeterProperty#getDoubleValue()
  +     */
  +    public double getDoubleValue()
  +    {
  +        return (double) value;
  +    }
  +
  +    /**
  +     * @see org.apache.jmeter.testelement.property.JMeterProperty#getFloatValue()
  +     */
  +    public float getFloatValue()
  +    {
  +        return (float) value;
  +    }
  +
  +    /**
  +     * @see org.apache.jmeter.testelement.property.JMeterProperty#getIntValue()
  +     */
  +    public int getIntValue()
  +    {
  +        return (int) value;
  +    }
  +
  +    /**
  +     * @see org.apache.jmeter.testelement.property.JMeterProperty#getLongValue()
  +     */
  +    public long getLongValue()
  +    {
  +        return value;
  +    }
   
   }
  
  
  
  1.7       +20 -71    jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/MapProperty.java
  
  Index: MapProperty.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/MapProperty.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- MapProperty.java	29 Apr 2003 15:47:43 -0000	1.6
  +++ MapProperty.java	5 May 2003 17:23:02 -0000	1.7
  @@ -1,6 +1,5 @@
   package org.apache.jmeter.testelement.property;
   
  -import java.util.Iterator;
   import java.util.Map;
   
   import org.apache.jmeter.testelement.TestElement;
  @@ -11,7 +10,7 @@
    * To change this generated comment edit the template variable "typecomment":
    * Window>Preferences>Java>Templates.
    */
  -public class MapProperty extends AbstractProperty
  +public class MapProperty extends MultiProperty
   {
       Map value;
       Map savedValue = null;
  @@ -43,20 +42,13 @@
       {
           if (v instanceof Map)
           {
  -            if (isRunningVersion())
  -            {
  -                savedValue = this.value;
  -            }
  -            value = normalizeMap((Map) v);
  +            setMap((Map) v);
           }
       }
   
       public void addProperty(JMeterProperty prop)
       {
  -        if (value.size() == 0 || valueIterator().next().getClass().equals(prop.getClass()))
  -        {
  -            value.put(prop.getName(), prop);
  -        }
  +        addProperty(prop.getName(),prop);
       }
   
       public JMeterProperty get(String key)
  @@ -132,44 +124,24 @@
           return new PropertyIteratorImpl(value.values());
       }
   
  -    /**
  -     * @see org.apache.jmeter.testelement.property.JMeterProperty#mergeIn(org.apache.jmeter.testelement.property.JMeterProperty)
  -     */
  -    public void mergeIn(JMeterProperty prop)
  -    {
  -        if (((MapProperty) prop).value == value)
  -        {
  -            return;
  -        }
  -        if (prop instanceof MapProperty)
  -        {
  -            PropertyIterator iter = ((MapProperty) prop).valueIterator();
  -            while (iter.hasNext())
  -            {
  -                JMeterProperty subProp = iter.next();
  -                if (!value.containsKey(subProp.getName()))
  -                {
  -                    value.put(subProp.getName(), subProp);
  -                }
  -            }
  -        }
  -        else
  -        {
  -            addProperty(prop.getName(), prop);
  -        }
  -    }
  -
       public void addProperty(String name, JMeterProperty prop)
       {
           if (value.size() == 0 || value.values().iterator().next().getClass().equals(prop.getClass()))
           {
  -            value.put(name, prop);
  +            if (!value.containsKey(name))
  +           {
  +               value.put(name, prop);
  +           }
           }
       }
   
       public void setMap(Map newMap)
       {
  -        value = newMap;
  +        if (isRunningVersion())
  +        {
  +            savedValue = this.value;
  +        }
  +        value = normalizeMap(newMap);
       }
   
       /**
  @@ -182,43 +154,20 @@
               value = savedValue;
               savedValue = null;
           }
  -        Iterator iter = value.keySet().iterator();
  -        while (iter.hasNext())
  -        {
  -            String name = (String) iter.next();
  -            JMeterProperty prop = (JMeterProperty) value.get(name);
  -            if (prop.isTemporary(owner))
  -            {
  -                iter.remove();
  -            }
  -            else
  -            {
  -                prop.recoverRunningVersion(owner);
  -            }
  -        }
  +        recoverRunningVersionOfSubElements(owner);
       }
   
  -    public void setRunningVersion(boolean running)
  +    public void clear()
       {
  -        super.setRunningVersion(running);
  -        PropertyIterator iter = valueIterator();
  -        while (iter.hasNext())
  -        {
  -            iter.next().setRunningVersion(running);
  -        }
  +        value.clear();
       }
   
  -    /**
  -         * @see org.apache.jmeter.testelement.property.JMeterProperty#setTemporary(boolean, org.apache.jmeter.testelement.TestElement)
  -         */
  -    public void setTemporary(boolean temporary, TestElement owner)
  +    /* (non-Javadoc)
  +     * @see org.apache.jmeter.testelement.property.MultiProperty#iterator()
  +     */
  +    public PropertyIterator iterator()
       {
  -        super.setTemporary(temporary, owner);
  -        PropertyIterator iter = valueIterator();
  -        while (iter.hasNext())
  -        {
  -            iter.next().setTemporary(temporary, owner);
  -        }
  +        return valueIterator();
       }
   
   }
  
  
  
  1.7       +21 -9     jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/TestElementProperty.java
  
  Index: TestElementProperty.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/TestElementProperty.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- TestElementProperty.java	2 May 2003 21:38:09 -0000	1.6
  +++ TestElementProperty.java	5 May 2003 17:23:02 -0000	1.7
  @@ -2,7 +2,7 @@
   
   import org.apache.jmeter.testelement.TestElement;
   
  -public class TestElementProperty extends AbstractProperty
  +public class TestElementProperty extends MultiProperty
   {
       TestElement value;
       TestElement savedValue = null;
  @@ -113,16 +113,28 @@
       }
   
       /* (non-Javadoc)
  -     * @see org.apache.jmeter.testelement.property.JMeterProperty#setTemporary(boolean, TestElement)
  +     * @see org.apache.jmeter.testelement.property.MultiProperty#addProperty(org.apache.jmeter.testelement.property.JMeterProperty)
        */
  -    public void setTemporary(boolean temporary, TestElement owner)
  +    public void addProperty(JMeterProperty prop)
       {
  -        super.setTemporary(temporary, owner);
  -        PropertyIterator iter = value.propertyIterator();
  -        while (iter.hasNext())
  -        {
  -            iter.next().setTemporary(temporary, owner);
  -        }
  +        value.setProperty(prop);
  +    }
  +
  +    /* (non-Javadoc)
  +     * @see org.apache.jmeter.testelement.property.MultiProperty#clear()
  +     */
  +    public void clear()
  +    {
  +        value.clear();
   
       }
  +
  +    /* (non-Javadoc)
  +     * @see org.apache.jmeter.testelement.property.MultiProperty#iterator()
  +     */
  +    public PropertyIterator iterator()
  +    {
  +        return value.propertyIterator();
  +    }
  +
   }
  
  
  
  1.1                  jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/MultiProperty.java
  
  Index: MultiProperty.java
  ===================================================================
  /*
   * Created on May 4, 2003
   *
   * To change the template for this generated file go to
   * Window>Preferences>Java>Code Generation>Code and Comments
   */
  package org.apache.jmeter.testelement.property;
  
  import org.apache.jmeter.testelement.TestElement;
  
  /**
   * For JMeterProperties that hold multiple properties within, provides a simple interface
   * for retrieving a property iterator for the sub values.
   */
  public abstract class MultiProperty extends AbstractProperty
  {
      
      public MultiProperty(String name)
      {
          super(name);
      }
      
      public MultiProperty()
      {
          super();
      }
      /**
       * Get the property iterator to iterate through the sub-values of this JMeterProperty
       * @return
       */
      public abstract PropertyIterator iterator();
      
      /**
       * Add a property to the collection.
       * @param prop
       */
      public abstract void addProperty(JMeterProperty prop);
      
      /**
       * Clear away all values in the property.
       *
       */
      public abstract void clear();
  
      public void setTemporary(boolean temporary, TestElement owner)
      {
          super.setTemporary(temporary, owner);
          PropertyIterator iter = iterator();
          while (iter.hasNext())
          {
              iter.next().setTemporary(temporary, owner);
          }
      }
  
      public void setRunningVersion(boolean running)
      {
          super.setRunningVersion(running);
          PropertyIterator iter = iterator();
          while (iter.hasNext())
          {
              iter.next().setRunningVersion(running);
          }
      }
  
      protected void recoverRunningVersionOfSubElements(TestElement owner)
      {
          PropertyIterator iter = iterator();
          while (iter.hasNext())
          {
              JMeterProperty prop = iter.next();
              if (prop.isTemporary(owner))
              {
                  iter.remove();
              }
              else
              {
                  prop.recoverRunningVersion(owner);
              }
          }
      }
  
      public void mergeIn(JMeterProperty prop)
      {
          if (prop.getObjectValue() == getObjectValue())
          {
              return;
          }
          if (prop instanceof MultiProperty)
          {
              PropertyIterator iter = ((MultiProperty) prop).iterator();
              while (iter.hasNext())
              {
                  addProperty(iter.next());
              }
          }
          else
          {
              addProperty(prop);
          }
      }
  }
  
  
  
  1.1                  jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/NumberProperty.java
  
  Index: NumberProperty.java
  ===================================================================
  /*
   * Created on May 5, 2003
   *
   * To change the template for this generated file go to
   * Window>Preferences>Java>Code Generation>Code and Comments
   */
  package org.apache.jmeter.testelement.property;
  
  /**
   * @author ano ano
   *
   * To change the template for this generated type comment go to
   * Window>Preferences>Java>Code Generation>Code and Comments
   */
  public abstract class NumberProperty extends AbstractProperty
  {
  
      public NumberProperty(String name)
      {
          super(name);
      }
  
      public NumberProperty()
      {
          super();
      }
  
      /**
       * Set the value of the property with a Number object.
       * @param n
       */
      protected abstract void setNumberValue(Number n);
  
      /**
       * Set the value of the property with a String object.
       * @param n
       * @throws NumberFormatException
       */
      protected abstract void setNumberValue(String n) throws NumberFormatException;
  
      public void setObjectValue(Object v)
      
      {
          if (v instanceof Number)
          {
              setNumberValue((Number) v);
          }
          else
          {
              try
              {
                  setNumberValue(v.toString());
              }
              catch (RuntimeException e)
              {}
          }
      }
      
      /**
       * @see java.lang.Comparable#compareTo(java.lang.Object)
       */
      public int compareTo(Object arg0)
      {
          if(arg0 instanceof JMeterProperty)
          {
              double compareValue = getDoubleValue() - ((JMeterProperty)arg0).getDoubleValue();
              if(compareValue < 0)
              {
                  return -1;
              }
              else if(compareValue == 0)
              {
                  return 0;
              }
              else
              {
                  return 1;
              }
          }
          else
          {
              return -1;
          }
      }
  
  }
  
  
  
  1.14      +2 -2      jakarta-jmeter/src/core/org/apache/jmeter/visualizers/gui/AbstractVisualizer.java
  
  Index: AbstractVisualizer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/visualizers/gui/AbstractVisualizer.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- AbstractVisualizer.java	2 May 2003 15:53:32 -0000	1.13
  +++ AbstractVisualizer.java	5 May 2003 17:23:02 -0000	1.14
  @@ -33,7 +33,7 @@
   public abstract class AbstractVisualizer extends AbstractJMeterGuiComponent implements Visualizer, ChangeListener, UnsharedComponent
   {
   
  -    transient private static Logger log = Hierarchy.getDefaultHierarchy().getLoggerFor("jmeter.gui");
  +    transient protected static Logger log = Hierarchy.getDefaultHierarchy().getLoggerFor("jmeter.gui");
   
       private FilePanel filePanel;
       private JCheckBox errorLogging;
  
  
  
  1.22      +12 -4     jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java
  
  Index: ProxyControl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- ProxyControl.java	29 Apr 2003 15:47:43 -0000	1.21
  +++ ProxyControl.java	5 May 2003 17:23:02 -0000	1.22
  @@ -67,6 +67,7 @@
   import org.apache.jmeter.config.ConfigTestElement;
   import org.apache.jmeter.engine.util.ValueReplacer;
   import org.apache.jmeter.exceptions.IllegalUserActionException;
  +import org.apache.jmeter.functions.InvalidVariableException;
   import org.apache.jmeter.gui.GuiPackage;
   import org.apache.jmeter.gui.tree.JMeterTreeModel;
   import org.apache.jmeter.gui.tree.JMeterTreeNode;
  @@ -432,10 +433,17 @@
   
       protected void replaceValues(TestElement sampler, TestElement[] configs)
           {
  -            GuiPackage.getInstance().getReplacer().reverseReplace(sampler);
  -            for (int i = 0; i < configs.length; i++)
  +            try
               {
  -                GuiPackage.getInstance().getReplacer().reverseReplace(configs[i]);
  +                GuiPackage.getInstance().getReplacer().reverseReplace(sampler);
  +                for (int i = 0; i < configs.length; i++)
  +                {
  +                    GuiPackage.getInstance().getReplacer().reverseReplace(configs[i]);
  +                }
  +            }
  +            catch (InvalidVariableException e)
  +            {
  +                log.warn("Invalid variables included for replacement into recorded sample",e);
               }
           }
       public static class Test extends TestCase
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org