You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by pv...@apache.org on 2022/11/23 12:05:07 UTC

[nifi] branch main updated: NIFI-10850: Fixed Query Parameters property in InvokeAWSGatewayApi should support FlowFile attributes in EL

This is an automated email from the ASF dual-hosted git repository.

pvillard pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/main by this push:
     new 40b46b4f5d NIFI-10850: Fixed Query Parameters property in InvokeAWSGatewayApi should support FlowFile attributes in EL
40b46b4f5d is described below

commit 40b46b4f5d385cbaaba114b7d539cff55cf4f011
Author: Peter Turcsanyi <tu...@apache.org>
AuthorDate: Mon Nov 21 17:27:31 2022 +0100

    NIFI-10850: Fixed Query Parameters property in InvokeAWSGatewayApi should support FlowFile attributes in EL
    
    Signed-off-by: Pierre Villard <pi...@gmail.com>
    
    This closes #6692.
---
 .../nifi/processors/aws/wag/AbstractAWSGatewayApiProcessor.java  | 9 +++++----
 .../nifi/processors/aws/wag/TestInvokeAmazonGatewayApiMock.java  | 5 +++--
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/nifi-nar-bundles/nifi-aws-bundle/nifi-aws-abstract-processors/src/main/java/org/apache/nifi/processors/aws/wag/AbstractAWSGatewayApiProcessor.java b/nifi-nar-bundles/nifi-aws-bundle/nifi-aws-abstract-processors/src/main/java/org/apache/nifi/processors/aws/wag/AbstractAWSGatewayApiProcessor.java
index 7cde727fa0..66068a863e 100644
--- a/nifi-nar-bundles/nifi-aws-bundle/nifi-aws-abstract-processors/src/main/java/org/apache/nifi/processors/aws/wag/AbstractAWSGatewayApiProcessor.java
+++ b/nifi-nar-bundles/nifi-aws-bundle/nifi-aws-abstract-processors/src/main/java/org/apache/nifi/processors/aws/wag/AbstractAWSGatewayApiProcessor.java
@@ -402,7 +402,7 @@ public abstract class AbstractAWSGatewayApiProcessor extends
                 context.getProperty(PROP_METHOD).evaluateAttributeExpressions(requestFlowFile)
                         .getValue()).toUpperCase();
         final HttpMethodName methodName = HttpMethodName.fromValue(method);
-        return configureRequest(context, session, resourcePath,requestFlowFile, methodName, attributes);
+        return configureRequest(context, session, resourcePath, requestFlowFile, methodName, attributes);
     }
 
     protected GenericApiGatewayRequest configureRequest(final ProcessContext context,
@@ -414,7 +414,7 @@ public abstract class AbstractAWSGatewayApiProcessor extends
 
         GenericApiGatewayRequestBuilder builder = new GenericApiGatewayRequestBuilder()
             .withResourcePath(resourcePath);
-        final Map<String, List<String>> parameters = getParameters(context);
+        final Map<String, List<String>> parameters = getParameters(context, attributes);
         builder = builder.withParameters(parameters);
 
         InputStream requestBody;
@@ -522,15 +522,16 @@ public abstract class AbstractAWSGatewayApiProcessor extends
      * Returns a map of Query Parameter Name to Values
      *
      * @param context ProcessContext
+     * @param flowFileAttributes map of FlowFile attributes used for EL evaluation
      * @return Map of names and values
      */
-    protected Map<String, List<String>> getParameters(final ProcessContext context) {
+    protected Map<String, List<String>> getParameters(final ProcessContext context, Map<String, String> flowFileAttributes) {
 
         if (!context.getProperty(PROP_QUERY_PARAMS).isSet()) {
             return new HashMap<>();
         }
         final String queryString = context.getProperty(PROP_QUERY_PARAMS)
-                                          .evaluateAttributeExpressions().getValue();
+                                          .evaluateAttributeExpressions(flowFileAttributes).getValue();
         final List<NameValuePair> params = URLEncodedUtils
             .parse(queryString, Charsets.toCharset("UTF-8"));
 
diff --git a/nifi-nar-bundles/nifi-aws-bundle/nifi-aws-processors/src/test/java/org/apache/nifi/processors/aws/wag/TestInvokeAmazonGatewayApiMock.java b/nifi-nar-bundles/nifi-aws-bundle/nifi-aws-processors/src/test/java/org/apache/nifi/processors/aws/wag/TestInvokeAmazonGatewayApiMock.java
index 5b7927dd31..b3a4a970e8 100644
--- a/nifi-nar-bundles/nifi-aws-bundle/nifi-aws-processors/src/test/java/org/apache/nifi/processors/aws/wag/TestInvokeAmazonGatewayApiMock.java
+++ b/nifi-nar-bundles/nifi-aws-bundle/nifi-aws-processors/src/test/java/org/apache/nifi/processors/aws/wag/TestInvokeAmazonGatewayApiMock.java
@@ -178,7 +178,7 @@ public class TestInvokeAmazonGatewayApiMock {
 
         // add dynamic property
         runner.setProperty("dynamicHeader", "yes!");
-        runner.setProperty(InvokeAWSGatewayApi.PROP_QUERY_PARAMS, "apples=oranges&dogs=cats");
+        runner.setProperty(InvokeAWSGatewayApi.PROP_QUERY_PARAMS, "apples=oranges&dogs=cats&filename=${filename}");
 
         // set the regex
         runner.setProperty(InvokeAWSGatewayApi.PROP_ATTRIBUTES_TO_SEND, "F.*");
@@ -186,6 +186,7 @@ public class TestInvokeAmazonGatewayApiMock {
         final Map<String, String> attributes = new HashMap<>();
         attributes.put(CoreAttributes.MIME_TYPE.key(), "application/plain-text");
         attributes.put("Foo", "Bar");
+        attributes.put("filename", "testfile");
         runner.enqueue("Hello".getBytes(StandardCharsets.UTF_8), attributes);
         // execute
         runner.assertValid();
@@ -197,7 +198,7 @@ public class TestInvokeAmazonGatewayApiMock {
                                 && argument.getFirstHeader("Authorization").getValue().startsWith("AWS4")
                                 && argument.getFirstHeader("dynamicHeader").getValue().equals("yes!")
                                 && argument.getFirstHeader("Foo").getValue().equals("Bar")
-                                && argument.getURI().toString().equals("https://foobar.execute-api.us-east-1.amazonaws.com/TEST?dogs=cats&apples=oranges")),
+                                && argument.getURI().toString().equals("https://foobar.execute-api.us-east-1.amazonaws.com/TEST?filename=testfile&dogs=cats&apples=oranges")),
                         any(HttpContext.class));
         // check
         runner.assertTransferCount(InvokeAWSGatewayApi.REL_SUCCESS_REQ, 1);