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

mattyb149 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 e638bcee2f NIFI-10617: - Adding dynamic property annotation on a 
number of extensions that were missing it.
e638bcee2f is described below

commit e638bcee2f4cf08e2b1dd7d379e092e06fd20d6f
Author: Matt Gilman <[email protected]>
AuthorDate: Sun Oct 9 14:31:18 2022 -0400

    NIFI-10617:
    - Adding dynamic property annotation on a number of extensions that were 
missing it.
    
    Signed-off-by: Matthew Burgess <[email protected]>
    
    This closes #6501
---
 .../org/apache/nifi/processors/aws/sns/PutSNS.java | 22 +++++++-------
 .../record/sink/kafka/KafkaRecordSink_1_0.java     |  6 ++++
 .../record/sink/kafka/KafkaRecordSink_2_0.java     |  6 ++++
 .../record/sink/kafka/KafkaRecordSink_2_6.java     |  6 ++++
 .../nifi/lookup/script/ScriptedLookupService.java  |  5 ++++
 .../lookup/script/SimpleScriptedLookupService.java |  5 ++++
 .../apache/nifi/record/script/ScriptedReader.java  |  5 ++++
 .../record/script/ScriptedRecordSetWriter.java     |  5 ++++
 .../record/sink/script/ScriptedRecordSink.java     |  4 +++
 .../rules/engine/script/ScriptedRulesEngine.java   |  5 ++++
 .../handlers/script/ScriptedActionHandler.java     |  5 ++++
 .../apache/nifi/processors/twitter/GetTwitter.java | 34 ++++++++++++----------
 .../org/apache/nifi/processors/solr/QuerySolr.java |  3 ++
 .../nifi/processors/standard/UpdateRecord.java     |  4 +++
 .../nifi/lookup/SimpleKeyValueLookupService.java   | 18 +++++++-----
 15 files changed, 101 insertions(+), 32 deletions(-)

diff --git 
a/nifi-nar-bundles/nifi-aws-bundle/nifi-aws-processors/src/main/java/org/apache/nifi/processors/aws/sns/PutSNS.java
 
b/nifi-nar-bundles/nifi-aws-bundle/nifi-aws-processors/src/main/java/org/apache/nifi/processors/aws/sns/PutSNS.java
index f4c3c0424c..acb8166487 100644
--- 
a/nifi-nar-bundles/nifi-aws-bundle/nifi-aws-processors/src/main/java/org/apache/nifi/processors/aws/sns/PutSNS.java
+++ 
b/nifi-nar-bundles/nifi-aws-bundle/nifi-aws-processors/src/main/java/org/apache/nifi/processors/aws/sns/PutSNS.java
@@ -16,14 +16,11 @@
  */
 package org.apache.nifi.processors.aws.sns;
 
-import java.io.ByteArrayOutputStream;
-import java.nio.charset.Charset;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
+import com.amazonaws.services.sns.AmazonSNSClient;
+import com.amazonaws.services.sns.model.MessageAttributeValue;
+import com.amazonaws.services.sns.model.PublishRequest;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.nifi.annotation.behavior.DynamicProperty;
 import org.apache.nifi.annotation.behavior.InputRequirement;
 import org.apache.nifi.annotation.behavior.InputRequirement.Requirement;
 import org.apache.nifi.annotation.behavior.SupportsBatching;
@@ -39,15 +36,20 @@ import org.apache.nifi.processor.util.StandardValidators;
 import org.apache.nifi.processors.aws.sqs.GetSQS;
 import org.apache.nifi.processors.aws.sqs.PutSQS;
 
-import com.amazonaws.services.sns.AmazonSNSClient;
-import com.amazonaws.services.sns.model.MessageAttributeValue;
-import com.amazonaws.services.sns.model.PublishRequest;
+import java.io.ByteArrayOutputStream;
+import java.nio.charset.Charset;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
 
 @SupportsBatching
 @SeeAlso({GetSQS.class, PutSQS.class})
 @InputRequirement(Requirement.INPUT_REQUIRED)
 @Tags({"amazon", "aws", "sns", "topic", "put", "publish", "pubsub"})
 @CapabilityDescription("Sends the content of a FlowFile as a notification to 
the Amazon Simple Notification Service")
+@DynamicProperty(name = "A name of an attribute to be added to the 
notification", value = "The attribute value", expressionLanguageScope = 
ExpressionLanguageScope.FLOWFILE_ATTRIBUTES,
+        description = "User specified dynamic Properties are added as 
attributes to the notification")
 public class PutSNS extends AbstractSNSProcessor {
 
     public static final PropertyDescriptor CHARACTER_ENCODING = new 
PropertyDescriptor.Builder()
diff --git 
a/nifi-nar-bundles/nifi-kafka-bundle/nifi-kafka-1-0-processors/src/main/java/org/apache/nifi/record/sink/kafka/KafkaRecordSink_1_0.java
 
b/nifi-nar-bundles/nifi-kafka-bundle/nifi-kafka-1-0-processors/src/main/java/org/apache/nifi/record/sink/kafka/KafkaRecordSink_1_0.java
index 639f5db00c..287b9aa449 100644
--- 
a/nifi-nar-bundles/nifi-kafka-bundle/nifi-kafka-1-0-processors/src/main/java/org/apache/nifi/record/sink/kafka/KafkaRecordSink_1_0.java
+++ 
b/nifi-nar-bundles/nifi-kafka-bundle/nifi-kafka-1-0-processors/src/main/java/org/apache/nifi/record/sink/kafka/KafkaRecordSink_1_0.java
@@ -25,6 +25,7 @@ import org.apache.kafka.clients.producer.ProducerRecord;
 import org.apache.kafka.common.config.SaslConfigs;
 import org.apache.kafka.common.config.SslConfigs;
 import org.apache.kafka.common.serialization.ByteArraySerializer;
+import org.apache.nifi.annotation.behavior.DynamicProperty;
 import org.apache.nifi.annotation.documentation.CapabilityDescription;
 import org.apache.nifi.annotation.documentation.Tags;
 import org.apache.nifi.annotation.lifecycle.OnDisabled;
@@ -70,6 +71,11 @@ import java.util.concurrent.TimeoutException;
 
 @Tags({"kafka", "record", "sink"})
 @CapabilityDescription("Provides a service to write records to a Kafka 1.x 
topic.")
+@DynamicProperty(name = "The name of a Kafka configuration property.", value = 
"The value of a given Kafka configuration property.",
+        description = "These properties will be added on the Kafka 
configuration after loading any provided configuration properties."
+                + " In the event a dynamic property represents a property that 
was already set, its value will be ignored and WARN message logged."
+                + " For the list of available Kafka properties please refer 
to: http://kafka.apache.org/documentation.html#configuration. ",
+        expressionLanguageScope = ExpressionLanguageScope.VARIABLE_REGISTRY)
 public class KafkaRecordSink_1_0 extends AbstractControllerService implements 
RecordSinkService {
 
     static final AllowableValue DELIVERY_REPLICATED = new 
AllowableValue("all", "Guarantee Replicated Delivery",
diff --git 
a/nifi-nar-bundles/nifi-kafka-bundle/nifi-kafka-2-0-processors/src/main/java/org/apache/nifi/record/sink/kafka/KafkaRecordSink_2_0.java
 
b/nifi-nar-bundles/nifi-kafka-bundle/nifi-kafka-2-0-processors/src/main/java/org/apache/nifi/record/sink/kafka/KafkaRecordSink_2_0.java
index 3a6ea2114f..dba0c61043 100644
--- 
a/nifi-nar-bundles/nifi-kafka-bundle/nifi-kafka-2-0-processors/src/main/java/org/apache/nifi/record/sink/kafka/KafkaRecordSink_2_0.java
+++ 
b/nifi-nar-bundles/nifi-kafka-bundle/nifi-kafka-2-0-processors/src/main/java/org/apache/nifi/record/sink/kafka/KafkaRecordSink_2_0.java
@@ -25,6 +25,7 @@ import org.apache.kafka.clients.producer.ProducerRecord;
 import org.apache.kafka.common.config.SaslConfigs;
 import org.apache.kafka.common.config.SslConfigs;
 import org.apache.kafka.common.serialization.ByteArraySerializer;
+import org.apache.nifi.annotation.behavior.DynamicProperty;
 import org.apache.nifi.annotation.documentation.CapabilityDescription;
 import org.apache.nifi.annotation.documentation.Tags;
 import org.apache.nifi.annotation.lifecycle.OnDisabled;
@@ -70,6 +71,11 @@ import java.util.concurrent.TimeoutException;
 
 @Tags({"kafka", "record", "sink"})
 @CapabilityDescription("Provides a service to write records to a Kafka 2.x 
topic.")
+@DynamicProperty(name = "The name of a Kafka configuration property.", value = 
"The value of a given Kafka configuration property.",
+        description = "These properties will be added on the Kafka 
configuration after loading any provided configuration properties."
+                + " In the event a dynamic property represents a property that 
was already set, its value will be ignored and WARN message logged."
+                + " For the list of available Kafka properties please refer 
to: http://kafka.apache.org/documentation.html#configuration. ",
+        expressionLanguageScope = ExpressionLanguageScope.VARIABLE_REGISTRY)
 public class KafkaRecordSink_2_0 extends AbstractControllerService implements 
RecordSinkService {
 
     static final AllowableValue DELIVERY_REPLICATED = new 
AllowableValue("all", "Guarantee Replicated Delivery",
diff --git 
a/nifi-nar-bundles/nifi-kafka-bundle/nifi-kafka-2-6-processors/src/main/java/org/apache/nifi/record/sink/kafka/KafkaRecordSink_2_6.java
 
b/nifi-nar-bundles/nifi-kafka-bundle/nifi-kafka-2-6-processors/src/main/java/org/apache/nifi/record/sink/kafka/KafkaRecordSink_2_6.java
index df1cb4dbb3..b05fe65113 100644
--- 
a/nifi-nar-bundles/nifi-kafka-bundle/nifi-kafka-2-6-processors/src/main/java/org/apache/nifi/record/sink/kafka/KafkaRecordSink_2_6.java
+++ 
b/nifi-nar-bundles/nifi-kafka-bundle/nifi-kafka-2-6-processors/src/main/java/org/apache/nifi/record/sink/kafka/KafkaRecordSink_2_6.java
@@ -25,6 +25,7 @@ import org.apache.kafka.clients.producer.ProducerRecord;
 import org.apache.kafka.common.config.SaslConfigs;
 import org.apache.kafka.common.config.SslConfigs;
 import org.apache.kafka.common.serialization.ByteArraySerializer;
+import org.apache.nifi.annotation.behavior.DynamicProperty;
 import org.apache.nifi.annotation.documentation.CapabilityDescription;
 import org.apache.nifi.annotation.documentation.Tags;
 import org.apache.nifi.annotation.lifecycle.OnDisabled;
@@ -70,6 +71,11 @@ import java.util.concurrent.TimeoutException;
 
 @Tags({"kafka", "record", "sink"})
 @CapabilityDescription("Provides a service to write records to a Kafka 2.6+ 
topic.")
+@DynamicProperty(name = "The name of a Kafka configuration property.", value = 
"The value of a given Kafka configuration property.",
+        description = "These properties will be added on the Kafka 
configuration after loading any provided configuration properties."
+                + " In the event a dynamic property represents a property that 
was already set, its value will be ignored and WARN message logged."
+                + " For the list of available Kafka properties please refer 
to: http://kafka.apache.org/documentation.html#configuration. ",
+        expressionLanguageScope = ExpressionLanguageScope.VARIABLE_REGISTRY)
 public class KafkaRecordSink_2_6 extends AbstractControllerService implements 
RecordSinkService {
 
     static final AllowableValue DELIVERY_REPLICATED = new 
AllowableValue("all", "Guarantee Replicated Delivery",
diff --git 
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/lookup/script/ScriptedLookupService.java
 
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/lookup/script/ScriptedLookupService.java
index 0ef8309d73..3965ed6413 100644
--- 
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/lookup/script/ScriptedLookupService.java
+++ 
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/lookup/script/ScriptedLookupService.java
@@ -16,11 +16,13 @@
  */
 package org.apache.nifi.lookup.script;
 
+import org.apache.nifi.annotation.behavior.DynamicProperty;
 import org.apache.nifi.annotation.behavior.Restricted;
 import org.apache.nifi.annotation.behavior.Restriction;
 import org.apache.nifi.annotation.documentation.CapabilityDescription;
 import org.apache.nifi.annotation.documentation.Tags;
 import org.apache.nifi.components.RequiredPermission;
+import org.apache.nifi.expression.ExpressionLanguageScope;
 import org.apache.nifi.lookup.LookupFailureException;
 import org.apache.nifi.lookup.LookupService;
 
@@ -35,6 +37,9 @@ import java.util.Set;
 @CapabilityDescription("Allows the user to provide a scripted LookupService 
instance in order to enrich records from " +
         "an incoming flow file. Please note, that due to a bug in Jython that 
remains unresolved, it is not possible to use " +
         "Jython to write a script for this service in Python.")
+@DynamicProperty(name = "Script Engine Binding property", value = "Binding 
property value passed to Script Runner",
+        expressionLanguageScope = ExpressionLanguageScope.VARIABLE_REGISTRY,
+        description = "Updates a script engine property specified by the 
Dynamic Property's key with the value specified by the Dynamic Property's 
value")
 @Restricted(
         restrictions = {
                 @Restriction(
diff --git 
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/lookup/script/SimpleScriptedLookupService.java
 
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/lookup/script/SimpleScriptedLookupService.java
index d4636db21f..e6e43b2df0 100644
--- 
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/lookup/script/SimpleScriptedLookupService.java
+++ 
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/lookup/script/SimpleScriptedLookupService.java
@@ -16,11 +16,13 @@
  */
 package org.apache.nifi.lookup.script;
 
+import org.apache.nifi.annotation.behavior.DynamicProperty;
 import org.apache.nifi.annotation.behavior.Restricted;
 import org.apache.nifi.annotation.behavior.Restriction;
 import org.apache.nifi.annotation.documentation.CapabilityDescription;
 import org.apache.nifi.annotation.documentation.Tags;
 import org.apache.nifi.components.RequiredPermission;
+import org.apache.nifi.expression.ExpressionLanguageScope;
 import org.apache.nifi.lookup.LookupFailureException;
 import org.apache.nifi.lookup.StringLookupService;
 
@@ -37,6 +39,9 @@ import java.util.Set;
         + "Also the scripted lookup service should implement 
StringLookupService, otherwise the getValueType() method must be implemented 
even "
         + "though it will be ignored, as SimpleScriptedLookupService returns 
String as the value type on the script's behalf. Please note that due to "
         + "a bug in Jython that remains unresolved, it is not possible to use 
Jython to write a script for this service in Python.")
+@DynamicProperty(name = "Script Engine Binding property", value = "Binding 
property value passed to Script Runner",
+        expressionLanguageScope = ExpressionLanguageScope.VARIABLE_REGISTRY,
+        description = "Updates a script engine property specified by the 
Dynamic Property's key with the value specified by the Dynamic Property's 
value")
 @Restricted(
         restrictions = {
                 @Restriction(
diff --git 
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/record/script/ScriptedReader.java
 
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/record/script/ScriptedReader.java
index fa4a20cacb..17b06af8c0 100644
--- 
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/record/script/ScriptedReader.java
+++ 
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/record/script/ScriptedReader.java
@@ -16,6 +16,7 @@
  */
 package org.apache.nifi.record.script;
 
+import org.apache.nifi.annotation.behavior.DynamicProperty;
 import org.apache.nifi.annotation.behavior.Restricted;
 import org.apache.nifi.annotation.behavior.Restriction;
 import org.apache.nifi.annotation.documentation.CapabilityDescription;
@@ -24,6 +25,7 @@ import org.apache.nifi.annotation.lifecycle.OnEnabled;
 import org.apache.nifi.components.RequiredPermission;
 import org.apache.nifi.components.ValidationResult;
 import org.apache.nifi.controller.ConfigurationContext;
+import org.apache.nifi.expression.ExpressionLanguageScope;
 import org.apache.nifi.logging.ComponentLog;
 import org.apache.nifi.processor.exception.ProcessException;
 import org.apache.nifi.schema.access.SchemaNotFoundException;
@@ -47,6 +49,9 @@ import java.util.Map;
  */
 @Tags({"record", "recordFactory", "script", "invoke", "groovy", "python", 
"jython", "jruby", "ruby", "javascript", "js", "lua", "luaj"})
 @CapabilityDescription("Allows the user to provide a scripted 
RecordReaderFactory instance in order to read/parse/generate records from an 
incoming flow file.")
+@DynamicProperty(name = "Script Engine Binding property", value = "Binding 
property value passed to Script Runner",
+        expressionLanguageScope = ExpressionLanguageScope.VARIABLE_REGISTRY,
+        description = "Updates a script engine property specified by the 
Dynamic Property's key with the value specified by the Dynamic Property's 
value")
 @Restricted(
         restrictions = {
                 @Restriction(
diff --git 
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/record/script/ScriptedRecordSetWriter.java
 
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/record/script/ScriptedRecordSetWriter.java
index 83f26df102..d7461f23b5 100644
--- 
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/record/script/ScriptedRecordSetWriter.java
+++ 
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/record/script/ScriptedRecordSetWriter.java
@@ -16,6 +16,7 @@
  */
 package org.apache.nifi.record.script;
 
+import org.apache.nifi.annotation.behavior.DynamicProperty;
 import org.apache.nifi.annotation.behavior.Restricted;
 import org.apache.nifi.annotation.behavior.Restriction;
 import org.apache.nifi.annotation.documentation.CapabilityDescription;
@@ -24,6 +25,7 @@ import org.apache.nifi.annotation.lifecycle.OnEnabled;
 import org.apache.nifi.components.RequiredPermission;
 import org.apache.nifi.components.ValidationResult;
 import org.apache.nifi.controller.ConfigurationContext;
+import org.apache.nifi.expression.ExpressionLanguageScope;
 import org.apache.nifi.logging.ComponentLog;
 import org.apache.nifi.processor.exception.ProcessException;
 import org.apache.nifi.schema.access.SchemaNotFoundException;
@@ -47,6 +49,9 @@ import java.util.Map;
  */
 @Tags({"record", "writer", "script", "invoke", "groovy", "python", "jython", 
"jruby", "ruby", "javascript", "js", "lua", "luaj"})
 @CapabilityDescription("Allows the user to provide a scripted 
RecordSetWriterFactory instance in order to write records to an outgoing flow 
file.")
+@DynamicProperty(name = "Script Engine Binding property", value = "Binding 
property value passed to Script Runner",
+        expressionLanguageScope = ExpressionLanguageScope.VARIABLE_REGISTRY,
+        description = "Updates a script engine property specified by the 
Dynamic Property's key with the value specified by the Dynamic Property's 
value")
 @Restricted(
         restrictions = {
                 @Restriction(
diff --git 
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/record/sink/script/ScriptedRecordSink.java
 
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/record/sink/script/ScriptedRecordSink.java
index 0f5748ad9b..c8eb10e4f1 100644
--- 
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/record/sink/script/ScriptedRecordSink.java
+++ 
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/record/sink/script/ScriptedRecordSink.java
@@ -16,6 +16,7 @@
  */
 package org.apache.nifi.record.sink.script;
 
+import org.apache.nifi.annotation.behavior.DynamicProperty;
 import org.apache.nifi.annotation.behavior.Restricted;
 import org.apache.nifi.annotation.behavior.Restriction;
 import org.apache.nifi.annotation.documentation.CapabilityDescription;
@@ -52,6 +53,9 @@ import java.util.concurrent.atomic.AtomicReference;
 @Tags({"record", "record sink", "script", "invoke", "groovy", "python", 
"jython", "jruby", "ruby", "javascript", "js", "lua", "luaj"})
 @CapabilityDescription("Allows the user to provide a scripted 
RecordSinkService instance in order to transmit records to the desired target. 
The script must set a variable 'recordSink' to an "
         + "implementation of RecordSinkService.")
+@DynamicProperty(name = "Script Engine Binding property", value = "Binding 
property value passed to Script Runner",
+        expressionLanguageScope = ExpressionLanguageScope.VARIABLE_REGISTRY,
+        description = "Updates a script engine property specified by the 
Dynamic Property's key with the value specified by the Dynamic Property's 
value")
 @Restricted(
         restrictions = {
                 @Restriction(
diff --git 
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/rules/engine/script/ScriptedRulesEngine.java
 
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/rules/engine/script/ScriptedRulesEngine.java
index b30b9ef2c9..c117597917 100644
--- 
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/rules/engine/script/ScriptedRulesEngine.java
+++ 
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/rules/engine/script/ScriptedRulesEngine.java
@@ -16,6 +16,7 @@
  */
 package org.apache.nifi.rules.engine.script;
 
+import org.apache.nifi.annotation.behavior.DynamicProperty;
 import org.apache.nifi.annotation.behavior.Restricted;
 import org.apache.nifi.annotation.behavior.Restriction;
 import org.apache.nifi.annotation.documentation.CapabilityDescription;
@@ -25,6 +26,7 @@ import org.apache.nifi.components.PropertyDescriptor;
 import org.apache.nifi.components.RequiredPermission;
 import org.apache.nifi.components.ValidationResult;
 import org.apache.nifi.controller.ConfigurationContext;
+import org.apache.nifi.expression.ExpressionLanguageScope;
 import org.apache.nifi.logging.ComponentLog;
 import org.apache.nifi.processor.exception.ProcessException;
 import org.apache.nifi.rules.Action;
@@ -46,6 +48,9 @@ import java.util.concurrent.atomic.AtomicReference;
 @Tags({"rules", "rules engine", "script", "invoke", "groovy", "python", 
"jython", "jruby", "ruby", "javascript", "js", "lua", "luaj"})
 @CapabilityDescription("Allows the user to provide a scripted 
RulesEngineService for custom firing of rules depending on the supplied facts. 
The script must set a variable 'rulesEngine' to an "
         + "implementation of RulesEngineService.")
+@DynamicProperty(name = "Script Engine Binding property", value = "Binding 
property value passed to Script Runner",
+        expressionLanguageScope = ExpressionLanguageScope.VARIABLE_REGISTRY,
+        description = "Updates a script engine property specified by the 
Dynamic Property's key with the value specified by the Dynamic Property's 
value")
 @Restricted(
         restrictions = {
                 @Restriction(
diff --git 
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/rules/handlers/script/ScriptedActionHandler.java
 
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/rules/handlers/script/ScriptedActionHandler.java
index 4e5efd3b26..a56aa09751 100644
--- 
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/rules/handlers/script/ScriptedActionHandler.java
+++ 
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/rules/handlers/script/ScriptedActionHandler.java
@@ -16,6 +16,7 @@
  */
 package org.apache.nifi.rules.handlers.script;
 
+import org.apache.nifi.annotation.behavior.DynamicProperty;
 import org.apache.nifi.annotation.behavior.Restricted;
 import org.apache.nifi.annotation.behavior.Restriction;
 import org.apache.nifi.annotation.documentation.CapabilityDescription;
@@ -26,6 +27,7 @@ import org.apache.nifi.components.RequiredPermission;
 import org.apache.nifi.components.ValidationResult;
 import org.apache.nifi.context.PropertyContext;
 import org.apache.nifi.controller.ConfigurationContext;
+import org.apache.nifi.expression.ExpressionLanguageScope;
 import org.apache.nifi.logging.ComponentLog;
 import org.apache.nifi.processor.exception.ProcessException;
 import org.apache.nifi.rules.Action;
@@ -48,6 +50,9 @@ import java.util.concurrent.atomic.AtomicReference;
 @Tags({"rules", "rules engine", "action", "action handler", "script", 
"invoke", "groovy", "python", "jython", "jruby", "ruby", "javascript", "js", 
"lua", "luaj"})
 @CapabilityDescription("Allows the user to provide a scripted ActionHandler 
for custom firing of rules depending on the supplied facts. The script must set 
a variable 'actionHandler' to an "
         + "implementation of ActionHandler.")
+@DynamicProperty(name = "Script Engine Binding property", value = "Binding 
property value passed to Script Runner",
+        expressionLanguageScope = ExpressionLanguageScope.VARIABLE_REGISTRY,
+        description = "Updates a script engine property specified by the 
Dynamic Property's key with the value specified by the Dynamic Property's 
value")
 @Restricted(
         restrictions = {
                 @Restriction(
diff --git 
a/nifi-nar-bundles/nifi-social-media-bundle/nifi-twitter-processors/src/main/java/org/apache/nifi/processors/twitter/GetTwitter.java
 
b/nifi-nar-bundles/nifi-social-media-bundle/nifi-twitter-processors/src/main/java/org/apache/nifi/processors/twitter/GetTwitter.java
index 0adb6978c0..0e17106a14 100644
--- 
a/nifi-nar-bundles/nifi-social-media-bundle/nifi-twitter-processors/src/main/java/org/apache/nifi/processors/twitter/GetTwitter.java
+++ 
b/nifi-nar-bundles/nifi-social-media-bundle/nifi-twitter-processors/src/main/java/org/apache/nifi/processors/twitter/GetTwitter.java
@@ -29,20 +29,7 @@ import com.twitter.hbc.core.event.Event;
 import com.twitter.hbc.core.processor.StringDelimitedProcessor;
 import com.twitter.hbc.httpclient.auth.Authentication;
 import com.twitter.hbc.httpclient.auth.OAuth1;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.regex.Pattern;
+import org.apache.nifi.annotation.behavior.DynamicProperty;
 import org.apache.nifi.annotation.behavior.InputRequirement;
 import org.apache.nifi.annotation.behavior.InputRequirement.Requirement;
 import org.apache.nifi.annotation.behavior.SupportsBatching;
@@ -70,6 +57,21 @@ import org.apache.nifi.processor.exception.ProcessException;
 import org.apache.nifi.processor.io.OutputStreamCallback;
 import org.apache.nifi.processor.util.StandardValidators;
 
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.regex.Pattern;
+
 @Deprecated
 @DeprecationNotice(alternatives = {ConsumeTwitter.class}, reason = "GetTwitter 
relies on the Twitter Hosebird client, which is not maintained. This processor 
will be removed in future releases.")
 @SupportsBatching
@@ -77,6 +79,8 @@ import org.apache.nifi.processor.util.StandardValidators;
 @Tags({"twitter", "tweets", "social media", "status", "json"})
 @CapabilityDescription("Pulls status changes from Twitter's streaming API. In 
versions starting with 1.9.0, the Consumer Key and Access Token are marked as 
sensitive according to 
https://developer.twitter.com/en/docs/basics/authentication/guides/securing-keys-and-tokens";)
 @WritesAttribute(attribute = "mime.type", description = "Sets mime type to 
application/json")
+@DynamicProperty(name="The name of a query parameter to add to the Twitter 
query", value="The value of a query parameter to add to the Twitter query",
+        description="Allows users to specify the name/value of a query 
parameter to add to the Twitter query")
 public class GetTwitter extends AbstractProcessor {
 
     static final AllowableValue ENDPOINT_SAMPLE = new AllowableValue("Sample 
Endpoint", "Sample Endpoint", "The endpoint that provides public data, aka a 
'garden hose'");
@@ -480,4 +484,4 @@ public class GetTwitter extends AbstractProcessor {
 
     }
 
-}
\ No newline at end of file
+}
diff --git 
a/nifi-nar-bundles/nifi-solr-bundle/nifi-solr-processors/src/main/java/org/apache/nifi/processors/solr/QuerySolr.java
 
b/nifi-nar-bundles/nifi-solr-bundle/nifi-solr-processors/src/main/java/org/apache/nifi/processors/solr/QuerySolr.java
index b975fe9787..8c9d6e95e0 100644
--- 
a/nifi-nar-bundles/nifi-solr-bundle/nifi-solr-processors/src/main/java/org/apache/nifi/processors/solr/QuerySolr.java
+++ 
b/nifi-nar-bundles/nifi-solr-bundle/nifi-solr-processors/src/main/java/org/apache/nifi/processors/solr/QuerySolr.java
@@ -20,6 +20,7 @@
 package org.apache.nifi.processors.solr;
 
 import com.google.gson.stream.JsonWriter;
+import org.apache.nifi.annotation.behavior.DynamicProperty;
 import org.apache.nifi.annotation.behavior.InputRequirement;
 import org.apache.nifi.annotation.behavior.WritesAttribute;
 import org.apache.nifi.annotation.behavior.WritesAttributes;
@@ -94,6 +95,8 @@ import static 
org.apache.nifi.processors.solr.SolrUtils.RECORD_WRITER;
 @Tags({"Apache", "Solr", "Get", "Query", "Records"})
 @InputRequirement(InputRequirement.Requirement.INPUT_ALLOWED)
 @CapabilityDescription("Queries Solr and outputs the results as a FlowFile in 
the format of XML or using a Record Writer")
+@DynamicProperty(name="A Solr request parameter name", value="A Solr request 
parameter value",
+        description="These parameters will be passed to Solr on the request")
 @WritesAttributes({
         @WritesAttribute(attribute = "solr.connect", description = "Solr 
connect string"),
         @WritesAttribute(attribute = "solr.collection", description = "Solr 
collection"),
diff --git 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/UpdateRecord.java
 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/UpdateRecord.java
index 65abdc9dc9..21581f4b54 100644
--- 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/UpdateRecord.java
+++ 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/UpdateRecord.java
@@ -17,6 +17,7 @@
 
 package org.apache.nifi.processors.standard;
 
+import org.apache.nifi.annotation.behavior.DynamicProperty;
 import org.apache.nifi.annotation.behavior.EventDriven;
 import org.apache.nifi.annotation.behavior.InputRequirement;
 import org.apache.nifi.annotation.behavior.InputRequirement.Requirement;
@@ -72,6 +73,9 @@ import java.util.stream.Stream;
     @WritesAttribute(attribute = "record.index", description = "This attribute 
provides the current row index and is only available inside the literal value 
expression."),
     @WritesAttribute(attribute = "record.error.message", description = "This 
attribute provides on failure the error message encountered by the Reader or 
Writer.")
 })
+@DynamicProperty(name = "A RecordPath.", value = "The value to use to replace 
fields in the record that match the RecordPath",
+        description = "Allows users to specify values to use to replace fields 
in the record that match the RecordPath.",
+        expressionLanguageScope = ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
 @SeeAlso({ConvertRecord.class})
 public class UpdateRecord extends AbstractRecordProcessor {
     private static final String FIELD_NAME = "field.name";
diff --git 
a/nifi-nar-bundles/nifi-standard-services/nifi-lookup-services-bundle/nifi-lookup-services/src/main/java/org/apache/nifi/lookup/SimpleKeyValueLookupService.java
 
b/nifi-nar-bundles/nifi-standard-services/nifi-lookup-services-bundle/nifi-lookup-services/src/main/java/org/apache/nifi/lookup/SimpleKeyValueLookupService.java
index 2f99c36024..4bb3f870e7 100644
--- 
a/nifi-nar-bundles/nifi-standard-services/nifi-lookup-services-bundle/nifi-lookup-services/src/main/java/org/apache/nifi/lookup/SimpleKeyValueLookupService.java
+++ 
b/nifi-nar-bundles/nifi-standard-services/nifi-lookup-services-bundle/nifi-lookup-services/src/main/java/org/apache/nifi/lookup/SimpleKeyValueLookupService.java
@@ -17,13 +17,7 @@
 
 package org.apache.nifi.lookup;
 
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
+import org.apache.nifi.annotation.behavior.DynamicProperty;
 import org.apache.nifi.annotation.documentation.CapabilityDescription;
 import org.apache.nifi.annotation.documentation.Tags;
 import org.apache.nifi.annotation.lifecycle.OnEnabled;
@@ -33,9 +27,19 @@ import org.apache.nifi.controller.AbstractControllerService;
 import org.apache.nifi.controller.ConfigurationContext;
 import org.apache.nifi.expression.ExpressionLanguageScope;
 
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
 @Tags({"lookup", "enrich", "key", "value"})
 @CapabilityDescription("Allows users to add key/value pairs as User-defined 
Properties. Each property that is added can be looked up by Property Name. "
     + "The coordinates that are passed to the lookup must contain the key 
'key'.")
+@DynamicProperty(name = "A key that can be looked up", value = "The value for 
the key", expressionLanguageScope = ExpressionLanguageScope.VARIABLE_REGISTRY,
+        description = "Allows users to add key/value pairs as User-defined 
Properties. Each property that is added can be looked up by Property Name. "
+                + "The coordinates that are passed to the lookup must contain 
the key 'key'.")
 public class SimpleKeyValueLookupService extends AbstractControllerService 
implements StringLookupService {
     private static final String KEY = "key";
     private static final Set<String> REQUIRED_KEYS = 
Stream.of(KEY).collect(Collectors.toSet());

Reply via email to