mstover1    2003/03/25 09:24:35

  Modified:    src/core/org/apache/jmeter/control/gui TestPlanGui.java
                        WorkBenchGui.java
               src/core/org/apache/jmeter/engine/util CompoundVariable.java
               src/core/org/apache/jmeter/gui
                        AbstractJMeterGuiComponent.java
               src/core/org/apache/jmeter/gui/action EnableComponent.java
                        Start.java
               src/core/org/apache/jmeter/gui/tree JMeterTreeModel.java
                        JMeterTreeNode.java
               src/core/org/apache/jmeter/testelement
                        AbstractTestElement.java TestElement.java
                        TestElementCloner.java TestPlan.java
               src/core/org/apache/jmeter/threads/gui ThreadGroupGui.java
               src/core/org/apache/jmeter/util JMeterUtils.java
               src/protocol/http/org/apache/jmeter/protocol/http/control
                        AuthManager.java
  Added:       src/core/org/apache/jmeter/engine/util
                        DisabledComponentRemover.java
               src/core/org/apache/jmeter/testelement/property
                        AbstractProperty.java CollectionProperty.java
                        FloatProperty.java FunctionProperty.java
                        IntegerProperty.java JMeterProperty.java
                        MapProperty.java PropertyIterator.java
                        PropertyIteratorImpl.java StringProperty.java
                        TestElementProperty.java
  Removed:     src/core/org/apache/jmeter/testelement
                        TestElementProperty.java
  Log:
  new JMeterProperty classes (not yet plugged into JMeter's code)
  patch from ElanChezhiyan to fix enabling/disabling of JMeter components
  
  Revision  Changes    Path
  1.4       +2 -5      
jakarta-jmeter/src/core/org/apache/jmeter/control/gui/TestPlanGui.java
  
  Index: TestPlanGui.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/control/gui/TestPlanGui.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TestPlanGui.java  28 Feb 2003 14:21:46 -0000      1.3
  +++ TestPlanGui.java  25 Mar 2003 17:24:32 -0000      1.4
  @@ -79,16 +79,13 @@
        */
       public void modifyTestElement(TestElement plan)
       {
  +        super.configureTestElement(plan);
           if (plan instanceof TestPlan)
           {
               TestPlan tp = (TestPlan) plan;
  -            tp.setName(getName());
               tp.setFunctionalMode(functionalMode.isSelected());
               tp.setUserDefinedVariables((Arguments) argsPanel.createTestElement());
           }
  -        plan.setProperty(TestElement.GUI_CLASS, this.getClass().getName());
  -        plan.setProperty(TestElement.TEST_CLASS, TestPlan.class.getName());
  -
       }
   
       /****************************************
  
  
  
  1.6       +6 -30     
jakarta-jmeter/src/core/org/apache/jmeter/control/gui/WorkBenchGui.java
  
  Index: WorkBenchGui.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/control/gui/WorkBenchGui.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- WorkBenchGui.java 28 Feb 2003 14:21:46 -0000      1.5
  +++ WorkBenchGui.java 25 Mar 2003 17:24:32 -0000      1.6
  @@ -63,7 +63,7 @@
   import javax.swing.border.Border;
   import javax.swing.border.EmptyBorder;
   
  -import org.apache.jmeter.gui.JMeterGUIComponent;
  +import org.apache.jmeter.gui.AbstractJMeterGuiComponent;
   import org.apache.jmeter.gui.NamePanel;
   import org.apache.jmeter.gui.tree.JMeterTreeNode;
   import org.apache.jmeter.gui.util.MenuFactory;
  @@ -80,9 +80,8 @@
    [EMAIL PROTECTED]   1.0
    ***************************************/
   
  -public class WorkBenchGui extends JPanel implements JMeterGUIComponent
  +public class WorkBenchGui extends AbstractJMeterGuiComponent
   {
  -    NamePanel namePanel;
       private JMeterTreeNode node;
   
   
  @@ -91,8 +90,7 @@
         ***************************************/
        public WorkBenchGui()
        {
  -             namePanel = new NamePanel();
  -             setName(getStaticLabel());
  +             super();
                init();
        }
   
  @@ -107,26 +105,6 @@
        }
   
        /****************************************
  -      * !ToDoo (Method description)
  -      *
  -      [EMAIL PROTECTED]   !ToDo (Return description)
  -      ***************************************/
  -     public String getName()
  -     {
  -             return namePanel.getName();
  -     }
  -
  -     /****************************************
  -      * !ToDo (Method description)
  -      *
  -      [EMAIL PROTECTED] name  !ToDo (Parameter description)
  -      ***************************************/
  -     public void setName(String name)
  -     {
  -             namePanel.setName(name);
  -     }
  -
  -     /****************************************
         * !ToDo (Method description)
         *
         [EMAIL PROTECTED]   !ToDo (Return description)
  @@ -144,9 +122,7 @@
        */
       public void modifyTestElement(TestElement wb)
       {
  -        wb.setProperty(TestElement.NAME, namePanel.getName());
  -        wb.setProperty(TestElement.GUI_CLASS, this.getClass().getName());
  -        wb.setProperty(TestElement.TEST_CLASS, wb.getClass().getName());
  +        super.configureTestElement(wb);
       }
   
        /****************************************
  @@ -207,7 +183,7 @@
                mainPanel.add(panelTitleLabel);
   
                // NAME
  -             mainPanel.add(namePanel);
  +             mainPanel.add(getNamePanel());
   
                this.add(mainPanel);
        }
  
  
  
  1.5       +13 -1     
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.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- CompoundVariable.java     14 Mar 2003 21:15:36 -0000      1.4
  +++ CompoundVariable.java     25 Mar 2003 17:24:32 -0000      1.5
  @@ -88,6 +88,8 @@
   {
       transient private static Logger log =
           Hierarchy.getDefaultHierarchy().getLoggerFor(JMeterUtils.ENGINE);
  +        
  +    private String rawParameters;
       
       private JMeterVariables threadVars;
        private Map varMap = new HashMap();
  @@ -139,6 +141,15 @@
                Sampler currentSampler = context.getCurrentSampler();
                return execute( previousResult, currentSampler );
        }
  +    
  +    /**
  +     * Allows the retrieval of the original String prior to it being compiled.
  +     * @return String
  +     */
  +    public String getRawParameters()
  +    {
  +        return rawParameters;
  +    }
    
        /**
        * @see Function#execute(SampleResult, Sampler)
  @@ -220,6 +231,7 @@
        public void setParameters(String parameters)
                throws InvalidVariableException
        {
  +        this.rawParameters = parameters;
                if (parameters == null || parameters.length() == 0)
                        return;
                
  
  
  
  1.1                  
jakarta-jmeter/src/core/org/apache/jmeter/engine/util/DisabledComponentRemover.java
  
  Index: DisabledComponentRemover.java
  ===================================================================
  package org.apache.jmeter.engine.util;
  
  import java.util.LinkedList;
  
  import org.apache.jmeter.testelement.TestElement;
  import org.apache.jorphan.collections.HashTree;
  import org.apache.jorphan.collections.HashTreeTraverser;
  
  /**
   * @author Administrator
   *
   * To change this generated comment edit the template variable "typecomment":
   * Window>Preferences>Java>Templates.
   */
  public class DisabledComponentRemover implements HashTreeTraverser
  {
      HashTree tree;
      LinkedList stack = new LinkedList();
      
      public DisabledComponentRemover(HashTree tree)
      {
          this.tree = tree;
      }
  
      /**
       * @see 
org.apache.jorphan.collections.HashTreeTraverser#addNode(java.lang.Object, 
org.apache.jorphan.collections.HashTree)
       */
      public void addNode(Object node, HashTree subTree)
      {
          stack.addLast(node);
      }
  
      /**
       * @see org.apache.jorphan.collections.HashTreeTraverser#subtractNode()
       */
      public void subtractNode()
      {
          TestElement lastNode = (TestElement)stack.removeLast();
          if(!lastNode.getPropertyAsBoolean(TestElement.ENABLED))
          {
              tree.getTree(stack).remove(lastNode);
          }
      }
  
      /**
       * @see org.apache.jorphan.collections.HashTreeTraverser#processPath()
       */
      public void processPath()
      {}
  
  }
  
  
  
  1.6       +15 -2     
jakarta-jmeter/src/core/org/apache/jmeter/gui/AbstractJMeterGuiComponent.java
  
  Index: AbstractJMeterGuiComponent.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/AbstractJMeterGuiComponent.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- AbstractJMeterGuiComponent.java   5 Feb 2003 05:12:06 -0000       1.5
  +++ AbstractJMeterGuiComponent.java   25 Mar 2003 17:24:33 -0000      1.6
  @@ -61,6 +61,9 @@
   
   import org.apache.jmeter.gui.tree.JMeterTreeNode;
   import org.apache.jmeter.testelement.TestElement;
  +import org.apache.jmeter.util.JMeterUtils;
  +import org.apache.jorphan.logging.LoggingManager;
  +import org.apache.log.Logger;
   /**
    * This abstract class takes care of the most basic functions necessary to create a 
viable
    * JMeter GUI component.  It extends JPanel and implements JMeterGUIComponent.  This
  @@ -83,6 +86,7 @@
        extends JPanel
        implements JMeterGUIComponent
   {
  +    private static Logger log = LoggingManager.getLoggerFor(JMeterUtils.GUI);
        private boolean enabled = true;
        private JMeterTreeNode node;
        
  @@ -90,7 +94,9 @@
        /**
         * When constructing a new component, this takes care of basic tasks like
         * setting up the Name Panel and assigning the class's static label as
  -      * the name to start.
         * @see java.lang.Object#Object()
         */
  +      * the name to start.
  +      * @see java.lang.Object#Object()
  +      */
        public AbstractJMeterGuiComponent()
        {
                namePanel = new NamePanel();
  @@ -118,6 +124,7 @@
         */
        public void setEnabled(boolean e)
        {
  +        log.debug("Setting enabled: " + e);
                enabled = e;
        }
        
  @@ -132,7 +139,9 @@
        /**
         * Provides the Name Panel for extending classes.  Extending classes are free 
to
         * place it as desired within the component, or not at all.
  -      * 
         * @return NamePanel
         */
  +      * 
  +      * @return NamePanel
  +      */
        protected NamePanel getNamePanel()
        {
                return namePanel;
  @@ -151,6 +160,7 @@
        public void configure(TestElement element)
        {
                setName((String) element.getProperty(TestElement.NAME));
  +        enabled = element.getPropertyAsBoolean(TestElement.ENABLED);
        }
        
        /**
  @@ -165,6 +175,9 @@
                mc.setProperty(TestElement.NAME, getName());
                mc.setProperty(TestElement.GUI_CLASS, this.getClass().getName());
                mc.setProperty(TestElement.TEST_CLASS, mc.getClass().getName());
  +                //This  stores the state of the TestElement 
  +                log.debug("setting element to enabled: " + enabled);
  +                mc.setProperty(TestElement.ENABLED,new Boolean(enabled).toString());
        }
        
        /**
  
  
  
  1.2       +8 -2      
jakarta-jmeter/src/core/org/apache/jmeter/gui/action/EnableComponent.java
  
  Index: EnableComponent.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/action/EnableComponent.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- EnableComponent.java      19 Aug 2002 22:33:13 -0000      1.1
  +++ EnableComponent.java      25 Mar 2003 17:24:33 -0000      1.2
  @@ -5,6 +5,9 @@
   import java.util.Set;
   
   import org.apache.jmeter.gui.GuiPackage;
  +import org.apache.jmeter.util.JMeterUtils;
  +import org.apache.jorphan.logging.LoggingManager;
  +import org.apache.log.Logger;
   
   /**
    * @author Administrator
  @@ -13,6 +16,7 @@
    * Window>Preferences>Java>Templates.
    */
   public class EnableComponent implements Command {
  +    private static Logger log = LoggingManager.getLoggerFor(JMeterUtils.GUI);
        
        public static final String ENABLE = "enable";
        public static final String DISABLE = "disable";
  @@ -30,11 +34,13 @@
        public void doAction(ActionEvent e) {
                if(e.getActionCommand().equals(ENABLE))
                {
  -                     
GuiPackage.getInstance().getTreeListener().getCurrentNode().setEnabled(true);
  +            log.debug("enabling current gui object");
  +                        GuiPackage.getInstance().getCurrentGui().setEnabled(true);
                }
                else if(e.getActionCommand().equals(DISABLE))
                {
  -                     
GuiPackage.getInstance().getTreeListener().getCurrentNode().setEnabled(false);
  +            log.debug("disabling current gui object");
  +                        GuiPackage.getInstance().getCurrentGui().setEnabled(false);
                }
        }
   
  
  
  
  1.7       +3 -0      jakarta-jmeter/src/core/org/apache/jmeter/gui/action/Start.java
  
  Index: Start.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/action/Start.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Start.java        5 Feb 2003 05:12:07 -0000       1.6
  +++ Start.java        25 Mar 2003 17:24:33 -0000      1.7
  @@ -62,6 +62,7 @@
   import org.apache.jmeter.engine.JMeterEngineException;
   import org.apache.jmeter.engine.StandardJMeterEngine;
   import org.apache.jmeter.engine.TreeCloner;
  +import org.apache.jmeter.engine.util.DisabledComponentRemover;
   import org.apache.jmeter.gui.GuiPackage;
   import org.apache.jmeter.util.JMeterUtils;
   import org.apache.jorphan.collections.HashTree;
  @@ -133,6 +134,8 @@
                engine = new StandardJMeterEngine();
                HashTree testTree = gui.getTreeModel().getTestPlan();
                convertSubTree(testTree);
  +        DisabledComponentRemover remover = new DisabledComponentRemover(testTree);
  +        testTree.traverse(remover);
                testTree.add(testTree.getArray()[0],gui.getMainFrame());
           TreeCloner cloner = new TreeCloner(false);
           testTree.traverse(cloner);
  
  
  
  1.11      +12 -1     
jakarta-jmeter/src/core/org/apache/jmeter/gui/tree/JMeterTreeModel.java
  
  Index: JMeterTreeModel.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/tree/JMeterTreeModel.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- JMeterTreeModel.java      18 Mar 2003 13:41:13 -0000      1.10
  +++ JMeterTreeModel.java      25 Mar 2003 17:24:33 -0000      1.11
  @@ -158,6 +158,17 @@
               throw new IllegalUserActionException("This node cannot hold 
sub-elements");
           }
           JMeterTreeNode newNode = new JMeterTreeNode((TestElement) component, this);
  +        
  +        //This check the state of the TestElement and if returns false it disable 
the loaded node
  +        try{
  +            if(((String)component.getProperty(TestElement.ENABLED)).equals("false"))
  +            {
  +                newNode.setEnabled(false);           
  +            }
  +        }catch(Exception e){
  +            newNode.setEnabled(true);
  +        }
  +
           this.insertNodeInto(newNode, node, node.getChildCount());
           return newNode;
       }
  
  
  
  1.8       +4 -3      
jakarta-jmeter/src/core/org/apache/jmeter/gui/tree/JMeterTreeNode.java
  
  Index: JMeterTreeNode.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/tree/JMeterTreeNode.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- JMeterTreeNode.java       28 Feb 2003 14:21:47 -0000      1.7
  +++ JMeterTreeNode.java       25 Mar 2003 17:24:33 -0000      1.8
  @@ -63,6 +63,7 @@
   import org.apache.jmeter.gui.GUIFactory;
   import org.apache.jmeter.gui.GuiPackage;
   import org.apache.jmeter.gui.JMeterGUIComponent;
  +import org.apache.jmeter.testelement.AbstractTestElement;
   import org.apache.jmeter.testelement.TestElement;
   import org.apache.log.Hierarchy;
   import org.apache.log.Logger;
  @@ -92,12 +93,12 @@
   
        public boolean isEnabled()
        {
  -             return enabled;
  +             return 
((AbstractTestElement)createTestElement()).getPropertyAsBoolean(TestElement.ENABLED);
        }
   
        public void setEnabled(boolean enabled)
        {
  -             this.enabled = enabled;
  +             createTestElement().setProperty(TestElement.ENABLED,new 
Boolean(enabled));
        }
   
        public ImageIcon getIcon()
  
  
  
  1.11      +61 -2     
jakarta-jmeter/src/core/org/apache/jmeter/testelement/AbstractTestElement.java
  
  Index: AbstractTestElement.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/AbstractTestElement.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- AbstractTestElement.java  28 Feb 2003 14:21:47 -0000      1.10
  +++ AbstractTestElement.java  25 Mar 2003 17:24:33 -0000      1.11
  @@ -9,6 +9,9 @@
   import java.util.List;
   import java.util.Map;
   
  +import org.apache.jmeter.testelement.property.JMeterProperty;
  +import org.apache.jmeter.testelement.property.PropertyIterator;
  +import org.apache.jmeter.testelement.property.PropertyIteratorImpl;
   import org.apache.log.Hierarchy;
   import org.apache.log.Logger;
   
  @@ -25,6 +28,9 @@
       private Map testInfo = Collections.synchronizedMap(new HashMap());
       transient private static Logger log =
               Hierarchy.getDefaultHierarchy().getLoggerFor("jmeter.elements");
  +    private List temporaryMembers;
  +            
  +    private boolean runningVersion;
   
       /****************************************
        * !ToDo (Method description)
  @@ -67,7 +73,21 @@
        ***************************************/
       public void addTestElement(TestElement el)
       {
  -        if(el.getClass().equals(this.getClass()))
  +        if(isRunningVersion())
  +        {
  +            Iterator iter = temporaryMembers.iterator();
  +            while (iter.hasNext())
  +            {
  +                TestElement item = (TestElement)iter.next();
  +                if(item.getClass().equals(el.getClass()))
  +                {
  +                    item.addTestElement(el);
  +                    return;
  +                }                
  +            }
  +            temporaryMembers.add(el);
  +        }        
  +        else if(el.getClass().equals(this.getClass()))
           {
               mergeIn(el);
           }
  @@ -404,6 +424,15 @@
       {
           return getCollectionValue(getProperty(key));
       }
  +    
  +    public void addProperty(JMeterProperty property)
  +    {
  +    }
  +    
  +    public PropertyIterator propertyIterator()
  +    {
  +        return new PropertyIteratorImpl(testInfo.values());
  +    }
   
       /****************************************
        * !ToDo (Method description)
  @@ -461,5 +490,35 @@
                   }
               }
           }
  +    }
  +    /**
  +     * Returns the runningVersion.
  +     * @return boolean
  +     */
  +    public boolean isRunningVersion()
  +    {
  +        return runningVersion;
  +    }
  +
  +    /**
  +     * Sets the runningVersion.
  +     * @param runningVersion The runningVersion to set
  +     */
  +    public void setRunningVersion(boolean runningVersion)
  +    {
  +        if(runningVersion)
  +        {
  +            temporaryMembers = new LinkedList();
  +        }
  +        else
  +        {
  +            temporaryMembers = null;
  +        }
  +        this.runningVersion = runningVersion;
  +    }
  +    
  +    public void recoverRunningVersion()
  +    {
  +        temporaryMembers.clear();
       }
   }
  
  
  
  1.5       +52 -3     
jakarta-jmeter/src/core/org/apache/jmeter/testelement/TestElement.java
  
  Index: TestElement.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/TestElement.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- TestElement.java  28 Feb 2003 14:21:47 -0000      1.4
  +++ TestElement.java  25 Mar 2003 17:24:33 -0000      1.5
  @@ -1,6 +1,9 @@
   package org.apache.jmeter.testelement;
   import java.util.Collection;
   
  +import org.apache.jmeter.testelement.property.JMeterProperty;
  +import org.apache.jmeter.testelement.property.PropertyIterator;
  +
   /****************************************
    * <p>
    *
  @@ -28,8 +31,12 @@
         ***************************************/
        public final static String GUI_CLASS = "TestElement.gui_class";
        /****************************************
  -      * !ToDo (Field description)
  -      ***************************************/
  +       
  +        /****************************************
  +         * This Filed used as identification for each object state
  +         ***************************************/
  +        public final static String ENABLED = "TestElement.enabled";
  +
        public final static String TEST_CLASS = "TestElement.test_class";
   
   
  @@ -39,6 +46,36 @@
         [EMAIL PROTECTED] child  !ToDo
         ***************************************/
        public void addTestElement(TestElement child);
  +    
  +    /**
  +     * Returns true or false whether the element is the running version.
  +     * @return boolean
  +     */
  +    public boolean isRunningVersion();
  +    
  +    /**
  +     * Return a property as a boolean value.
  +     * @param key
  +     * @return boolean
  +     */
  +    public boolean getPropertyAsBoolean(String key);
  +    
  +    /**
  +     * Make the test element the running version, or make it no longer the
  +     * running version. This tells the test element that it's current state must
  +     * be retrievable by a call to recoverRunningVersion().  It is kind of like
  +     * making the TestElement Read- Only, but not as strict.  Changes can be
  +     * made and the element can be modified, but the state of the element at the
  +     * time of the call to setRunningVersion() must be recoverable.
  +     * @param perm
  +     */
  +    public void setRunningVersion(boolean run);
  +    
  +    /**
  +     * Tells the test element to return to the state it was in when
  +     * makeRunningVersion() was called.
  +     */
  +    public void recoverRunningVersion();
   
        /****************************************
         * !ToDoo (Method description)
  @@ -61,6 +98,18 @@
        public Object getProperty(String key);
   
        public String getPropertyAsString(String key);
  +    
  +    /**
  +     * Adds a property to the TestElement.
  +     * @param property
  +     */
  +    public void addProperty(JMeterProperty property);
  +    
  +    /**
  +     * Get a Property Iterator for the TestElements properties.
  +     * @return PropertyIterator
  +     */
  +    public PropertyIterator propertyIterator();
   
        /****************************************
         * !ToDo (Method description)
  
  
  
  1.2       +68 -5     
jakarta-jmeter/src/core/org/apache/jmeter/testelement/TestElementCloner.java
  
  Index: TestElementCloner.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/TestElementCloner.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TestElementCloner.java    21 Feb 2003 16:33:39 -0000      1.1
  +++ TestElementCloner.java    25 Mar 2003 17:24:33 -0000      1.2
  @@ -60,7 +60,7 @@
        */
       public void startProperty(Object key)
       {
  -        stack.add(new TestElementProperty(key));
  +        stack.add(new CloningProperty(key));
       }
   
       /**
  @@ -68,11 +68,11 @@
        */
       public void endProperty(Object key)
       {
  -        TestElementProperty prop = (TestElementProperty)stack.removeLast();
  +        CloningProperty prop = (CloningProperty)stack.removeLast();
           addProperty(prop,stack.getLast());
       }
       
  -    private void addProperty(TestElementProperty prop,Object parent)
  +    private void addProperty(CloningProperty prop,Object parent)
       {
           if(parent instanceof TestElement)
           {
  @@ -92,9 +92,9 @@
           try
           {
               Object parent = stack.getLast();
  -            if(parent instanceof TestElementProperty)
  +            if(parent instanceof CloningProperty)
               {
  -                ((TestElementProperty)parent).setValue(value);
  +                ((CloningProperty)parent).setValue(value);
               }
               else if(parent instanceof Collection)
               {
  @@ -151,6 +151,69 @@
       {
           Collection cloned = (Collection)stack.removeLast();
           simplePropertyValue(cloned);
  +    }
  +    
  +    /**
  +     * Inner class to help deal with properties.
  +     * @author Administrator
  +     *
  +     * To change this generated comment edit the template variable "typecomment":
  +     * Window>Preferences>Java>Templates.
  +     */
  +    class CloningProperty
  +    {
  +        Object key;
  +        Object value;
  +    
  +        public CloningProperty()
  +        {
  +        }
  +    
  +        public CloningProperty(Object key, Object value)
  +        {
  +            setKey(key);
  +            setValue(value);
  +        }
  +    
  +        public CloningProperty(Object key)
  +        {
  +            setKey(key);
  +        }
  +        /**
  +         * Returns the key.
  +         * @return Object
  +         */
  +        public Object getKey()
  +        {
  +            return key;
  +        }
  +
  +        /**
  +         * Returns the value.
  +         * @return Object
  +         */
  +        public Object getValue()
  +        {
  +            return value;
  +        }
  +
  +        /**
  +         * Sets the key.
  +         * @param key The key to set
  +         */
  +        public void setKey(Object key)
  +        {
  +            this.key = key;
  +        }
  +
  +        /**
  +         * Sets the value.
  +         * @param value The value to set
  +         */
  +        public void setValue(Object value)
  +        {
  +            this.value = value;
  +        }
       }
   
   }
  
  
  
  1.4       +1 -1      
jakarta-jmeter/src/core/org/apache/jmeter/testelement/TestPlan.java
  
  Index: TestPlan.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/TestPlan.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TestPlan.java     7 Feb 2003 21:33:58 -0000       1.3
  +++ TestPlan.java     25 Mar 2003 17:24:33 -0000      1.4
  @@ -129,7 +129,7 @@
       public void addTestElement(TestElement tg)
       {
           super.addTestElement(tg);
  -        if (tg instanceof ThreadGroup)
  +        if (tg instanceof ThreadGroup && !isRunningVersion())
           {
               addThreadGroup((ThreadGroup) tg);
           }
  
  
  
  1.1                  
jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/AbstractProperty.java
  
  Index: AbstractProperty.java
  ===================================================================
  package org.apache.jmeter.testelement.property;
  
  import java.util.HashMap;
  import java.util.Map;
  
  import org.apache.jmeter.testelement.TestElement;
  import org.apache.jmeter.util.JMeterUtils;
  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 abstract class AbstractProperty implements JMeterProperty
  {
      protected static Logger log = 
LoggingManager.getLoggerFor(JMeterUtils.PROPERTIES);
      private String name;
      private boolean runningVersion = false;
      private Map ownerMap;
  
      public AbstractProperty(String name)
      {
          this.name = name;
      }
  
      public AbstractProperty()
      {
          this("");
      }
      
      protected boolean isEqualType(JMeterProperty prop)
      {
          if(this.getClass().equals(prop.getClass()))
          {
              return true;
          }
          else
          {
              return false;
          }
      }
  
      /**
       * @see org.apache.jmeter.testelement.property.JMeterProperty#isRunningVersion()
       */
      public boolean isRunningVersion()
      {
          return runningVersion;
      }
  
      /**
       * @see org.apache.jmeter.testelement.property.JMeterProperty#getName()
       */
      public String getName()
      {
          return name;
      }
  
      protected void setName(String name)
      {
          this.name = name;
      }
  
      /**
       * @see 
org.apache.jmeter.testelement.property.JMeterProperty#setRunningVersion(boolean)
       */
      public void setRunningVersion(boolean runningVersion)
      {
          this.runningVersion = runningVersion;
      }
  
      /**
       * @see org.apache.jmeter.testelement.property.JMeterProperty#isTemporary()
       */
      public boolean isTemporary(TestElement owner)
      {
          if(ownerMap == null)
          {
              return false;
          }
          else
          {
              return ((boolean[])ownerMap.get(owner))[0];
          }
      }
  
      /**
       * @see 
org.apache.jmeter.testelement.property.JMeterProperty#merge(org.apache.jmeter.testelement.property.JMeterProperty)
       */
      public void mergeIn(JMeterProperty prop)
      {}
  
      /**
       * @see 
org.apache.jmeter.testelement.property.JMeterProperty#setTemporary(boolean)
       */
      public void setTemporary(boolean temporary, TestElement owner)
      {
          if(ownerMap == null)
          {
              ownerMap = new HashMap();
          }
          boolean[] temp = (boolean[])ownerMap.get(owner);
          if(temp != null)
          {
              temp[0] = temporary;
          }
          else
          {
              temp = new boolean[]{temporary};
              ownerMap.put(owner,temp);
          }
      }
  
      /**
       * @see java.lang.Object#clone()
       */
      public Object clone()
      {
          try
          {
              AbstractProperty prop = (AbstractProperty) this.getClass().newInstance();
              prop.name = name;
              prop.runningVersion = runningVersion;
              prop.ownerMap = ownerMap;
              return prop;
          }
          catch (InstantiationException e)
          {
              return null;
          }
          catch (IllegalAccessException e)
          {
              return null;
          }
      }
  
      /**
           * returns 0 if string is invalid or null.
           * @see org.apache.jmeter.testelement.property.JMeterProperty#getIntValue()
           */
      public int getIntValue()
      {
          String val = getStringValue();
          if (val == null)
          {
              return 0;
          }
          try
          {
              return Integer.parseInt(val);
          }
          catch (NumberFormatException e)
          {
              log.error("Tried to parse a non-number string to an integer", e);
              return 0;
          }
      }
  
      /**
       * returns 0 if string is invalid or null.
       * @see org.apache.jmeter.testelement.property.JMeterProperty#getLongValue()
       */
      public long getLongValue()
      {
          String val = getStringValue();
          if (val == null)
          {
              return 0;
          }
          try
          {
              return Long.parseLong(val);
          }
          catch (NumberFormatException e)
          {
              log.error("Tried to parse a non-number string to an integer", e);
              return 0;
          }
      }
  
      /**
       * returns 0 if string is invalid or null.
       * @see org.apache.jmeter.testelement.property.JMeterProperty#getDoubleValue()
       */
      public double getDoubleValue()
      {
          String val = getStringValue();
          if (val == null)
          {
              return 0;
          }
          try
          {
              return Double.parseDouble(val);
          }
          catch (NumberFormatException e)
          {
              log.error("Tried to parse a non-number string to an integer", e);
              return 0;
          }
      }
  
      /**
           * @see 
org.apache.jmeter.testelement.property.JMeterProperty#recoverRunningVersion()
           */
      public void recoverRunningVersion(TestElement owner)
      {}
  
      /**
       * returns 0 if string is invalid or null.
       * @see org.apache.jmeter.testelement.property.JMeterProperty#getFloatValue()
       */
      public float getFloatValue()
      {
          String val = getStringValue();
          if (val == null)
          {
              return 0;
          }
          try
          {
              return Float.parseFloat(val);
          }
          catch (NumberFormatException e)
          {
              log.error("Tried to parse a non-number string to an integer", e);
              return 0;
          }
      }
  
      /**
       * Returns false if string is invalid or null.
       * @see org.apache.jmeter.testelement.property.JMeterProperty#getBooleanValue()
       */
      public boolean getBooleanValue()
      {
          String val = getStringValue();
          if (val == null)
          {
              return false;
          }
          return Boolean.valueOf(val).booleanValue();
      }
      
      /**
           * @see java.lang.Comparable#compareTo(java.lang.Object)
           */
          public int compareTo(Object arg0)
          {
              if(arg0 instanceof JMeterProperty)
              {
                  return 
getStringValue().compareTo(((JMeterProperty)arg0).getStringValue());
              }
              else
              {
                  return -1;
              }
          }
  
  }
  
  
  
  1.1                  
jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/CollectionProperty.java
  
  Index: CollectionProperty.java
  ===================================================================
  package org.apache.jmeter.testelement.property;
  
  import java.util.Collection;
  
  import org.apache.jmeter.testelement.TestElement;
  
  /**
   * @author Administrator
   *
   * To change this generated comment edit the template variable "typecomment":
   * Window>Preferences>Java>Templates.
   */
  public class CollectionProperty extends AbstractProperty
  {
  
      protected Collection value;
  
      public CollectionProperty(String name, Collection value)
      {
          super(name);
          this.value = value;
      }
  
      public CollectionProperty()
      {
          super();
      }
  
      public PropertyIterator iterator()
      {
          return new PropertyIteratorImpl(value);
      }
  
      /**
       * @see org.apache.jmeter.testelement.property.JMeterProperty#getStringValue()
       */
      public String getStringValue()
      {
          return value.toString();
      }
  
      /**
       * @see org.apache.jmeter.testelement.property.JMeterProperty#getObjectValue()
       */
      public Object getObjectValue()
      {
          return value;
      }
  
      public int size()
      {
          return value.size();
      }
  
      /**
       * @see java.lang.Object#clone()
       */
      public Object clone()
      {
          CollectionProperty prop = (CollectionProperty) super.clone();
          prop.value = value;
          return prop;
      }
  
      /**
       * @see 
org.apache.jmeter.testelement.property.JMeterProperty#mergeIn(org.apache.jmeter.testelement.property.JMeterProperty)
       */
      public void mergeIn(JMeterProperty prop)
      {
          if (prop instanceof CollectionProperty)
          {
              PropertyIterator iter = ((CollectionProperty) prop).iterator();
              while (iter.hasNext())
              {
                  value.add(iter.next());
              }
          }
      }
  
      public void setRunningVersion(boolean running)
      {
          super.setRunningVersion(running);
          PropertyIterator iter = iterator();
          while (iter.hasNext())
          {
              iter.next().setRunningVersion(running);
          }
      }
  
      /**
       * @see 
org.apache.jmeter.testelement.property.JMeterProperty#recoverRunningVersion()
       */
      public void recoverRunningVersion(TestElement owner)
      {
          PropertyIterator iter = iterator();
          while (iter.hasNext())
          {
              if (iter.next().isTemporary(owner))
              {
                  iter.remove();
              }
          }
      }
  
      /**
       * @see 
org.apache.jmeter.testelement.property.JMeterProperty#setTemporary(boolean, 
org.apache.jmeter.testelement.TestElement)
       */
      public void setTemporary(boolean temporary, TestElement owner)
      {
          super.setTemporary(temporary, owner);
          PropertyIterator iter = iterator();
          while (iter.hasNext())
          {
              iter.next().setTemporary(temporary, owner);
          }
      }
  
  }
  
  
  
  1.1                  
jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/FloatProperty.java
  
  Index: FloatProperty.java
  ===================================================================
  package org.apache.jmeter.testelement.property;
  
  /**
   * @author Administrator
   *
   * To change this generated comment edit the template variable "typecomment":
   * Window>Preferences>Java>Templates.
   */
  public class FloatProperty extends AbstractProperty
  {
      float value;
      
      public FloatProperty(String name,float value)
      {
          super(name);
          this.value = value;
      }
      
      public FloatProperty()
      {
      }
      
      public void setValue(float value)
      {
          this.value = value;
      }
  
      /**
       * @see org.apache.jmeter.testelement.property.JMeterProperty#getStringValue()
       */
      public String getStringValue()
      {
          return Float.toString(value);
      }
  
      /**
       * @see org.apache.jmeter.testelement.property.JMeterProperty#getObjectValue()
       */
      public Object getObjectValue()
      {
          return new Float(value);
      }
  
      /**
       * @see java.lang.Object#clone()
       */
      public Object clone() 
      {
          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)
          {
              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()
      {
          return value > 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 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 (long)value;
      }
  
  }
  
  
  
  1.1                  
jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/FunctionProperty.java
  
  Index: FunctionProperty.java
  ===================================================================
  package org.apache.jmeter.testelement.property;
  
  import org.apache.jmeter.engine.util.CompoundVariable;
  import org.apache.jmeter.threads.JMeterContextService;
  
  /**
   * @author Administrator
   *
   * To change this generated comment edit the template variable "typecomment":
   * Window>Preferences>Java>Templates.
   */
  public class FunctionProperty extends AbstractProperty
  {
      CompoundVariable function;
      int testIteration = -1;
      String cacheValue;
  
      public FunctionProperty(String name, CompoundVariable func)
      {
          super(name);
          function = func;
      }
  
      public FunctionProperty()
      {
          super();
      }
  
      /**
       * Executes the function (and caches the value for the duration of the test
       * iteration) if the property is a running version.  Otherwise, the raw
       * string representation of the function is provided.
       * @see org.apache.jmeter.testelement.property.JMeterProperty#getStringValue()
       */
      public String getStringValue()
      {
          if(!isRunningVersion())
          {
              return function.getRawParameters();
          }
          else
          {
              int iter = 
JMeterContextService.getContext().getVariables().getIteration();
              if(iter < testIteration)
              {
                  testIteration = -1;
              }
              if(iter > testIteration || cacheValue == null)
              {
                  testIteration = iter;
                  cacheValue = function.execute();
              }
              return cacheValue;
          }
      }
  
      /**
       * @see org.apache.jmeter.testelement.property.JMeterProperty#getObjectValue()
       */
      public Object getObjectValue()
      {
          return function;
      }
      
      public Object clone()
      {
          FunctionProperty prop = (FunctionProperty)super.clone();
          prop.cacheValue = cacheValue;
          prop.testIteration = testIteration;
          prop.function = function;
          return prop;
      }
  
  }
  
  
  
  1.1                  
jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/IntegerProperty.java
  
  Index: IntegerProperty.java
  ===================================================================
  package org.apache.jmeter.testelement.property;
  
  /**
   * @author Administrator
   *
   * To change this generated comment edit the template variable "typecomment":
   * Window>Preferences>Java>Templates.
   */
  public class IntegerProperty extends AbstractProperty
  {
      int value;
      
      public IntegerProperty(String name,int value)
      {
          super(name);
          this.value = value;
      }
      
      public IntegerProperty()
      {
          super();
      }
      
      public void setValue(int value)
      {
          this.value = value;
      }
  
      /**
       * @see org.apache.jmeter.testelement.property.JMeterProperty#getStringValue()
       */
      public String getStringValue()
      {
          return Integer.toString(value);
      }
  
      /**
       * @see org.apache.jmeter.testelement.property.JMeterProperty#getObjectValue()
       */
      public Object getObjectValue()
      {
          return new Integer(value);
      }
  
      /**
       * @see java.lang.Object#clone()
       */
      public Object 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()
      {
          return getIntValue() > 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 value;
      }
  
      /**
       * @see org.apache.jmeter.testelement.property.JMeterProperty#getLongValue()
       */
      public long getLongValue()
      {
          return (long)value;
      }
  
  }
  
  
  
  1.1                  
jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/JMeterProperty.java
  
  Index: JMeterProperty.java
  ===================================================================
  package org.apache.jmeter.testelement.property;
  
  import java.io.Serializable;
  
  import org.apache.jmeter.testelement.TestElement;
  
  /**
   * @author Administrator
   *
   * To change this generated comment edit the template variable "typecomment":
   * Window>Preferences>Java>Templates.
   */
  public interface JMeterProperty extends Serializable, Cloneable, Comparable
  {
      /**
       * Returns whether the property is a running version.
       * @return boolean
       */
      public boolean isRunningVersion();
      
      /**
       * The name of the property.  Typically this should match the name that keys
       * the property's location in the test elements Map.
       * @return String
       */
      public String getName();
      
      /**
       * Make the property a running version or turn it off as the running
       * version.  A property that is made a running version will preserve the
       * current state in such a way that it is retrievable by a future call to
       * 'recoverRunningVersion()'.  Additionally, a property that is a running
       * version will resolve all functions prior to returning it's property
       * value.  A non-running version property will return functions as their
       * uncompiled string representation.
       * @param runningVersion
       */
      public void setRunningVersion(boolean runningVersion);
      
      /**
       * Tell the property to revert to the state at the time 
       * setRunningVersion(true) was called.
       */
      public void recoverRunningVersion(TestElement owner);
      
      /**
       * Indicates whether the property is a temporary property. A property newly
       * created and added to a test element that is currently a running version
       * should be made temporary.
       * @return boolean
       */
      public boolean isTemporary(TestElement owner);
      
      /**
       * Take the given property object and merge it's value with the current
       * property object.  For most property types, this will simply be ignored.
       * But for collection properties and test element properties, more complex
       * behavior is required.
       * @param prop
       */
      public void mergeIn(JMeterProperty prop);
      
      /**
       * A property newly created and added to a test element that is currently a
       * running version should be made temporary.  This indicates it is not part
       * of the running version of the test element and will be deleted when the
       * test element recovers state.
       * @param temporary
       */
      public void setTemporary(boolean temporary, TestElement owner);
      
      public int getIntValue();
      
      public long getLongValue();
      
      public double getDoubleValue();
      
      public float getFloatValue();
      
      public boolean getBooleanValue();
      
      public String getStringValue();
      
      public Object getObjectValue();
      
      public Object clone();
  }
  
  
  
  1.1                  
jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/MapProperty.java
  
  Index: MapProperty.java
  ===================================================================
  package org.apache.jmeter.testelement.property;
  
  import java.util.Iterator;
  import java.util.Map;
  
  import org.apache.jmeter.testelement.TestElement;
  
  /**
   * @author Administrator
   *
   * To change this generated comment edit the template variable "typecomment":
   * Window>Preferences>Java>Templates.
   */
  public class MapProperty extends AbstractProperty
  {
      Map value;
  
      public MapProperty(String name, Map value)
      {
          super(name);
          this.value = value;
      }
  
      public MapProperty()
      {
          super();
      }
  
      /**
       * @see org.apache.jmeter.testelement.property.JMeterProperty#getStringValue()
       */
      public String getStringValue()
      {
          return value.toString();
      }
  
      /**
       * @see org.apache.jmeter.testelement.property.JMeterProperty#getObjectValue()
       */
      public Object getObjectValue()
      {
          return value;
      }
  
      /**
       * @see java.lang.Object#clone()
       */
      public Object clone()
      {
          MapProperty prop = (MapProperty) super.clone();
          prop.value = value;
          return value;
      }
  
      public PropertyIterator valueIterator()
      {
          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 (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);
                  }
              }
          }
      }
  
      /**
       * @see 
org.apache.jmeter.testelement.property.JMeterProperty#recoverRunningVersion(org.apache.jmeter.testelement.TestElement)
       */
      public void recoverRunningVersion(TestElement owner)
      {
          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();
                  value.remove(name);
              }
          }
      }
  
      public void setRunningVersion(boolean running)
      {
          super.setRunningVersion(running);
          PropertyIterator iter = valueIterator();
          while (iter.hasNext())
          {
              iter.next().setRunningVersion(running);
          }
      }
  
      /**
           * @see 
org.apache.jmeter.testelement.property.JMeterProperty#setTemporary(boolean, 
org.apache.jmeter.testelement.TestElement)
           */
      public void setTemporary(boolean temporary, TestElement owner)
      {
          super.setTemporary(temporary, owner);
          PropertyIterator iter = valueIterator();
          while (iter.hasNext())
          {
              iter.next().setTemporary(temporary, owner);
          }
      }
  
  }
  
  
  
  1.1                  
jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/PropertyIterator.java
  
  Index: PropertyIterator.java
  ===================================================================
  package org.apache.jmeter.testelement.property;
  
  /**
   * @author Administrator
   *
   * To change this generated comment edit the template variable "typecomment":
   * Window>Preferences>Java>Templates.
   */
  public interface PropertyIterator
  {
      public boolean hasNext();
      
      public JMeterProperty next();
      
      public void remove();
  }
  
  
  
  1.1                  
jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/PropertyIteratorImpl.java
  
  Index: PropertyIteratorImpl.java
  ===================================================================
  package org.apache.jmeter.testelement.property;
  
  import java.util.Collection;
  import java.util.Iterator;
  
  /**
   * @author Administrator
   *
   * To change this generated comment edit the template variable "typecomment":
   * Window>Preferences>Java>Templates.
   */
  public class PropertyIteratorImpl implements PropertyIterator
  {
  
      Iterator iter;
          
          public PropertyIteratorImpl(Collection value)
          {
              iter = value.iterator();
          }
          
          public boolean hasNext()
          {
              return iter.hasNext();
          }
          
          public JMeterProperty next()
          {
              return (JMeterProperty)iter.next();
          }
  
      /**
       * @see org.apache.jmeter.testelement.property.PropertyIterator#remove()
       */
      public void remove()
      {
          iter.remove();
      }
  
  }
  
  
  
  1.2       +68 -0     
jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/StringProperty.java
  
  
  
  
  1.1                  
jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/TestElementProperty.java
  
  Index: TestElementProperty.java
  ===================================================================
  package org.apache.jmeter.testelement.property;
  
  import org.apache.jmeter.testelement.TestElement;
  
  /**
   * @author Administrator
   *
   * To change this generated comment edit the template variable "typecomment":
   * Window>Preferences>Java>Templates.
   */
  public class TestElementProperty extends AbstractProperty
  {
      TestElement value;
      
      public TestElementProperty(String name,TestElement value)
      {
          super(name);
          this.value = value;
      }
  
      /**
       * @see org.apache.jmeter.testelement.property.JMeterProperty#getStringValue()
       */
      public String getStringValue()
      {
          if(value == null)
          {
              return null;
          }        
          return value.toString();
      }
  
      /**
       * @see org.apache.jmeter.testelement.property.JMeterProperty#getObjectValue()
       */
      public Object getObjectValue()
      {
          return value;
      }
      
      public TestElement getElement()
      {
          return value;
      }
      
      public void setElement(TestElement el)
      {
          value = el;
      }
  
      /**
       * @see java.lang.Object#clone()
       */
      public Object clone() 
      {
          TestElementProperty prop = (TestElementProperty)super.clone();
          prop.value = value;
          return prop;
      }
  
      /**
       * @see 
org.apache.jmeter.testelement.property.JMeterProperty#merge(org.apache.jmeter.testelement.property.JMeterProperty)
       */
      public void mergeIn(JMeterProperty prop)
      {
          if(isEqualType(prop))
          {
              value.addTestElement((TestElement)prop.getObjectValue());
          }
      }
  
      /**
       * @see 
org.apache.jmeter.testelement.property.JMeterProperty#recoverRunningVersion()
       */
      public void recoverRunningVersion(TestElement owner)
      {
          super.recoverRunningVersion(null);
          value.recoverRunningVersion();
      }
  
      /**
       * @see 
org.apache.jmeter.testelement.property.JMeterProperty#setRunningVersion(boolean)
       */
      public void setRunningVersion(boolean runningVersion)
      {
          super.setRunningVersion(runningVersion);
          value.setRunningVersion(runningVersion);
      }
  
      /**
       * @see 
org.apache.jmeter.testelement.property.JMeterProperty#setTemporary(boolean, 
org.apache.jmeter.testelement.TestElement)
       */
      public void setTemporary(boolean temporary, TestElement owner)
      {
          super.setTemporary(temporary, owner);
          PropertyIterator iter = value.propertyIterator();
          while(iter.hasNext())
          {
              iter.next().setTemporary(temporary,owner);
          }
          
      }
  
  }
  
  
  
  1.6       +7 -32     
jakarta-jmeter/src/core/org/apache/jmeter/threads/gui/ThreadGroupGui.java
  
  Index: ThreadGroupGui.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/threads/gui/ThreadGroupGui.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ThreadGroupGui.java       28 Feb 2003 14:21:47 -0000      1.5
  +++ ThreadGroupGui.java       25 Mar 2003 17:24:34 -0000      1.6
  @@ -67,8 +67,7 @@
   
   import org.apache.jmeter.control.LoopController;
   import org.apache.jmeter.control.gui.LoopControlPanel;
  -import org.apache.jmeter.gui.JMeterGUIComponent;
  -import org.apache.jmeter.gui.NamePanel;
  +import org.apache.jmeter.gui.AbstractJMeterGuiComponent;
   import org.apache.jmeter.gui.tree.JMeterTreeNode;
   import org.apache.jmeter.gui.util.FocusRequester;
   import org.apache.jmeter.gui.util.MenuFactory;
  @@ -86,7 +85,7 @@
    [EMAIL PROTECTED]   1.0
    ***************************************/
   
  -public class ThreadGroupGui extends JPanel implements JMeterGUIComponent
  +public class ThreadGroupGui extends AbstractJMeterGuiComponent
   {
       LoopControlPanel loopPanel;
   
  @@ -95,15 +94,14 @@
   
       private JTextField threadInput;
       private JTextField rampInput;
  -    private NamePanel namePanel;
   
       /****************************************
        * !ToDo (Constructor description)
        ***************************************/
       public ThreadGroupGui()
       {
  +        super();
           init();
  -        setName(getStaticLabel());
       }
   
       /****************************************
  @@ -119,27 +117,6 @@
       /****************************************
        * !ToDo (Method description)
        *
  -     [EMAIL PROTECTED] name  !ToDo (Parameter description)
  -     ***************************************/
  -    public void setName(String name)
  -    {
  -        super.setName(name);
  -        namePanel.setName(name);
  -    }
  -
  -    /****************************************
  -     * !ToDoo (Method description)
  -     *
  -     [EMAIL PROTECTED]   !ToDo (Return description)
  -     ***************************************/
  -    public String getName()
  -    {
  -        return namePanel.getName();
  -    }
  -
  -    /****************************************
  -     * !ToDo (Method description)
  -     *
        [EMAIL PROTECTED]   !ToDo (Return description)
        ***************************************/
       public TestElement createTestElement()
  @@ -155,13 +132,11 @@
            */
       public void modifyTestElement(TestElement tg)
       {
  -        tg.setProperty(TestElement.GUI_CLASS, this.getClass().getName());
  -        tg.setProperty(TestElement.TEST_CLASS, ThreadGroup.class.getName());
  +        super.configureTestElement(tg);
           if (tg instanceof ThreadGroup)
           {
               ((ThreadGroup) tg).setSamplerController((LoopController) 
loopPanel.createTestElement());
           }
  -        tg.setProperty(TestElement.NAME, namePanel.getName());
           tg.setProperty(ThreadGroup.NUM_THREADS, threadInput.getText());
           tg.setProperty(ThreadGroup.RAMP_TIME, rampInput.getText());
       }
  @@ -173,7 +148,7 @@
        ***************************************/
       public void configure(TestElement tg)
       {
  -        setName((String) tg.getProperty(TestElement.NAME));
  +        super.configure(tg);
           threadInput.setText(tg.getProperty(ThreadGroup.NUM_THREADS).toString());
           rampInput.setText(tg.getProperty(ThreadGroup.RAMP_TIME).toString());
           loopPanel.configure((TestElement) 
tg.getProperty(ThreadGroup.MAIN_CONTROLLER));
  @@ -240,7 +215,7 @@
           mainPanel.add(panelTitleLabel);
   
           // NAME
  -        namePanel = new NamePanel();
  +        namePanel = getNamePanel();
           mainPanel.add(namePanel);
   
           // THREAD PROPERTIES
  
  
  
  1.19      +2 -1      jakarta-jmeter/src/core/org/apache/jmeter/util/JMeterUtils.java
  
  Index: JMeterUtils.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/util/JMeterUtils.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- JMeterUtils.java  11 Mar 2003 19:04:19 -0000      1.18
  +++ JMeterUtils.java  25 Mar 2003 17:24:35 -0000      1.19
  @@ -967,6 +967,7 @@
        public static final String JDBC = "jmeter.protocol.jdbc";
        public static final String FTP = "jmeter.protocol.ftp";
        public static final String JAVA = "jmeter.protocol.java";
  +    public static final String PROPERTIES = "jmeter.elements.properties";
        /**
         * Gets the JMeter Version.
         * @returns the JMeter version.
  
  
  
  1.3       +5 -3      
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/control/AuthManager.java
  
  Index: AuthManager.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/control/AuthManager.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- AuthManager.java  20 Aug 2002 01:55:24 -0000      1.2
  +++ AuthManager.java  25 Mar 2003 17:24:35 -0000      1.3
  @@ -64,6 +64,7 @@
   import java.util.ArrayList;
   import java.util.Collection;
   import java.util.Iterator;
  +import java.util.LinkedList;
   import java.util.List;
   import java.util.StringTokenizer;
   
  @@ -130,7 +131,8 @@
                                el.getProperty("username") != null &&
                                el.getProperty("url") != null)
                {
  -                     addAuth(new Authorization(el.getPropertyAsString("url"),
  +            
  +            addAuth(new Authorization(el.getPropertyAsString("url"),
                                        el.getPropertyAsString("username"),
                                        el.getPropertyAsString("password")));
                }
  @@ -157,7 +159,7 @@
         ***************************************/
        public List getAuthObjects()
        {
  -             return (List)getProperty(AUTH_LIST);
  +        return (List)getProperty(AUTH_LIST);
        }
   
   
  
  
  

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

Reply via email to