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 js...@apache.org on 2003/12/30 18:00:12 UTC
cvs commit: jakarta-jmeter/src/core/org/apache/jmeter/gui/util MenuFactory.java
jsalvata 2003/12/30 09:00:12
Modified: src/core/org/apache/jmeter/gui Tag:
testbeans_experimental_branch GuiPackage.java
GUIFactory.java
src/core/org/apache/jmeter/junit Tag:
testbeans_experimental_branch JMeterTest.java
src/core/org/apache/jmeter/gui/util Tag:
testbeans_experimental_branch MenuFactory.java
Added: src/core/org/apache/jmeter/testbeans/gui Tag:
testbeans_experimental_branch TestBeanGUI.java
src/core/org/apache/jmeter/testbeans Tag:
testbeans_experimental_branch TestBean.java
Log:
Basic changes to support TestBeans: created the
TestBean and TestBeanGUI classes and modified the core
GUI classes to support creating GUI elements from them.
Revision Changes Path
No revision
No revision
1.1.2.1 +549 -0 jakarta-jmeter/src/core/org/apache/jmeter/testbeans/gui/Attic/TestBeanGUI.java
No revision
No revision
1.17.2.1 +82 -11 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.17.2.1
diff -u -r1.17 -r1.17.2.1
--- GuiPackage.java 18 Aug 2003 19:40:42 -0000 1.17
+++ GuiPackage.java 30 Dec 2003 17:00:11 -0000 1.17.2.1
@@ -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,18 @@
*/
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 "+node, e);
+ return null;
+ }
}
/**
@@ -193,11 +206,14 @@
* @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
@@ -206,7 +222,7 @@
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 {@link 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);
1.5.2.1 +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.5.2.1
diff -u -r1.5 -r1.5.2.1
--- GUIFactory.java 5 Oct 2003 01:05:31 -0000 1.5
+++ GUIFactory.java 30 Dec 2003 17:00:11 -0000 1.5.2.1
@@ -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);
}
}
No revision
No revision
1.1.2.1 +511 -0 jakarta-jmeter/src/core/org/apache/jmeter/testbeans/Attic/TestBean.java
No revision
No revision
1.22.2.1 +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.22
retrieving revision 1.22.2.1
diff -u -r1.22 -r1.22.2.1
--- JMeterTest.java 16 Dec 2003 17:07:25 -0000 1.22
+++ JMeterTest.java 30 Dec 2003 17:00:12 -0000 1.22.2.1
@@ -17,6 +17,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;
@@ -104,6 +106,14 @@
ts.addTest(new JMeterTest("runGUIComponents",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;
}
No revision
No revision
1.23.2.1 +26 -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.23.2.1
diff -u -r1.23 -r1.23.2.1
--- MenuFactory.java 15 Dec 2003 23:38:44 -0000 1.23
+++ MenuFactory.java 30 Dec 2003 17:00:12 -0000 1.23.2.1
@@ -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,26 +421,33 @@
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)
{
continue;
}
- if (elementsToSkip.contains(item.getClass().getName())
+ if (elementsToSkip.contains(name)
|| elementsToSkip.contains(item.getStaticLabel()))
{
continue;
}
else
{
- elementsToSkip.add(item.getClass().getName());
+ elementsToSkip.add(name);
}
Collection categories = item.getMenuCategories();
if (categories == null)
@@ -450,7 +459,7 @@
timers.add(
new MenuInfo(
item.getStaticLabel(),
- item.getClass().getName()));
+ name));
}
if (categories.contains(POST_PROCESSORS))
@@ -458,7 +467,7 @@
postProcessors.add(
new MenuInfo(
item.getStaticLabel(),
- item.getClass().getName()));
+ name));
}
if (categories.contains(PRE_PROCESSORS))
@@ -466,7 +475,7 @@
preProcessors.add(
new MenuInfo(
item.getStaticLabel(),
- item.getClass().getName()));
+ name));
}
if (categories.contains(CONTROLLERS))
@@ -474,7 +483,7 @@
controllers.add(
new MenuInfo(
item.getStaticLabel(),
- item.getClass().getName()));
+ name));
}
if (categories.contains(SAMPLERS))
@@ -482,7 +491,7 @@
samplers.add(
new MenuInfo(
item.getStaticLabel(),
- item.getClass().getName()));
+ name));
}
if (categories.contains(NON_TEST_ELEMENTS))
@@ -490,7 +499,7 @@
nonTestElements.add(
new MenuInfo(
item.getStaticLabel(),
- item.getClass().getName()));
+ name));
}
if (categories.contains(LISTENERS))
@@ -498,7 +507,7 @@
listeners.add(
new MenuInfo(
item.getStaticLabel(),
- item.getClass().getName()));
+ name));
}
if (categories.contains(CONFIG_ELEMENTS))
@@ -506,14 +515,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: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org