jsalvata    2004/01/14 15:10:30

  Modified:    src/core/org/apache/jmeter/resources messages.properties
                        messages_de.properties messages_no.properties
                        messages_ja.properties
               src/core/org/apache/jmeter/gui GuiPackage.java
                        GUIFactory.java
               src/core/org/apache/jmeter/junit JMeterTest.java
               src/core/org/apache/jmeter/gui/util MenuFactory.java
  Added:       src/core/org/apache/jmeter/testbeans/gui FileEditor.java
                        TestBeanGUI.java TestElementEditor.java
                        FieldStringEditor.java ComboStringEditor.java
                        BeanInfoSupport.java WrapperEditor.java
               src/core/org/apache/jmeter/testbeans TestBeanBeanInfo.java
                        TestBean.java
  Log:
  Merging in the testbean experiment branch.
  
  Revision  Changes    Path
  1.2       +263 -0    
jakarta-jmeter/src/core/org/apache/jmeter/testbeans/gui/FileEditor.java
  
  
  
  
  1.2       +848 -0    
jakarta-jmeter/src/core/org/apache/jmeter/testbeans/gui/TestBeanGUI.java
  
  
  
  
  1.2       +123 -0    
jakarta-jmeter/src/core/org/apache/jmeter/testbeans/gui/TestElementEditor.java
  
  
  
  
  1.2       +194 -0    
jakarta-jmeter/src/core/org/apache/jmeter/testbeans/gui/FieldStringEditor.java
  
  
  
  
  1.2       +382 -0    
jakarta-jmeter/src/core/org/apache/jmeter/testbeans/gui/ComboStringEditor.java
  
  
  
  
  1.2       +257 -0    
jakarta-jmeter/src/core/org/apache/jmeter/testbeans/gui/BeanInfoSupport.java
  
  
  
  
  1.2       +407 -0    
jakarta-jmeter/src/core/org/apache/jmeter/testbeans/gui/WrapperEditor.java
  
  
  
  
  1.86      +4 -0      
jakarta-jmeter/src/core/org/apache/jmeter/resources/messages.properties
  
  Index: messages.properties
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/resources/messages.properties,v
  retrieving revision 1.85
  retrieving revision 1.86
  diff -u -r1.85 -r1.86
  --- messages.properties       14 Jan 2004 01:18:55 -0000      1.85
  +++ messages.properties       14 Jan 2004 23:10:30 -0000      1.86
  @@ -279,8 +279,12 @@
   patterns_to_include=Patterns to Include
   pkcs12_desc=PKCS 12 Key (*.p12)
   port=Port:
  +property_as_field_label={0}:
  +property_tool_tip={0}: {1}
   property_default_param=Default value
   property_name_param=Name of property
  +property_edit=Edit
  +property_undefined=Undefined
   protocol_java_border=Java class
   protocol_java_classname=Classname:
   protocol_java_config_tile=Configure Java Sample
  
  
  
  1.70      +4 -0      
jakarta-jmeter/src/core/org/apache/jmeter/resources/messages_de.properties
  
  Index: messages_de.properties
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/resources/messages_de.properties,v
  retrieving revision 1.69
  retrieving revision 1.70
  diff -u -r1.69 -r1.70
  --- messages_de.properties    14 Jan 2004 01:18:55 -0000      1.69
  +++ messages_de.properties    14 Jan 2004 23:10:30 -0000      1.70
  @@ -279,8 +279,12 @@
   patterns_to_include=Muster zum einschliessen
   pkcs12_desc=PKCS 12 Key (*.p12)
   port=Port:
  +property_as_field_label={0}:
  +property_tool_tip={0}: {1}
   property_default_param=Default value
   property_name_param=Name of property
  +property_edit=Edit
  +property_undefined=Undefined
   protocol_java_border=Java class
   protocol_java_classname=Classname:
   protocol_java_config_tile=Configure Java Sample
  
  
  
  1.66      +5 -1      
jakarta-jmeter/src/core/org/apache/jmeter/resources/messages_no.properties
  
  Index: messages_no.properties
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/resources/messages_no.properties,v
  retrieving revision 1.65
  retrieving revision 1.66
  diff -u -r1.65 -r1.66
  --- messages_no.properties    14 Jan 2004 01:18:55 -0000      1.65
  +++ messages_no.properties    14 Jan 2004 23:10:30 -0000      1.66
  @@ -279,8 +279,12 @@
   patterns_to_include=M�nster � inkludere
   pkcs12_desc=PKCS 12 Key (*.p12)
   port=Port:
  +property_as_field_label={0}:
  +property_tool_tip={0}: {1}
   property_default_param=Default value
   property_name_param=Name of property
  +property_edit=Edit
  +property_undefined=Undefined
   protocol_java_border=Java class
   protocol_java_classname=Classname:
   protocol_java_config_tile=Configure Java Sample
  @@ -463,4 +467,4 @@
   wsdl_url_error=The WSDL was emtpy.
   wsdl_url=WSDL URL
   xml_assertion_title=XML Assertion
  -you_must_enter_a_valid_number=You must enter a valid number
  +you_must_enter_a_valid_number=You must enter a valid number
  \ No newline at end of file
  
  
  
  1.67      +4 -0      
jakarta-jmeter/src/core/org/apache/jmeter/resources/messages_ja.properties
  
  Index: messages_ja.properties
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/resources/messages_ja.properties,v
  retrieving revision 1.66
  retrieving revision 1.67
  diff -u -r1.66 -r1.67
  --- messages_ja.properties    14 Jan 2004 01:18:55 -0000      1.66
  +++ messages_ja.properties    14 Jan 2004 23:10:30 -0000      1.67
  @@ -279,8 +279,12 @@
   patterns_to_include=\u633f\u5165\u3059\u308b\u30d1\u30bf\u30fc\u30f3
   pkcs12_desc=PKCS 12 Key (*.p12)
   port=\u30dd\u30fc\u30c8:
  +property_as_field_label={0}:
  +property_tool_tip={0}: {1}
   property_default_param=Default value
   property_name_param=\u30d7\u30ed\u30d1\u30c6\u30a3\u540d
  +property_edit=Edit
  +property_undefined=Undefined
   protocol_java_border=Java \u30af\u30e9\u30b9
   protocol_java_classname=\u30af\u30e9\u30b9\u540d:
   protocol_java_config_tile=Java \u30b5\u30f3\u30d7\u30eb\u306e\u8a2d\u5b9a
  
  
  
  1.18      +84 -13    jakarta-jmeter/src/core/org/apache/jmeter/gui/GuiPackage.java
  
  Index: GuiPackage.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/GuiPackage.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- GuiPackage.java   18 Aug 2003 19:40:42 -0000      1.17
  +++ GuiPackage.java   14 Jan 2004 23:10:30 -0000      1.18
  @@ -66,6 +66,8 @@
   import org.apache.jmeter.gui.tree.JMeterTreeListener;
   import org.apache.jmeter.gui.tree.JMeterTreeModel;
   import org.apache.jmeter.gui.tree.JMeterTreeNode;
  +import org.apache.jmeter.testbeans.TestBean;
  +import org.apache.jmeter.testbeans.gui.TestBeanGUI;
   import org.apache.jmeter.testelement.TestElement;
   import org.apache.jmeter.testelement.TestPlan;
   import org.apache.jmeter.visualizers.gui.AbstractVisualizer;
  @@ -180,7 +182,19 @@
        */
       public JMeterGUIComponent getGui(TestElement node)
       {
  -        return getGui(node, node.getPropertyAsString(TestElement.GUI_CLASS));
  +        try
  +        {
  +            return getGui(
  +                node, 
  +                Class.forName(node.getPropertyAsString(TestElement.GUI_CLASS)),
  +                Class.forName(node.getPropertyAsString(TestElement.TEST_CLASS)));
  +        }
  +        catch (ClassNotFoundException e)
  +        {
  +            log.error("Could not get GUI for "
  +                +node.getPropertyAsString(TestElement.GUI_CLASS), e);
  +            return null;
  +        }
       }
   
       /**
  @@ -193,20 +207,22 @@
        * @param node     the test element which this GUI is being created for
        * @param guiClass the fully qualifed class name of the GUI component which
        *                 will be created if it doesn't already exist
  +     * @param testClass the fully qualifed class name of the test elements which
  +     *                 have to be edited by the returned GUI component
        * 
        * @return         the GUI component corresponding to the specified test
        *                 element
        */
  -    public JMeterGUIComponent getGui(TestElement node, String guiClass)
  +    public JMeterGUIComponent getGui(
  +        TestElement node, Class guiClass, Class testClass)
       {
  -        log.debug("Getting gui for " + node);
           try
           {
               JMeterGUIComponent comp = (JMeterGUIComponent) nodesToGui.get(node);
               log.debug("Gui retrieved = " + comp);
               if (comp == null)
               {
  -                comp = getGuiFromCache(guiClass);
  +                comp = getGuiFromCache(guiClass, testClass);
                   nodesToGui.put(node, comp);
               }
               return comp;
  @@ -241,7 +257,7 @@
               TestElement currentNode =
                   treeListener.getCurrentNode().createTestElement();
               JMeterGUIComponent comp = getGui(currentNode);
  -            if(!(comp instanceof AbstractVisualizer))  // a hack that needs to be 
fixed for 2.0
  +            if(!(comp instanceof AbstractVisualizer))  // TODO: a hack that needs 
to be fixed for 2.0
               {
                   comp.clear();
               }
  @@ -269,14 +285,16 @@
        * Create a TestElement corresponding to the specified GUI class. 
        * 
        * @param guiClass the fully qualified class name of the GUI component
  -     * 
  +     *                  or a TestBean class for TestBeanGUIs.  
  +     * @param testClass the fully qualified class name of the test elements
  +     *                 edited by this GUI component.
        * @return the test element corresponding to the specified GUI class.
        */
  -    public TestElement createTestElement(String guiClass)
  +    public TestElement createTestElement(Class guiClass, Class testClass)
       {
           try
           {
  -            JMeterGUIComponent comp = getGuiFromCache(guiClass);
  +            JMeterGUIComponent comp = getGuiFromCache(guiClass, testClass);
               comp.clear();
               TestElement node = comp.createTestElement();
               nodesToGui.put(node, comp);
  @@ -290,6 +308,50 @@
       }
   
       /**
  +     * Create a TestElement for a GUI or TestBean class.
  +     * <p>
  +     * This is a utility method to help actions do with one single String
  +     * parameter. 
  +     * 
  +     * @param objClass the fully qualified class name of the GUI component or of
  +     *                  the TestBean subclass for which a TestBeanGUI is wanted.  
  +     * @return the test element corresponding to the specified GUI class.
  +     */
  +    public TestElement createTestElement(String objClass)
  +    {
  +        JMeterGUIComponent comp;
  +        Class c;
  +        try
  +        {
  +            c= Class.forName(objClass);
  +            if (TestBean.class.isAssignableFrom(c))
  +            {
  +                comp= getGuiFromCache(TestBeanGUI.class, c);
  +            }
  +            else
  +            {
  +                comp= getGuiFromCache(c, null);
  +            }
  +            comp.clear();
  +            TestElement node = comp.createTestElement();
  +            nodesToGui.put(node, comp);
  +            return node;
  +        }
  +        catch (ClassNotFoundException e)
  +        {
  +            log.error("Problem retrieving gui for "+objClass, e);
  +            throw new Error(e); // Programming error: bail out.
  +        } catch (InstantiationException e)
  +        {
  +            log.error("Problem retrieving gui for "+objClass, e);
  +            throw new Error(e); // Programming error: bail out.
  +        } catch (IllegalAccessException e)
  +        {
  +            log.error("Problem retrieving gui for "+objClass, e);
  +            throw new Error(e); // Programming error: bail out.
  +        }
  +    }
  +    /**
        * Get an instance of the specified JMeterGUIComponent class.  If an
        * instance of the GUI class has previously been created and it is not
        * marked as an [EMAIL PROTECTED] UnsharedComponent}, that shared instance will 
be
  @@ -298,7 +360,9 @@
        * 
        * @param guiClass the fully qualified class name of the GUI component.
        *                 This class must implement JMeterGUIComponent.
  -     * 
  +     * @param testClass the fully qualified class name of the test elements
  +     *                 edited by this GUI component. This class must 
  +     *                 implement TestElement.
        * @return         an instance of the specified class
        * 
        * @throws InstantiationException if an instance of the object cannot be
  @@ -308,7 +372,7 @@
        * @throws ClassNotFoundException if the specified GUI class cannot be
        *                                found
        */
  -    private JMeterGUIComponent getGuiFromCache(String guiClass)
  +    private JMeterGUIComponent getGuiFromCache(Class guiClass, Class testClass)
           throws InstantiationException,
                  IllegalAccessException,
                  ClassNotFoundException
  @@ -316,7 +380,14 @@
           JMeterGUIComponent comp = (JMeterGUIComponent) guis.get(guiClass);
           if (comp == null)
           {
  -            comp = (JMeterGUIComponent) Class.forName(guiClass).newInstance();
  +            if (guiClass == TestBeanGUI.class)
  +            {
  +                comp= new TestBeanGUI(testClass);
  +            }
  +            else
  +            {
  +                comp = (JMeterGUIComponent) guiClass.newInstance();
  +            }
               if (!(comp instanceof UnsharedComponent))
               {
                   guis.put(guiClass, comp);
  @@ -354,7 +425,7 @@
               if (currentNode != null)
               {
                   log.debug(
  -                    "Updating current node " + currentNode.createTestElement());
  +                    "Updating current node " + currentNode.getName());
                   JMeterGUIComponent comp =
                       getGui(currentNode.createTestElement());
                   TestElement el = currentNode.createTestElement();
  
  
  
  1.6       +15 -3     jakarta-jmeter/src/core/org/apache/jmeter/gui/GUIFactory.java
  
  Index: GUIFactory.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/GUIFactory.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- GUIFactory.java   5 Oct 2003 01:05:31 -0000       1.5
  +++ GUIFactory.java   14 Jan 2004 23:10:30 -0000      1.6
  @@ -61,6 +61,8 @@
   import javax.swing.ImageIcon;
   import javax.swing.JComponent;
   
  +import org.apache.jmeter.testbeans.gui.TestBeanGUI;
  +
   
   /**
    * Provides a way to register and retrieve GUI classes and icons.
  @@ -162,17 +164,27 @@
        * 
        * @param key       the name which can be used to retrieve this GUI later
        * @param guiClass  the class object for the GUI component
  +     * @param testClass the class of the objects edited by this GUI
        * 
        * @throws InstantiationException if an instance of the GUI class can not
        *    be instantiated
        * @throws IllegalAccessException if access rights do not permit an instance
        *    of the GUI class to be created
        */
  -    public static void registerGUI(String key, Class guiClass)
  +    public static void registerGUI(String key, Class guiClass, Class testClass)
               throws InstantiationException, IllegalAccessException
       {
           // TODO: This method doesn't appear to be used.
  -        JMeterGUIComponent gui = (JMeterGUIComponent) guiClass.newInstance();
  +        JMeterGUIComponent gui;
  +        
  +        if (guiClass == TestBeanGUI.class)
  +        {
  +            gui= new TestBeanGUI(testClass);
  +        }
  +        else
  +        {
  +            gui = (JMeterGUIComponent) guiClass.newInstance();
  +        }
           GUI_MAP.put(key, gui);
       }
   }
  
  
  
  1.2       +129 -0    
jakarta-jmeter/src/core/org/apache/jmeter/testbeans/TestBeanBeanInfo.java
  
  
  
  
  1.2       +578 -0    
jakarta-jmeter/src/core/org/apache/jmeter/testbeans/TestBean.java
  
  
  
  
  1.28      +11 -1     jakarta-jmeter/src/core/org/apache/jmeter/junit/JMeterTest.java
  
  Index: JMeterTest.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/junit/JMeterTest.java,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- JMeterTest.java   14 Jan 2004 22:55:03 -0000      1.27
  +++ JMeterTest.java   14 Jan 2004 23:10:30 -0000      1.28
  @@ -19,6 +19,8 @@
   import org.apache.jmeter.gui.UnsharedComponent;
   import org.apache.jmeter.gui.tree.JMeterTreeNode;
   import org.apache.jmeter.save.SaveService;
  +import org.apache.jmeter.testbeans.TestBean;
  +import org.apache.jmeter.testbeans.gui.TestBeanGUI;
   import org.apache.jmeter.testelement.TestElement;
   import org.apache.jmeter.testelement.property.JMeterProperty;
   import org.apache.jmeter.testelement.property.PropertyIterator;
  @@ -136,6 +138,14 @@
                        ts.addTest(new JMeterTest("runGUITitle",item));
                        suite.addTest(ts);
                }
  +        iter = getObjects(TestBean.class).iterator();
  +        while (iter.hasNext())
  +        {
  +            JMeterGUIComponent item = new TestBeanGUI(iter.next().getClass());
  +            TestSuite ts = new TestSuite(item.getClass().getName());
  +            ts.addTest(new JMeterTest("runGUIComponents",item));
  +            suite.addTest(ts);
  +        }
                return suite;
        }
        
  
  
  
  1.24      +29 -17    
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.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- MenuFactory.java  15 Dec 2003 23:38:44 -0000      1.23
  +++ MenuFactory.java  14 Jan 2004 23:10:30 -0000      1.24
  @@ -78,6 +78,8 @@
   import org.apache.jmeter.gui.GuiPackage;
   import org.apache.jmeter.gui.JMeterGUIComponent;
   import org.apache.jmeter.gui.action.ActionRouter;
  +import org.apache.jmeter.testbeans.TestBean;
  +import org.apache.jmeter.testbeans.gui.TestBeanGUI;
   import org.apache.jmeter.util.JMeterUtils;
   import org.apache.jorphan.reflect.ClassFinder;
   import org.apache.jorphan.util.JOrphanUtils;
  @@ -396,7 +398,7 @@
               List guiClasses =
                   ClassFinder.findClassesThatExtend(
                       JMeterUtils.getSearchPaths(),
  -                    new Class[] { JMeterGUIComponent.class });
  +                    new Class[] { JMeterGUIComponent.class, TestBean.class });
               timers = new LinkedList();
               controllers = new LinkedList();
               samplers = new LinkedList();
  @@ -419,30 +421,40 @@
               Iterator iter = guiClasses.iterator();
               while (iter.hasNext())
               {
  +                String name= (String)iter.next();
  +                
                   JMeterGUIComponent item;
                   try
                   {
  -                    item =
  -                        (JMeterGUIComponent) Class
  -                            .forName((String) iter.next())
  -                            .newInstance();
  +                    Class c = Class.forName(name);
  +                    if (TestBean.class.isAssignableFrom(c))
  +                    {
  +                        item = new TestBeanGUI(c);
  +                    }
  +                    else
  +                    {
  +                        item = (JMeterGUIComponent) c.newInstance();
  +                    }
                   }
                   catch (Throwable e)
                   {
  +                    log.info("Could not instantiate "+name, e);
                       continue;
                   }
  -                if (elementsToSkip.contains(item.getClass().getName())
  +                if (elementsToSkip.contains(name)
                       || elementsToSkip.contains(item.getStaticLabel()))
                   {
  +                    log.debug("Skipping "+name);
                       continue;
                   }
                   else
                   {
  -                    elementsToSkip.add(item.getClass().getName());
  +                    elementsToSkip.add(name);
                   }
                   Collection categories = item.getMenuCategories();
                   if (categories == null)
                   {
  +                    log.debug(name+" participates in no menus.");
                       continue;
                   }
                   if (categories.contains(TIMERS))
  @@ -450,7 +462,7 @@
                       timers.add(
                           new MenuInfo(
                               item.getStaticLabel(),
  -                            item.getClass().getName()));
  +                            name));
                   }
   
                   if (categories.contains(POST_PROCESSORS))
  @@ -458,7 +470,7 @@
                       postProcessors.add(
                           new MenuInfo(
                               item.getStaticLabel(),
  -                            item.getClass().getName()));
  +                            name));
                   }
   
                   if (categories.contains(PRE_PROCESSORS))
  @@ -466,7 +478,7 @@
                       preProcessors.add(
                           new MenuInfo(
                               item.getStaticLabel(),
  -                            item.getClass().getName()));
  +                            name));
                   }
   
                   if (categories.contains(CONTROLLERS))
  @@ -474,7 +486,7 @@
                       controllers.add(
                           new MenuInfo(
                               item.getStaticLabel(),
  -                            item.getClass().getName()));
  +                            name));
                   }
   
                   if (categories.contains(SAMPLERS))
  @@ -482,7 +494,7 @@
                       samplers.add(
                           new MenuInfo(
                               item.getStaticLabel(),
  -                            item.getClass().getName()));
  +                            name));
                   }
   
                   if (categories.contains(NON_TEST_ELEMENTS))
  @@ -490,7 +502,7 @@
                       nonTestElements.add(
                           new MenuInfo(
                               item.getStaticLabel(),
  -                            item.getClass().getName()));
  +                            name));
                   }
   
                   if (categories.contains(LISTENERS))
  @@ -498,7 +510,7 @@
                       listeners.add(
                           new MenuInfo(
                               item.getStaticLabel(),
  -                            item.getClass().getName()));
  +                            name));
                   }
   
                   if (categories.contains(CONFIG_ELEMENTS))
  @@ -506,14 +518,14 @@
                       configElements.add(
                           new MenuInfo(
                               item.getStaticLabel(),
  -                            item.getClass().getName()));
  +                            name));
                   }
                   if (categories.contains(ASSERTIONS))
                   {
                       assertions.add(
                           new MenuInfo(
                               item.getStaticLabel(),
  -                            item.getClass().getName()));
  +                            name));
                   }
   
               }
  
  
  

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

Reply via email to