Re: Copy/paste HTTP query parameters and header data

2017-11-02 Thread Andrew Burton
I've also attached this patch to
https://bz.apache.org/bugzilla/show_bug.cgi?id=53957

On Thu, Nov 2, 2017 at 12:37 PM, Andrew Burton 
wrote:

> Hi all,
>
>
>
> I’ve created a small patch for copying-pasting data directly from Chrome
> developer console into the HTTP Sampler query parameters.
>
>
>
> It adds support for splitting lines on & and delimiters on = (in addition
> to previous \n and \t)
>
>
>
> I’ve tested for the following use cases:
>
> HTTP Request:
>
> key1=val1
>
> key2=val2=val3
>
>
>
> I haven’t extended this to Headers since it appears to share a different
> inheritance structure, and I’m reluctant to change too many things for this
> patch.
>
>
>
> Are there any other use cases that I’m missing from the above?
>
>
>
> Andrew
>


Copy/paste HTTP query parameters and header data

2017-11-01 Thread Andrew Burton
Hi all,



I’ve created a small patch for copying-pasting data directly from Chrome
developer console into the HTTP Sampler query parameters.



It adds support for splitting lines on & and delimiters on = (in addition
to previous \n and \t)



I’ve tested for the following use cases:

HTTP Request:

key1=val1

key2=val2=val3



I haven’t extended this to Headers since it appears to share a different
inheritance structure, and I’m reluctant to change too many things for this
patch.



Are there any other use cases that I’m missing from the above?



Andrew
diff --git a/src/core/org/apache/jmeter/config/gui/ArgumentsPanel.java 
b/src/core/org/apache/jmeter/config/gui/ArgumentsPanel.java
index 2fe7527..d5e99ed 100644
--- a/src/core/org/apache/jmeter/config/gui/ArgumentsPanel.java
+++ b/src/core/org/apache/jmeter/config/gui/ArgumentsPanel.java
@@ -118,6 +118,12 @@ public class ArgumentsPanel extends AbstractConfigGui 
implements ActionListener
 /** Command for moving a row down in the table. */
 private static final String DOWN = "down"; // $NON-NLS-1$
 
+/** When pasting from the clipboard, split lines on linebreak */
+private static final String CLIPBOARD_LINE_DELIMITERS = "\n"; //$NON-NLS-1$
+
+/** When pasting from the clipboard, split parameters on tab */
+private static final String CLIPBOARD_ARG_DELIMITERS = "\t"; //$NON-NLS-1$
+
 /** Command for showing detail. */
 private static final String DETAIL = "detail"; // $NON-NLS-1$
 
@@ -531,8 +537,10 @@ public class ArgumentsPanel extends AbstractConfigGui 
implements ActionListener
 
 /**
  * Add values from the clipboard
+ * @param lineDelimiter Delimiter string to split clipboard into lines
+ * @param argDelimiter Delimiter string to split line into key-value pair
  */
-protected void addFromClipboard() {
+protected void addFromClipboard(String lineDelimiter, String argDelimiter) 
{
 GuiUtils.stopTableEditing(table);
 int rowCount = table.getRowCount();
 try {
@@ -540,9 +548,9 @@ public class ArgumentsPanel extends AbstractConfigGui 
implements ActionListener
 if(clipboardContent == null) {
 return;
 }
-String[] clipboardLines = clipboardContent.split("\n");
+String[] clipboardLines = clipboardContent.split(lineDelimiter);
 for (String clipboardLine : clipboardLines) {
-String[] clipboardCols = clipboardLine.split("\t");
+String[] clipboardCols = clipboardLine.split(argDelimiter);
 if (clipboardCols.length > 0) {
 Argument argument = 
createArgumentFromClipboard(clipboardCols);
 tableModel.addRow(argument);
@@ -567,6 +575,10 @@ public class ArgumentsPanel extends AbstractConfigGui 
implements ActionListener
 }
 }
 
+protected void addFromClipboard() {
+addFromClipboard(CLIPBOARD_LINE_DELIMITERS, CLIPBOARD_ARG_DELIMITERS);
+}
+
 protected Argument createArgumentFromClipboard(String[] clipboardCols) {
 Argument argument = makeNewArgument();
 argument.setName(clipboardCols[0]);
diff --git 
a/src/protocol/http/org/apache/jmeter/protocol/http/gui/HTTPArgumentsPanel.java 
b/src/protocol/http/org/apache/jmeter/protocol/http/gui/HTTPArgumentsPanel.java
index 1bb4cf2..ce14655 100644
--- 
a/src/protocol/http/org/apache/jmeter/protocol/http/gui/HTTPArgumentsPanel.java
+++ 
b/src/protocol/http/org/apache/jmeter/protocol/http/gui/HTTPArgumentsPanel.java
@@ -50,6 +50,12 @@ public class HTTPArgumentsPanel extends ArgumentsPanel {
 
 private static final String INCLUDE_EQUALS = "include_equals"; 
//$NON-NLS-1$
 
+/** When pasting from the clipboard, split lines on linebreak or '&' */
+private static final String CLIPBOARD_LINE_DELIMITERS = "\n|&"; 
//$NON-NLS-1$
+
+/** When pasting from the clipboard, split parameters on tab or '=' */
+private static final String CLIPBOARD_ARG_DELIMITERS = "\t|="; 
//$NON-NLS-1$
+
 @Override
 protected void initializeTableModel() {
 tableModel = new ObjectTableModel(new String[] {
@@ -142,6 +148,11 @@ public class HTTPArgumentsPanel extends ArgumentsPanel {
 }
 
 @Override
+protected void addFromClipboard() {
+addFromClipboard(CLIPBOARD_LINE_DELIMITERS, CLIPBOARD_ARG_DELIMITERS);
+}
+
+@Override
 protected Argument createArgumentFromClipboard(String[] clipboardCols) {
 HTTPArgument argument = makeNewArgument();
 argument.setName(clipboardCols[0]);