This is an automated email from the ASF dual-hosted git repository.
mattcasters pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hop.git
The following commit(s) were added to refs/heads/main by this push:
new dc1fc09de9 Fix REST parameter field dropdowns (#7566)
dc1fc09de9 is described below
commit dc1fc09de9d916ff15f35dd0a972b5e94306d96d
Author: Gabriel Dutra <[email protected]>
AuthorDate: Sun Jul 19 16:34:22 2026 -0700
Fix REST parameter field dropdowns (#7566)
Co-authored-by: gabrieldutra <[email protected]>
---
.../ROOT/pages/pipeline/transforms/rest.adoc | 17 ++++++---
.../hop/pipeline/transforms/rest/RestDialog.java | 22 ++++++++---
.../pipeline/transforms/rest/RestDialogTest.java | 43 ++++++++++++++++++++++
3 files changed, 71 insertions(+), 11 deletions(-)
diff --git
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/rest.adoc
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/rest.adoc
index 583050091d..4621c55c4e 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/rest.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/rest.adoc
@@ -121,24 +121,31 @@ TIP: To figure out what Headers are required, you can use
Postman and remove as
=== Parameters Tab
-The Parameters tab enables you to define parameter values for POST, GET, PUT,
and DELETE requests.
+The Parameters tab enables you to add URL query parameters to POST, GET, PUT,
DELETE, and PATCH requests.
+Each row maps a field from the incoming Hop stream to a query parameter name.
+Click **Get fields** to populate the **Parameter field** list, then enter the
parameter name expected by the API in **Parameter name**.
+
+For example, if an incoming field named `search_value` contains `apache hop`,
mapping it to the parameter name `q` adds `?q=apache+hop` to the request URL.
+Hop URL-encodes the parameter name and value.
[options="header"]
|===
|Option|Description
-|Parameter|The field from incoming Hop stream that contains the parameter
information
-|Parameter|The name of the outgoing Hop field from this transform
+|Parameter field|The field from the incoming Hop stream that contains the
parameter value
+|Parameter name|The query parameter name expected by the REST API
|===
=== Matrix Parameters tab
Use the Matrix Parameters tab to define matrix parameter values for POST, PUT,
DELETE, and PATCH requests.
+Unlike query parameters, which follow a `?`, matrix parameters are appended to
the URL path with a semicolon.
+For example, a matrix parameter named `language` with the value `en` produces
a path such as `/resource;language=en`.
[options="header"]
|===
|Option|Description
-|Parameter|The field from the incoming Hop stream that contains the matrix
parameter information
-|Parameter|The name of the outgoing Hop field from this transform
+|Parameter field|The field from the incoming Hop stream that contains the
matrix parameter value
+|Parameter name|The matrix parameter name expected by the REST API
|===
=== Pagination tab
diff --git
a/plugins/transforms/rest/src/main/java/org/apache/hop/pipeline/transforms/rest/RestDialog.java
b/plugins/transforms/rest/src/main/java/org/apache/hop/pipeline/transforms/rest/RestDialog.java
index c57d8d3d2c..83364eb56e 100644
---
a/plugins/transforms/rest/src/main/java/org/apache/hop/pipeline/transforms/rest/RestDialog.java
+++
b/plugins/transforms/rest/src/main/java/org/apache/hop/pipeline/transforms/rest/RestDialog.java
@@ -108,7 +108,9 @@ public class RestDialog extends BaseTransformDialog {
private ColumnInfo[] colinf;
- private ColumnInfo[] colinfoparams;
+ private ColumnInfo[] queryParameterColumns;
+
+ private ColumnInfo[] matrixParameterColumns;
private TextVar wConnectionTimeout;
@@ -692,7 +694,7 @@ public class RestDialog extends BaseTransformDialog {
int matrixParametersRows = input.getMatrixParameterFields().size();
- colinfoparams =
+ matrixParameterColumns =
new ColumnInfo[] {
new ColumnInfo(
BaseMessages.getString(PKG,
"RestDialog.ColumnInfo.ParameterField"),
@@ -710,7 +712,7 @@ public class RestDialog extends BaseTransformDialog {
variables,
wMatrixParametersComp,
SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI,
- colinfoparams,
+ matrixParameterColumns,
matrixParametersRows,
lsMod,
props);
@@ -757,7 +759,7 @@ public class RestDialog extends BaseTransformDialog {
int ParametersRows = input.getParameterFields().size();
- colinfoparams =
+ queryParameterColumns =
new ColumnInfo[] {
new ColumnInfo(
BaseMessages.getString(PKG,
"RestDialog.ColumnInfo.ParameterField"),
@@ -775,7 +777,7 @@ public class RestDialog extends BaseTransformDialog {
variables,
wParametersComp,
SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI,
- colinfoparams,
+ queryParameterColumns,
ParametersRows,
lsMod,
props);
@@ -1548,7 +1550,7 @@ public class RestDialog extends BaseTransformDialog {
}
String[] fieldNames =
Const.sortStrings(rowMeta.getFieldNames());
- colinfoparams[0].setComboValues(fieldNames);
+ setParameterComboValues(queryParameterColumns,
matrixParameterColumns, fieldNames);
colinf[0].setComboValues(fieldNames);
wUrlField.setItems(fieldNames);
wBody.setItems(fieldNames);
@@ -1564,6 +1566,14 @@ public class RestDialog extends BaseTransformDialog {
shell.getDisplay().asyncExec(runnable);
}
+ static void setParameterComboValues(
+ ColumnInfo[] queryParameterColumns,
+ ColumnInfo[] matrixParameterColumns,
+ String[] fieldNames) {
+ queryParameterColumns[0].setComboValues(fieldNames);
+ matrixParameterColumns[0].setComboValues(fieldNames);
+ }
+
private void activateUrlInfield() {
wlUrlField.setEnabled(wUrlInField.getSelection());
wUrlField.setEnabled(wUrlInField.getSelection());
diff --git
a/plugins/transforms/rest/src/test/java/org/apache/hop/pipeline/transforms/rest/RestDialogTest.java
b/plugins/transforms/rest/src/test/java/org/apache/hop/pipeline/transforms/rest/RestDialogTest.java
new file mode 100644
index 0000000000..b31392ae4e
--- /dev/null
+++
b/plugins/transforms/rest/src/test/java/org/apache/hop/pipeline/transforms/rest/RestDialogTest.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hop.pipeline.transforms.rest;
+
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+
+import org.apache.hop.ui.core.widget.ColumnInfo;
+import org.junit.jupiter.api.Test;
+
+class RestDialogTest {
+
+ @Test
+ void populatesQueryAndMatrixParameterFieldLists() {
+ ColumnInfo[] queryColumns = parameterColumns();
+ ColumnInfo[] matrixColumns = parameterColumns();
+ String[] fieldNames = {"id", "search_value"};
+
+ RestDialog.setParameterComboValues(queryColumns, matrixColumns,
fieldNames);
+
+ assertArrayEquals(fieldNames, queryColumns[0].getComboValues());
+ assertArrayEquals(fieldNames, matrixColumns[0].getComboValues());
+ }
+
+ private static ColumnInfo[] parameterColumns() {
+ return new ColumnInfo[] {
+ new ColumnInfo("Parameter field", ColumnInfo.COLUMN_TYPE_CCOMBO, new
String[] {""}, false)
+ };
+ }
+}