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]