You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by pm...@apache.org on 2020/05/03 17:14:07 UTC
[jmeter] branch master updated: Bug 64407 - Improve JMS Publisher
UX (#586)
This is an automated email from the ASF dual-hosted git repository.
pmouawad pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jmeter.git
The following commit(s) were added to refs/heads/master by this push:
new beb52e2 Bug 64407 - Improve JMS Publisher UX (#586)
beb52e2 is described below
commit beb52e24194029cd590908b588300b46c4f63a85
Author: UBIK LOAD PACK <su...@ubikloadpack.com>
AuthorDate: Sun May 3 19:13:59 2020 +0200
Bug 64407 - Improve JMS Publisher UX (#586)
* Bug 64407 - Improve JMS Publisher UX
* Move dest setup near destination and remove useless 'span 1'
Co-authored-by: pmouawad <p....@ubik-ingenierie.com>
---
src/protocol/build.gradle.kts | 1 +
.../protocol/jms/control/gui/JMSPublisherGui.java | 156 +++++++++------------
xdocs/changes.xml | 1 +
3 files changed, 69 insertions(+), 89 deletions(-)
diff --git a/src/protocol/build.gradle.kts b/src/protocol/build.gradle.kts
index e622dea..2a1e2ab 100644
--- a/src/protocol/build.gradle.kts
+++ b/src/protocol/build.gradle.kts
@@ -127,6 +127,7 @@ project("jms") {
implementation("commons-io:commons-io") {
because("IOUtils")
}
+ implementation("com.miglayout:miglayout-swing")
}
}
diff --git a/src/protocol/jms/src/main/java/org/apache/jmeter/protocol/jms/control/gui/JMSPublisherGui.java b/src/protocol/jms/src/main/java/org/apache/jmeter/protocol/jms/control/gui/JMSPublisherGui.java
index fe33b23..aeb62a7 100644
--- a/src/protocol/jms/src/main/java/org/apache/jmeter/protocol/jms/control/gui/JMSPublisherGui.java
+++ b/src/protocol/jms/src/main/java/org/apache/jmeter/protocol/jms/control/gui/JMSPublisherGui.java
@@ -19,30 +19,28 @@ package org.apache.jmeter.protocol.jms.control.gui;
import java.awt.BorderLayout;
-import javax.swing.Box;
-import javax.swing.BoxLayout;
import javax.swing.JCheckBox;
-import javax.swing.JLabel;
+import javax.swing.JComboBox;
import javax.swing.JPanel;
+import javax.swing.JTextField;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import org.apache.jmeter.gui.TestElementMetadata;
import org.apache.jmeter.gui.util.FilePanel;
-import org.apache.jmeter.gui.util.HorizontalPanel;
import org.apache.jmeter.gui.util.JLabeledRadioI18N;
import org.apache.jmeter.gui.util.JSyntaxTextArea;
import org.apache.jmeter.gui.util.JTextScrollPane;
-import org.apache.jmeter.gui.util.VerticalPanel;
import org.apache.jmeter.protocol.jms.sampler.JMSProperties;
import org.apache.jmeter.protocol.jms.sampler.PublisherSampler;
import org.apache.jmeter.samplers.gui.AbstractSamplerGui;
import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.util.JMeterUtils;
-import org.apache.jorphan.gui.JLabeledChoice;
import org.apache.jorphan.gui.JLabeledPasswordField;
import org.apache.jorphan.gui.JLabeledTextField;
+import net.miginfocom.swing.MigLayout;
+
/**
* This is the GUI for JMS Publisher
*/
@@ -73,7 +71,7 @@ public class JMSPublisherGui extends AbstractSamplerGui implements ChangeListene
private static final String[] CONFIG_ITEMS_BYTES_MSG = { USE_FILE_RSC, USE_RANDOM_RSC};
// Button group resources
- private static final String[] CONFIG_ITEMS = { USE_FILE_RSC, USE_RANDOM_RSC, USE_TEXT_RSC };
+ private static final String[] CONFIG_ITEMS = { USE_TEXT_RSC, USE_FILE_RSC, USE_RANDOM_RSC };
private static final String[] MSGTYPES_ITEMS = { TEXT_MSG_RSC, MAP_MSG_RSC, OBJECT_MSG_RSC, BYTES_MSG_RSC };
@@ -81,18 +79,17 @@ public class JMSPublisherGui extends AbstractSamplerGui implements ChangeListene
private final JLabeledRadioI18N configChoice = new JLabeledRadioI18N("jms_config", CONFIG_ITEMS, USE_TEXT_RSC); //$NON-NLS-1$
- private final JLabeledTextField jndiICF = new JLabeledTextField(JMeterUtils.getResString("jms_initial_context_factory")); //$NON-NLS-1$
+ private final JTextField jndiICF = new JTextField();
- private final JLabeledTextField urlField = new JLabeledTextField(JMeterUtils.getResString("jms_provider_url")); //$NON-NLS-1$
+ private final JTextField urlField = new JTextField();
- private final JLabeledTextField jndiConnFac = new JLabeledTextField(JMeterUtils.getResString("jms_connection_factory")); //$NON-NLS-1$
+ private final JTextField jndiConnFac = new JTextField();
- private final JLabeledTextField jmsDestination = new JLabeledTextField(JMeterUtils.getResString("jms_topic")); //$NON-NLS-1$
+ private final JTextField jmsDestination = new JTextField();
private final JLabeledTextField expiration = new JLabeledTextField(JMeterUtils.getResString("jms_expiration"),10); //$NON-NLS-1$
- private final JLabeledTextField jmsErrorReconnectOnCodes =
- new JLabeledTextField(JMeterUtils.getResString("jms_error_reconnect_on_codes")); // $NON-NLS-1$
+ private final JTextField jmsErrorReconnectOnCodes = new JTextField();
private final JLabeledTextField priority = new JLabeledTextField(JMeterUtils.getResString("jms_priority"),1); //$NON-NLS-1$
@@ -102,17 +99,17 @@ public class JMSPublisherGui extends AbstractSamplerGui implements ChangeListene
private final JLabeledTextField jmsPwd = new JLabeledPasswordField(JMeterUtils.getResString("jms_pwd")); //$NON-NLS-1$
- private final JLabeledTextField iterations = new JLabeledTextField(JMeterUtils.getResString("jms_itertions")); //$NON-NLS-1$
+ private final JTextField iterations = new JTextField();
private final FilePanel messageFile = new FilePanel(JMeterUtils.getResString("jms_file")); //$NON-NLS-1$
private final FilePanel randomFile = new FilePanel(JMeterUtils.getResString("jms_random_file"), true); //$NON-NLS-1$
- private final JSyntaxTextArea textMessage = JSyntaxTextArea.getInstance(10, 50); // $NON-NLS-1$
+ private final JSyntaxTextArea textMessage = JSyntaxTextArea.getInstance(10, 50);
private final JLabeledRadioI18N msgChoice = new JLabeledRadioI18N("jms_message_type", MSGTYPES_ITEMS, TEXT_MSG_RSC); //$NON-NLS-1$
- private JLabeledChoice fileEncoding;
+ private JComboBox<String> fileEncoding;
private final JCheckBox useNonPersistentDelivery = new JCheckBox(JMeterUtils.getResString("jms_use_non_persistent_delivery"),false); //$NON-NLS-1$
@@ -183,7 +180,12 @@ public class JMSPublisherGui extends AbstractSamplerGui implements ChangeListene
sampler.setInputFile(messageFile.getFilename());
sampler.setRandomPath(randomFile.getFilename());
sampler.setConfigChoice(configChoice.getText());
- sampler.setFileEncoding(fileEncoding.getText());
+ Object item = fileEncoding.getSelectedItem();
+ if (item == null) {
+ sampler.setFileEncoding("");
+ } else {
+ sampler.setFileEncoding((String) item);
+ }
sampler.setMessageChoice(msgChoice.getText());
sampler.setIterations(iterations.getText());
sampler.setUseAuth(useAuth.isSelected());
@@ -202,42 +204,54 @@ public class JMSPublisherGui extends AbstractSamplerGui implements ChangeListene
setBorder(makeBorder());
add(makeTitlePanel(), BorderLayout.NORTH);
- JPanel mainPanel = new VerticalPanel();
+ JPanel mainPanel = new JPanel(new MigLayout("fillx, wrap 3, insets 0", "[][fill,grow]"));
add(mainPanel, BorderLayout.CENTER);
- mainPanel.add(useProperties);
- mainPanel.add(jndiICF);
- mainPanel.add(urlField);
- mainPanel.add(jndiConnFac);
- mainPanel.add(createDestinationPane());
- mainPanel.add(createAuthPane());
- mainPanel.add(createPriorityAndExpiration());
- mainPanel.add(jmsErrorReconnectOnCodes);
- mainPanel.add(iterations);
-
- jmsPropertiesPanel = new JMSPropertiesPanel(); //$NON-NLS-1$
- mainPanel.add(jmsPropertiesPanel);
-
- configChoice.setLayout(new BoxLayout(configChoice, BoxLayout.X_AXIS));
- mainPanel.add(configChoice);
- msgChoice.setLayout(new BoxLayout(msgChoice, BoxLayout.X_AXIS));
- mainPanel.add(msgChoice);
-
- String nonBreakingSpace = "\u00A0"; // CHECKSTYLE IGNORE AvoidEscapedUnicodeCharacters
- fileEncoding = new JLabeledChoice(JMeterUtils.getResString("content_encoding") + nonBreakingSpace + nonBreakingSpace, // $NON-NLS-1$
- PublisherSampler.getSupportedEncodings(), true, false);
- fileEncoding.setLayout(new BoxLayout(fileEncoding, BoxLayout.X_AXIS));
- fileEncoding.add(Box.createHorizontalGlue());
- mainPanel.add(fileEncoding);
-
- mainPanel.add(messageFile);
- mainPanel.add(randomFile);
-
- JPanel messageContentPanel = new JPanel(new BorderLayout());
- messageContentPanel.add(new JLabel(JMeterUtils.getResString("jms_text_area")), BorderLayout.NORTH);
- messageContentPanel.add(JTextScrollPane.getInstance(textMessage), BorderLayout.CENTER);
-
- mainPanel.add(messageContentPanel);
+ mainPanel.add(useProperties, "span");
+
+ mainPanel.add(JMeterUtils.labelFor(jndiICF, "jms_initial_context_factory"));
+ mainPanel.add(jndiICF, "span, growx");
+
+ mainPanel.add(JMeterUtils.labelFor(urlField, "jms_provider_url"));
+ mainPanel.add(urlField, "span, growx");
+
+ mainPanel.add(useAuth);
+ mainPanel.add(jmsUser);
+ mainPanel.add(jmsPwd);
+
+ mainPanel.add(JMeterUtils.labelFor(jndiConnFac, "jms_connection_factory"));
+ mainPanel.add(jndiConnFac, "span, growx");
+
+ mainPanel.add(JMeterUtils.labelFor(jmsDestination, "jms_topic"));
+ mainPanel.add(jmsDestination);
+ mainPanel.add(destSetup);
+
+ mainPanel.add(useNonPersistentDelivery);
+ mainPanel.add(expiration);
+ mainPanel.add(priority);
+
+
+ jmsPropertiesPanel = new JMSPropertiesPanel();
+ mainPanel.add(jmsPropertiesPanel, "span, growx");
+
+ mainPanel.add(msgChoice, "span");
+ fileEncoding = new JComboBox<String>(PublisherSampler.getSupportedEncodings());
+ fileEncoding.setEditable(true);
+ mainPanel.add(JMeterUtils.labelFor(fileEncoding, "content_encoding"));
+ mainPanel.add(fileEncoding, "span, growx");
+
+ mainPanel.add(configChoice, "span");
+ mainPanel.add(JMeterUtils.labelFor(textMessage, "jms_text_area"), "span");
+ mainPanel.add(JTextScrollPane.getInstance(textMessage), "span, growx");
+ mainPanel.add(messageFile, "span, growx");
+ mainPanel.add(randomFile, "span, growx");
+
+ mainPanel.add(JMeterUtils.labelFor(jmsErrorReconnectOnCodes, "jms_error_reconnect_on_codes"));
+ mainPanel.add(jmsErrorReconnectOnCodes, "span, growx");
+
+ mainPanel.add(JMeterUtils.labelFor(iterations, "jms_itertions"));
+ mainPanel.add(iterations, "span, growx");
+
useProperties.addChangeListener(this);
useAuth.addChangeListener(this);
configChoice.addChangeListener(this);
@@ -294,7 +308,7 @@ public class JMSPublisherGui extends AbstractSamplerGui implements ChangeListene
randomFile.setFilename(sampler.getRandomPath());
configChoice.setText(sampler.getConfigChoice());
msgChoice.setText(sampler.getMessageChoice());
- fileEncoding.setText(sampler.getFileEncoding());
+ fileEncoding.setSelectedItem(sampler.getFileEncoding());
iterations.setText(sampler.getIterations());
expiration.setText(sampler.getExpiration());
jmsErrorReconnectOnCodes.setText(sampler.getReconnectionErrorCodes());
@@ -333,7 +347,7 @@ public class JMSPublisherGui extends AbstractSamplerGui implements ChangeListene
private void updateFileEncoding() {
boolean isTextMode = USE_TEXT_RSC.equals(configChoice.getText());
boolean isObjectType = OBJECT_MSG_RSC.equals(msgChoice.getText());
- fileEncoding.setChoiceListEnabled(!isTextMode && !isObjectType);
+ fileEncoding.setEnabled(!isTextMode && !isObjectType);
}
/**
* Update choice contains the actual logic for hiding or showing Textarea if Bytes message
@@ -378,40 +392,4 @@ public class JMSPublisherGui extends AbstractSamplerGui implements ChangeListene
}
updateFileEncoding();
}
-
- /**
- * @return JPanel that contains destination infos
- */
- private JPanel createDestinationPane() {
- JPanel pane = new JPanel(new BorderLayout(3, 0));
- pane.add(jmsDestination, BorderLayout.WEST);
- destSetup.setLayout(new BoxLayout(destSetup, BoxLayout.X_AXIS));
- pane.add(destSetup, BorderLayout.CENTER);
- pane.add(useNonPersistentDelivery, BorderLayout.EAST);
- return pane;
- }
-
- /**
- * @return JPanel Panel with checkbox to choose auth , user and password
- */
- private JPanel createAuthPane() {
- JPanel pane = new JPanel();
- pane.setLayout(new BoxLayout(pane, BoxLayout.X_AXIS));
- pane.add(useAuth);
- pane.add(Box.createHorizontalStrut(10));
- pane.add(jmsUser);
- pane.add(Box.createHorizontalStrut(10));
- pane.add(jmsPwd);
- return pane;
- }
-
- /**
- * @return JPanel Panel for priority and expiration
- */
- private JPanel createPriorityAndExpiration() {
- JPanel panel = new HorizontalPanel();
- panel.add(expiration);
- panel.add(priority);
- return panel;
- }
}
diff --git a/xdocs/changes.xml b/xdocs/changes.xml
index ba67bf2..233b9af 100644
--- a/xdocs/changes.xml
+++ b/xdocs/changes.xml
@@ -132,6 +132,7 @@ invalidated when tree selection changes.</p>
<h3>Other samplers</h3>
<ul>
<li><bug>64288</bug>JUnit Request: Improve UX</li>
+ <li><bug>64407</bug>Improve JMS Publisher UX. Contributed by Ubik Load Pack (www.ubikloadpack.com)</li>
</ul>
<h3>Controllers</h3>