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());