This is an automated email from the ASF dual-hosted git repository.
exceptionfactory 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 1d8a7da20e NIFI-15108 Standardized property names in Salesforce,
Scripting, Shopify, S2S, and Slack bundles (#10468)
1d8a7da20e is described below
commit 1d8a7da20ec96ffa7505dab38b658f6caa9100d1
Author: dan-s1 <[email protected]>
AuthorDate: Tue Oct 28 14:41:35 2025 -0400
NIFI-15108 Standardized property names in Salesforce, Scripting, Shopify,
S2S, and Slack bundles (#10468)
Signed-off-by: David Handermann <[email protected]>
---
.../processors/salesforce/PutSalesforceObject.java | 17 ++++++-
.../salesforce/QuerySalesforceObject.java | 57 +++++++++++++---------
.../util/CommonSalesforceProperties.java | 16 +++---
.../processors/script/ScriptedRecordProcessor.java | 9 +++-
.../nifi/script/ScriptingComponentHelper.java | 3 +-
.../script/TestScriptingComponentHelper.java | 3 +-
.../apache/nifi/processors/shopify/GetShopify.java | 41 +++++++++-------
.../reporting/AbstractSiteToSiteReportingTask.java | 9 ++--
.../reporting/SiteToSiteMetricsReportingTask.java | 17 ++++---
.../SiteToSiteProvenanceReportingTask.java | 45 +++++++++--------
.../apache/nifi/reporting/s2s/SiteToSiteUtils.java | 4 +-
.../sink/SiteToSiteReportingRecordSink.java | 1 +
.../nifi/services/slack/SlackRecordSink.java | 25 ++++++----
13 files changed, 150 insertions(+), 97 deletions(-)
diff --git
a/nifi-extension-bundles/nifi-salesforce-bundle/nifi-salesforce-processors/src/main/java/org/apache/nifi/processors/salesforce/PutSalesforceObject.java
b/nifi-extension-bundles/nifi-salesforce-bundle/nifi-salesforce-processors/src/main/java/org/apache/nifi/processors/salesforce/PutSalesforceObject.java
index 0821d55d4e..4995573534 100644
---
a/nifi-extension-bundles/nifi-salesforce-bundle/nifi-salesforce-processors/src/main/java/org/apache/nifi/processors/salesforce/PutSalesforceObject.java
+++
b/nifi-extension-bundles/nifi-salesforce-bundle/nifi-salesforce-processors/src/main/java/org/apache/nifi/processors/salesforce/PutSalesforceObject.java
@@ -29,6 +29,7 @@ import org.apache.nifi.components.PropertyDescriptor;
import org.apache.nifi.flowfile.FlowFile;
import org.apache.nifi.json.OutputGrouping;
import org.apache.nifi.json.WriteJsonResult;
+import org.apache.nifi.migration.PropertyConfiguration;
import org.apache.nifi.oauth2.OAuth2AccessTokenProvider;
import org.apache.nifi.processor.AbstractProcessor;
import org.apache.nifi.processor.ProcessContext;
@@ -55,6 +56,10 @@ import java.util.Set;
import java.util.concurrent.TimeUnit;
import static
org.apache.nifi.processors.salesforce.util.CommonSalesforceProperties.API_VERSION;
+import static
org.apache.nifi.processors.salesforce.util.CommonSalesforceProperties.OLD_API_VERSION_PROPERTY_NAME;
+import static
org.apache.nifi.processors.salesforce.util.CommonSalesforceProperties.OLD_READ_TIMEOUT_PROPERTY_NAME;
+import static
org.apache.nifi.processors.salesforce.util.CommonSalesforceProperties.OLD_SALESFORCE_INSTANCE_URL_PROPERTY_NAME;
+import static
org.apache.nifi.processors.salesforce.util.CommonSalesforceProperties.OLD_TOKEN_PROVIDER_PROPERTY_NAME;
import static
org.apache.nifi.processors.salesforce.util.CommonSalesforceProperties.READ_TIMEOUT;
import static
org.apache.nifi.processors.salesforce.util.CommonSalesforceProperties.SALESFORCE_INSTANCE_URL;
import static
org.apache.nifi.processors.salesforce.util.CommonSalesforceProperties.TOKEN_PROVIDER;
@@ -73,8 +78,7 @@ public class PutSalesforceObject extends AbstractProcessor {
private static final String ATTR_ERROR_MESSAGE = "error.message";
protected static final PropertyDescriptor RECORD_READER_FACTORY = new
PropertyDescriptor.Builder()
- .name("record-reader")
- .displayName("Record Reader")
+ .name("Record Reader")
.description(
"Specifies the Controller Service to use for parsing
incoming data and determining the data's schema")
.identifiesControllerService(RecordReaderFactory.class)
@@ -155,6 +159,15 @@ public class PutSalesforceObject extends AbstractProcessor
{
}
}
+ @Override
+ public void migrateProperties(PropertyConfiguration config) {
+ config.renameProperty("record-reader",
RECORD_READER_FACTORY.getName());
+ config.renameProperty(OLD_SALESFORCE_INSTANCE_URL_PROPERTY_NAME,
SALESFORCE_INSTANCE_URL.getName());
+ config.renameProperty(OLD_API_VERSION_PROPERTY_NAME,
API_VERSION.getName());
+ config.renameProperty(OLD_READ_TIMEOUT_PROPERTY_NAME,
READ_TIMEOUT.getName());
+ config.renameProperty(OLD_TOKEN_PROVIDER_PROPERTY_NAME,
TOKEN_PROVIDER.getName());
+ }
+
private void processRecords(FlowFile flowFile, String objectType,
ProcessContext context, ProcessSession session) throws IOException,
MalformedRecordException, SchemaNotFoundException {
RecordReaderFactory readerFactory =
context.getProperty(RECORD_READER_FACTORY).asControllerService(RecordReaderFactory.class);
int count = 0;
diff --git
a/nifi-extension-bundles/nifi-salesforce-bundle/nifi-salesforce-processors/src/main/java/org/apache/nifi/processors/salesforce/QuerySalesforceObject.java
b/nifi-extension-bundles/nifi-salesforce-bundle/nifi-salesforce-processors/src/main/java/org/apache/nifi/processors/salesforce/QuerySalesforceObject.java
index b23c58df82..efc8468d83 100644
---
a/nifi-extension-bundles/nifi-salesforce-bundle/nifi-salesforce-processors/src/main/java/org/apache/nifi/processors/salesforce/QuerySalesforceObject.java
+++
b/nifi-extension-bundles/nifi-salesforce-bundle/nifi-salesforce-processors/src/main/java/org/apache/nifi/processors/salesforce/QuerySalesforceObject.java
@@ -48,6 +48,7 @@ import org.apache.nifi.json.JsonParserFactory;
import org.apache.nifi.json.JsonTreeRowRecordReader;
import org.apache.nifi.json.SchemaApplicationStrategy;
import org.apache.nifi.json.StartingFieldStrategy;
+import org.apache.nifi.migration.PropertyConfiguration;
import org.apache.nifi.oauth2.OAuth2AccessTokenProvider;
import org.apache.nifi.processor.AbstractProcessor;
import org.apache.nifi.processor.ProcessContext;
@@ -97,6 +98,10 @@ import java.util.function.BiPredicate;
import java.util.stream.Collectors;
import static
org.apache.nifi.processors.salesforce.util.CommonSalesforceProperties.API_VERSION;
+import static
org.apache.nifi.processors.salesforce.util.CommonSalesforceProperties.OLD_API_VERSION_PROPERTY_NAME;
+import static
org.apache.nifi.processors.salesforce.util.CommonSalesforceProperties.OLD_READ_TIMEOUT_PROPERTY_NAME;
+import static
org.apache.nifi.processors.salesforce.util.CommonSalesforceProperties.OLD_SALESFORCE_INSTANCE_URL_PROPERTY_NAME;
+import static
org.apache.nifi.processors.salesforce.util.CommonSalesforceProperties.OLD_TOKEN_PROVIDER_PROPERTY_NAME;
import static
org.apache.nifi.processors.salesforce.util.CommonSalesforceProperties.READ_TIMEOUT;
import static
org.apache.nifi.processors.salesforce.util.CommonSalesforceProperties.SALESFORCE_INSTANCE_URL;
import static
org.apache.nifi.processors.salesforce.util.CommonSalesforceProperties.TOKEN_PROVIDER;
@@ -131,8 +136,7 @@ public class QuerySalesforceObject extends
AbstractProcessor {
static final AllowableValue CUSTOM_QUERY = new
AllowableValue("custom-query", "Custom Query", "Provide custom SOQL query.");
static final PropertyDescriptor QUERY_TYPE = new
PropertyDescriptor.Builder()
- .name("query-type")
- .displayName("Query Type")
+ .name("Query Type")
.description("Choose to provide the query by parameters or a full
custom query.")
.required(true)
.defaultValue(PROPERTY_BASED_QUERY.getValue())
@@ -140,8 +144,7 @@ public class QuerySalesforceObject extends
AbstractProcessor {
.build();
static final PropertyDescriptor CUSTOM_SOQL_QUERY = new
PropertyDescriptor.Builder()
- .name("custom-soql-query")
- .displayName("Custom SOQL Query")
+ .name("Custom SOQL Query")
.description("Specify the SOQL query to run.")
.required(true)
.addValidator(StandardValidators.NON_BLANK_VALIDATOR)
@@ -150,8 +153,7 @@ public class QuerySalesforceObject extends
AbstractProcessor {
.build();
static final PropertyDescriptor SOBJECT_NAME = new
PropertyDescriptor.Builder()
- .name("sobject-name")
- .displayName("sObject Name")
+ .name("sObject Name")
.description("The Salesforce sObject to be queried")
.required(true)
.expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
@@ -160,8 +162,7 @@ public class QuerySalesforceObject extends
AbstractProcessor {
.build();
static final PropertyDescriptor FIELD_NAMES = new
PropertyDescriptor.Builder()
- .name("field-names")
- .displayName("Field Names")
+ .name("Field Names")
.description("Comma-separated list of field names requested from
the sObject to be queried. When this field is left empty, all fields are
queried.")
.required(false)
.expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
@@ -170,8 +171,7 @@ public class QuerySalesforceObject extends
AbstractProcessor {
.build();
static final PropertyDescriptor RECORD_WRITER = new
PropertyDescriptor.Builder()
- .name("record-writer")
- .displayName("Record Writer")
+ .name("Record Writer")
.description("Service used for writing records returned from the
Salesforce REST API")
.identifiesControllerService(RecordSetWriterFactory.class)
.required(true)
@@ -179,8 +179,7 @@ public class QuerySalesforceObject extends
AbstractProcessor {
.build();
static final PropertyDescriptor CREATE_ZERO_RECORD_FILES = new
PropertyDescriptor.Builder()
- .name("create-zero-record-files")
- .displayName("Create Zero Record FlowFiles")
+ .name("Create Zero Record FlowFiles")
.description("Specifies whether or not to create a FlowFile when
the Salesforce REST API does not return any records")
.expressionLanguageSupported(ExpressionLanguageScope.NONE)
.allowableValues("true", "false")
@@ -190,8 +189,7 @@ public class QuerySalesforceObject extends
AbstractProcessor {
.build();
public static final PropertyDescriptor AGE_FIELD = new
PropertyDescriptor.Builder()
- .name("age-field")
- .displayName("Age Field")
+ .name("Age Field")
.description("The name of a TIMESTAMP field that will be used to
filter records using a bounded time window."
+ "The processor will return only those records with a
timestamp value newer than the timestamp recorded after the last processor run."
)
@@ -202,8 +200,7 @@ public class QuerySalesforceObject extends
AbstractProcessor {
.build();
public static final PropertyDescriptor AGE_DELAY = new
PropertyDescriptor.Builder()
- .name("age-delay")
- .displayName("Age Delay")
+ .name("Age Delay")
.description("The ending timestamp of the time window will be
adjusted earlier by the amount configured in this property." +
" For example, with a property value of 10 seconds, an
ending timestamp of 12:30:45 would be changed to 12:30:35.")
.required(false)
@@ -214,8 +211,7 @@ public class QuerySalesforceObject extends
AbstractProcessor {
.build();
public static final PropertyDescriptor INITIAL_AGE_FILTER = new
PropertyDescriptor.Builder()
- .name("initial-age-filter")
- .displayName("Initial Age Start Time")
+ .name("Initial Age Start Time")
.description("This property specifies the start time that the
processor applies when running the first query.")
.required(false)
.expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
@@ -225,8 +221,7 @@ public class QuerySalesforceObject extends
AbstractProcessor {
.build();
static final PropertyDescriptor CUSTOM_WHERE_CONDITION = new
PropertyDescriptor.Builder()
- .name("custom-where-condition")
- .displayName("Custom WHERE Condition")
+ .name("Custom WHERE Condition")
.description("A custom expression to be added in the WHERE clause
of the query")
.required(false)
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
@@ -235,8 +230,7 @@ public class QuerySalesforceObject extends
AbstractProcessor {
.build();
static final PropertyDescriptor INCLUDE_DELETED_RECORDS = new
PropertyDescriptor.Builder()
- .name("include-deleted-records")
- .displayName("Include Deleted Records")
+ .name("Include Deleted Records")
.description("If true, the processor will include deleted records
(IsDeleted = true) in the query results. When enabled, the processor will use
the 'queryAll' API.")
.required(true)
.defaultValue("false")
@@ -364,6 +358,25 @@ public class QuerySalesforceObject extends
AbstractProcessor {
}
}
+ @Override
+ public void migrateProperties(PropertyConfiguration config) {
+ config.renameProperty("query-type", QUERY_TYPE.getName());
+ config.renameProperty("custom-soql-query",
CUSTOM_SOQL_QUERY.getName());
+ config.renameProperty("sobject-name", SOBJECT_NAME.getName());
+ config.renameProperty("field-names", FIELD_NAMES.getName());
+ config.renameProperty("record-writer", RECORD_WRITER.getName());
+ config.renameProperty("create-zero-record-files",
CREATE_ZERO_RECORD_FILES.getName());
+ config.renameProperty("age-field", AGE_FIELD.getName());
+ config.renameProperty("age-delay", AGE_DELAY.getName());
+ config.renameProperty("initial-age-filter",
INITIAL_AGE_FILTER.getName());
+ config.renameProperty("custom-where-condition",
CUSTOM_WHERE_CONDITION.getName());
+ config.renameProperty("include-deleted-records",
INCLUDE_DELETED_RECORDS.getName());
+ config.renameProperty(OLD_SALESFORCE_INSTANCE_URL_PROPERTY_NAME,
SALESFORCE_INSTANCE_URL.getName());
+ config.renameProperty(OLD_API_VERSION_PROPERTY_NAME,
API_VERSION.getName());
+ config.renameProperty(OLD_READ_TIMEOUT_PROPERTY_NAME,
READ_TIMEOUT.getName());
+ config.renameProperty(OLD_TOKEN_PROVIDER_PROPERTY_NAME,
TOKEN_PROVIDER.getName());
+ }
+
@Override
public void onTrigger(ProcessContext context, ProcessSession session)
throws ProcessException {
boolean isCustomQuery =
CUSTOM_QUERY.getValue().equals(context.getProperty(QUERY_TYPE).getValue());
diff --git
a/nifi-extension-bundles/nifi-salesforce-bundle/nifi-salesforce-processors/src/main/java/org/apache/nifi/processors/salesforce/util/CommonSalesforceProperties.java
b/nifi-extension-bundles/nifi-salesforce-bundle/nifi-salesforce-processors/src/main/java/org/apache/nifi/processors/salesforce/util/CommonSalesforceProperties.java
index 44e385ab72..28112a2a3a 100644
---
a/nifi-extension-bundles/nifi-salesforce-bundle/nifi-salesforce-processors/src/main/java/org/apache/nifi/processors/salesforce/util/CommonSalesforceProperties.java
+++
b/nifi-extension-bundles/nifi-salesforce-bundle/nifi-salesforce-processors/src/main/java/org/apache/nifi/processors/salesforce/util/CommonSalesforceProperties.java
@@ -22,10 +22,13 @@ import org.apache.nifi.oauth2.OAuth2AccessTokenProvider;
import org.apache.nifi.processor.util.StandardValidators;
public final class CommonSalesforceProperties {
+ public static final String OLD_SALESFORCE_INSTANCE_URL_PROPERTY_NAME =
"salesforce-url";
+ public static final String OLD_API_VERSION_PROPERTY_NAME =
"salesforce-api-version";
+ public static final String OLD_READ_TIMEOUT_PROPERTY_NAME = "read-timeout";
+ public static final String OLD_TOKEN_PROVIDER_PROPERTY_NAME =
"oauth2-access-token-provider";
public static final PropertyDescriptor SALESFORCE_INSTANCE_URL = new
PropertyDescriptor.Builder()
- .name("salesforce-url")
- .displayName("Salesforce Instance URL")
+ .name("Salesforce Instance URL")
.description("The URL of the Salesforce instance including the
domain without additional path information, such as
https://MyDomainName.my.salesforce.com")
.required(true)
.addValidator(StandardValidators.URL_VALIDATOR)
@@ -33,8 +36,7 @@ public final class CommonSalesforceProperties {
.build();
public static final PropertyDescriptor API_VERSION = new
PropertyDescriptor.Builder()
- .name("salesforce-api-version")
- .displayName("API Version")
+ .name("API Version")
.description(
"The version number of the Salesforce REST API appended to
the URL after the services/data path. See Salesforce documentation for
supported versions")
.required(true)
@@ -44,8 +46,7 @@ public final class CommonSalesforceProperties {
.build();
public static final PropertyDescriptor READ_TIMEOUT = new
PropertyDescriptor.Builder()
- .name("read-timeout")
- .displayName("Read Timeout")
+ .name("Read Timeout")
.description("Maximum time allowed for reading a response from the
Salesforce REST API")
.required(true)
.defaultValue("15 s")
@@ -54,8 +55,7 @@ public final class CommonSalesforceProperties {
.build();
public static final PropertyDescriptor TOKEN_PROVIDER = new
PropertyDescriptor.Builder()
- .name("oauth2-access-token-provider")
- .displayName("OAuth2 Access Token Provider")
+ .name("OAuth2 Access Token Provider")
.description("Service providing OAuth2 Access Tokens for
authenticating using the HTTP Authorization Header")
.identifiesControllerService(OAuth2AccessTokenProvider.class)
.required(true)
diff --git
a/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/ScriptedRecordProcessor.java
b/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/ScriptedRecordProcessor.java
index c4b37be3d5..6272ac9087 100644
---
a/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/ScriptedRecordProcessor.java
+++
b/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/ScriptedRecordProcessor.java
@@ -22,6 +22,7 @@ import org.apache.nifi.components.PropertyDescriptor;
import org.apache.nifi.components.ValidationContext;
import org.apache.nifi.components.ValidationResult;
import org.apache.nifi.flowfile.FlowFile;
+import org.apache.nifi.migration.PropertyConfiguration;
import org.apache.nifi.processor.AbstractProcessor;
import org.apache.nifi.processor.ProcessContext;
import org.apache.nifi.processor.exception.ProcessException;
@@ -70,8 +71,7 @@ abstract class ScriptedRecordProcessor extends
AbstractProcessor implements Sear
.build();
static final PropertyDescriptor LANGUAGE = new PropertyDescriptor.Builder()
- .name("Script Engine")
- .displayName("Script Language")
+ .name(ScriptingComponentHelper.SCRIPT_ENGINE_PROPERTY)
.description("The Language to use for the script")
.allowableValues(SCRIPT_OPTIONS)
.defaultValue("Groovy")
@@ -139,6 +139,11 @@ abstract class ScriptedRecordProcessor extends
AbstractProcessor implements Sear
return ScriptingComponentUtils.search(context, getLogger());
}
+ @Override
+ public void migrateProperties(PropertyConfiguration config) {
+ config.renameProperty("Script Engine", LANGUAGE.getName());
+ }
+
protected static Bindings setupBindings(final ScriptEngine scriptEngine) {
Bindings bindings =
scriptEngine.getBindings(ScriptContext.ENGINE_SCOPE);
if (bindings == null) {
diff --git
a/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/script/ScriptingComponentHelper.java
b/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/script/ScriptingComponentHelper.java
index 0ec62e5fc6..f6d23c6517 100644
---
a/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/script/ScriptingComponentHelper.java
+++
b/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/script/ScriptingComponentHelper.java
@@ -54,6 +54,7 @@ import static
org.apache.commons.lang3.StringUtils.defaultIfBlank;
* This class contains variables and methods common to scripting processors,
reporting tasks, etc.
*/
public class ScriptingComponentHelper {
+ public static final String SCRIPT_ENGINE_PROPERTY = "Script Language";
private static final String UNKNOWN_VERSION = "UNKNOWN";
public PropertyDescriptor SCRIPT_ENGINE;
@@ -175,7 +176,7 @@ public class ScriptingComponentHelper {
AllowableValue[] engines = engineList.toArray(new
AllowableValue[0]);
final PropertyDescriptor.Builder enginePropertyBuilder = new
PropertyDescriptor.Builder()
- .name("Script Engine")
+ .name(SCRIPT_ENGINE_PROPERTY)
.required(true)
.description("Language Engine for executing scripts")
.required(true)
diff --git
a/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/TestScriptingComponentHelper.java
b/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/TestScriptingComponentHelper.java
index 95e22f2cdd..8cf55d79ff 100644
---
a/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/TestScriptingComponentHelper.java
+++
b/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/TestScriptingComponentHelper.java
@@ -29,7 +29,6 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class TestScriptingComponentHelper {
- private static final String SCRIPT_ENGINE_PROPERTY = "Script Engine";
@Test
public void testScriptEngineAllowableValuesWithDescriptions() {
@@ -38,7 +37,7 @@ public class TestScriptingComponentHelper {
final List<PropertyDescriptor> descriptors = helper.getDescriptors();
final Optional<PropertyDescriptor> optionalScriptEngine =
descriptors.stream().filter(
- descriptor ->
descriptor.getName().equals(SCRIPT_ENGINE_PROPERTY)
+ descriptor ->
descriptor.getName().equals(ScriptingComponentHelper.SCRIPT_ENGINE_PROPERTY)
).findFirst();
assertTrue(optionalScriptEngine.isPresent());
diff --git
a/nifi-extension-bundles/nifi-shopify-bundle/nifi-shopify-processors/src/main/java/org/apache/nifi/processors/shopify/GetShopify.java
b/nifi-extension-bundles/nifi-shopify-bundle/nifi-shopify-processors/src/main/java/org/apache/nifi/processors/shopify/GetShopify.java
index 1423712e06..75be6b2f01 100644
---
a/nifi-extension-bundles/nifi-shopify-bundle/nifi-shopify-processors/src/main/java/org/apache/nifi/processors/shopify/GetShopify.java
+++
b/nifi-extension-bundles/nifi-shopify-bundle/nifi-shopify-processors/src/main/java/org/apache/nifi/processors/shopify/GetShopify.java
@@ -38,6 +38,7 @@ import org.apache.nifi.components.state.StateMap;
import org.apache.nifi.expression.ExpressionLanguageScope;
import org.apache.nifi.flowfile.FlowFile;
import org.apache.nifi.flowfile.attributes.CoreAttributes;
+import org.apache.nifi.migration.PropertyConfiguration;
import org.apache.nifi.processor.AbstractProcessor;
import org.apache.nifi.processor.ProcessContext;
import org.apache.nifi.processor.ProcessSession;
@@ -84,8 +85,7 @@ import java.util.stream.Collectors;
public class GetShopify extends AbstractProcessor {
static final PropertyDescriptor STORE_DOMAIN = new
PropertyDescriptor.Builder()
- .name("store-domain")
- .displayName("Store Domain")
+ .name("Store Domain")
.description("The domain of the Shopify store, e.g.
nifistore.myshopify.com")
.required(true)
.addValidator(StandardValidators.NON_BLANK_VALIDATOR)
@@ -93,8 +93,7 @@ public class GetShopify extends AbstractProcessor {
.build();
static final PropertyDescriptor ACCESS_TOKEN = new
PropertyDescriptor.Builder()
- .name("access-token")
- .displayName("Access Token")
+ .name("Access Token")
.description("Access Token to authenticate requests")
.required(true)
.sensitive(true)
@@ -103,8 +102,7 @@ public class GetShopify extends AbstractProcessor {
.build();
static final PropertyDescriptor API_VERSION = new
PropertyDescriptor.Builder()
- .name("api-version")
- .displayName("API Version")
+ .name("API Version")
.description("The Shopify REST API version")
.required(true)
.addValidator(StandardValidators.NON_BLANK_VALIDATOR)
@@ -113,16 +111,14 @@ public class GetShopify extends AbstractProcessor {
.build();
static final PropertyDescriptor OBJECT_CATEGORY = new
PropertyDescriptor.Builder()
- .name("object-category")
- .displayName("Object Category")
+ .name("Object Category")
.description("Shopify object category")
.required(true)
.allowableValues(ResourceType.class)
.build();
static final PropertyDescriptor RESULT_LIMIT = new
PropertyDescriptor.Builder()
- .name("result-limit")
- .displayName("Result Limit")
+ .name("Result Limit")
.description("The maximum number of results to request for each
invocation of the Processor")
.expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
.required(false)
@@ -130,8 +126,7 @@ public class GetShopify extends AbstractProcessor {
.build();
static final PropertyDescriptor IS_INCREMENTAL = new
PropertyDescriptor.Builder()
- .name("is-incremental")
- .displayName("Incremental Loading")
+ .name("Incremental Loading")
.description("The processor can incrementally load the queried
objects so that each object is queried exactly once." +
" For each query, the processor queries objects which were
created or modified after the previous run time" +
" but before the current time.")
@@ -141,8 +136,7 @@ public class GetShopify extends AbstractProcessor {
.build();
static final PropertyDescriptor INCREMENTAL_DELAY = new
PropertyDescriptor.Builder()
- .name("incremental-delay")
- .displayName("Incremental Delay")
+ .name("Incremental Delay")
.description("The ending timestamp of the time window will be
adjusted earlier by the amount configured in this property." +
" For example, with a property value of 10 seconds, an
ending timestamp of 12:30:45 would be changed to 12:30:35." +
" Set this property to avoid missing objects when the
clock of your local machines and Shopify servers' clock are not in sync.")
@@ -154,8 +148,7 @@ public class GetShopify extends AbstractProcessor {
.build();
static final PropertyDescriptor INCREMENTAL_INITIAL_START_TIME = new
PropertyDescriptor.Builder()
- .name("incremental-initial-start-time")
- .displayName("Incremental Initial Start Time")
+ .name("Incremental Initial Start Time")
.description("This property specifies the start time when running
the first request." +
" Represents an ISO 8601-encoded date and time string. For
example, 3:50 pm on September 7, 2019" +
" in the time zone of UTC (Coordinated Universal Time) is
represented as \"2019-09-07T15:50:00Z\".")
@@ -166,8 +159,7 @@ public class GetShopify extends AbstractProcessor {
.build();
public static final PropertyDescriptor WEB_CLIENT_PROVIDER = new
PropertyDescriptor.Builder()
- .name("web-client-service-provider")
- .displayName("Web Client Service Provider")
+ .name("Web Client Service Provider")
.description("Controller service for HTTP client operations")
.required(true)
.identifiesControllerService(WebClientServiceProvider.class)
@@ -358,6 +350,19 @@ public class GetShopify extends AbstractProcessor {
} while (cursor != null);
}
+ @Override
+ public void migrateProperties(PropertyConfiguration config) {
+ config.renameProperty("store-domain", STORE_DOMAIN.getName());
+ config.renameProperty("access-token", ACCESS_TOKEN.getName());
+ config.renameProperty("api-version", API_VERSION.getName());
+ config.renameProperty("object-category", OBJECT_CATEGORY.getName());
+ config.renameProperty("result-limit", RESULT_LIMIT.getName());
+ config.renameProperty("is-incremental", IS_INCREMENTAL.getName());
+ config.renameProperty("incremental-delay",
INCREMENTAL_DELAY.getName());
+ config.renameProperty("incremental-initial-start-time",
INCREMENTAL_INITIAL_START_TIME.getName());
+ config.renameProperty("web-client-service-provider",
WEB_CLIENT_PROVIDER.getName());
+ }
+
private String getPageCursor(HttpResponseEntity response) {
Optional<String> link = response.headers().getFirstHeader("Link");
String s = null;
diff --git
a/nifi-extension-bundles/nifi-site-to-site-reporting-bundle/nifi-site-to-site-reporting-task/src/main/java/org/apache/nifi/reporting/AbstractSiteToSiteReportingTask.java
b/nifi-extension-bundles/nifi-site-to-site-reporting-bundle/nifi-site-to-site-reporting-task/src/main/java/org/apache/nifi/reporting/AbstractSiteToSiteReportingTask.java
index d137962cea..3c44a2658f 100644
---
a/nifi-extension-bundles/nifi-site-to-site-reporting-bundle/nifi-site-to-site-reporting-task/src/main/java/org/apache/nifi/reporting/AbstractSiteToSiteReportingTask.java
+++
b/nifi-extension-bundles/nifi-site-to-site-reporting-bundle/nifi-site-to-site-reporting-task/src/main/java/org/apache/nifi/reporting/AbstractSiteToSiteReportingTask.java
@@ -87,16 +87,14 @@ public abstract class AbstractSiteToSiteReportingTask
extends AbstractReportingT
protected static final DateTimeFormatter DATE_TIME_FORMATTER =
DateTimeFormatter.ofPattern(TIMESTAMP_FORMAT).withZone(ZoneOffset.UTC);
static final PropertyDescriptor RECORD_WRITER = new
PropertyDescriptor.Builder()
- .name("record-writer")
- .displayName("Record Writer")
+ .name("Record Writer")
.description("Specifies the Controller Service to use for writing
out the records.")
.identifiesControllerService(RecordSetWriterFactory.class)
.required(false)
.build();
static final PropertyDescriptor ALLOW_NULL_VALUES = new
PropertyDescriptor.Builder()
- .name("include-null-values")
- .displayName("Include Null Values")
+ .name("Include Null Values")
.description("Indicate if null values should be included in
records. Default will be false")
.required(true)
.allowableValues("true", "false")
@@ -127,6 +125,9 @@ public abstract class AbstractSiteToSiteReportingTask
extends AbstractReportingT
public void migrateProperties(final PropertyConfiguration config) {
ProxyServiceMigration.migrateProxyProperties(config,
SiteToSiteUtils.PROXY_CONFIGURATION_SERVICE,
SiteToSiteUtils.OBSOLETE_PROXY_HOST,
SiteToSiteUtils.OBSOLETE_PROXY_PORT, SiteToSiteUtils.OBSOLETE_PROXY_USERNAME,
SiteToSiteUtils.OBSOLETE_PROXY_PASSWORD);
+ config.renameProperty("record-writer", RECORD_WRITER.getName());
+ config.renameProperty("include-null-values",
ALLOW_NULL_VALUES.getName());
+ config.renameProperty(SiteToSiteUtils.OBSOLETE_TRANSPORT_PROTOCOL,
SiteToSiteUtils.TRANSPORT_PROTOCOL.getName());
}
public void setup(final PropertyContext reportContext) {
diff --git
a/nifi-extension-bundles/nifi-site-to-site-reporting-bundle/nifi-site-to-site-reporting-task/src/main/java/org/apache/nifi/reporting/SiteToSiteMetricsReportingTask.java
b/nifi-extension-bundles/nifi-site-to-site-reporting-bundle/nifi-site-to-site-reporting-task/src/main/java/org/apache/nifi/reporting/SiteToSiteMetricsReportingTask.java
index 32a188d8f5..5fd84da481 100644
---
a/nifi-extension-bundles/nifi-site-to-site-reporting-bundle/nifi-site-to-site-reporting-task/src/main/java/org/apache/nifi/reporting/SiteToSiteMetricsReportingTask.java
+++
b/nifi-extension-bundles/nifi-site-to-site-reporting-bundle/nifi-site-to-site-reporting-task/src/main/java/org/apache/nifi/reporting/SiteToSiteMetricsReportingTask.java
@@ -50,6 +50,7 @@ import org.apache.nifi.expression.ExpressionLanguageScope;
import org.apache.nifi.flowfile.attributes.CoreAttributes;
import org.apache.nifi.metrics.jvm.JmxJvmMetrics;
import org.apache.nifi.metrics.jvm.JvmMetrics;
+import org.apache.nifi.migration.PropertyConfiguration;
import org.apache.nifi.processor.exception.ProcessException;
import org.apache.nifi.processor.util.StandardValidators;
import org.apache.nifi.remote.Transaction;
@@ -70,8 +71,7 @@ public class SiteToSiteMetricsReportingTask extends
AbstractSiteToSiteReportingT
+ " have the description of the default schema.");
static final PropertyDescriptor APPLICATION_ID = new
PropertyDescriptor.Builder()
- .name("s2s-metrics-application-id")
- .displayName("Application ID")
+ .name("Application ID")
.description("The Application ID to be included in the metrics")
.required(true)
.expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
@@ -80,8 +80,7 @@ public class SiteToSiteMetricsReportingTask extends
AbstractSiteToSiteReportingT
.build();
static final PropertyDescriptor HOSTNAME = new PropertyDescriptor.Builder()
- .name("s2s-metrics-hostname")
- .displayName("Hostname")
+ .name("Hostname")
.description("The Hostname of this NiFi instance to be included in
the metrics")
.required(true)
.expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
@@ -90,8 +89,7 @@ public class SiteToSiteMetricsReportingTask extends
AbstractSiteToSiteReportingT
.build();
static final PropertyDescriptor FORMAT = new PropertyDescriptor.Builder()
- .name("s2s-metrics-format")
- .displayName("Output Format")
+ .name("Output Format")
.description("The output format that will be used for the metrics.
If " + RECORD_FORMAT.getDisplayName() + " is selected, "
+ "a Record Writer must be provided. If " +
AMBARI_FORMAT.getDisplayName() + " is selected, the Record Writer property "
+ "should be empty.")
@@ -231,4 +229,11 @@ public class SiteToSiteMetricsReportingTask extends
AbstractSiteToSiteReportingT
}
}
+ @Override
+ public void migrateProperties(PropertyConfiguration config) {
+ super.migrateProperties(config);
+ config.renameProperty("s2s-metrics-application-id",
APPLICATION_ID.getName());
+ config.renameProperty("s2s-metrics-hostname", HOSTNAME.getName());
+ config.renameProperty("s2s-metrics-format", FORMAT.getName());
+ }
}
diff --git
a/nifi-extension-bundles/nifi-site-to-site-reporting-bundle/nifi-site-to-site-reporting-task/src/main/java/org/apache/nifi/reporting/SiteToSiteProvenanceReportingTask.java
b/nifi-extension-bundles/nifi-site-to-site-reporting-bundle/nifi-site-to-site-reporting-task/src/main/java/org/apache/nifi/reporting/SiteToSiteProvenanceReportingTask.java
index b2051878fe..05545f4fbd 100644
---
a/nifi-extension-bundles/nifi-site-to-site-reporting-bundle/nifi-site-to-site-reporting-task/src/main/java/org/apache/nifi/reporting/SiteToSiteProvenanceReportingTask.java
+++
b/nifi-extension-bundles/nifi-site-to-site-reporting-bundle/nifi-site-to-site-reporting-task/src/main/java/org/apache/nifi/reporting/SiteToSiteProvenanceReportingTask.java
@@ -58,6 +58,7 @@ import org.apache.nifi.components.state.Scope;
import org.apache.nifi.controller.ConfigurationContext;
import org.apache.nifi.controller.status.ProcessGroupStatus;
import org.apache.nifi.expression.ExpressionLanguageScope;
+import org.apache.nifi.migration.PropertyConfiguration;
import org.apache.nifi.processor.exception.ProcessException;
import org.apache.nifi.processor.util.StandardValidators;
import org.apache.nifi.provenance.ProvenanceEventRecord;
@@ -85,8 +86,7 @@ public class SiteToSiteProvenanceReportingTask extends
AbstractSiteToSiteReporti
"Start reading provenance Events from the end of the stream,
ignoring old events");
static final PropertyDescriptor FILTER_EVENT_TYPE = new
PropertyDescriptor.Builder()
- .name("s2s-prov-task-event-filter")
- .displayName("Event Type to Include")
+ .name("Event Type to Include")
.description("Comma-separated list of event types that will be
used to filter the provenance events sent by the reporting task. "
+ "Available event types are " +
Arrays.deepToString(ProvenanceEventType.values()) + ". If no filter is set, all
the events are sent. If "
+ "multiple filters are set, the filters are cumulative.")
@@ -96,8 +96,7 @@ public class SiteToSiteProvenanceReportingTask extends
AbstractSiteToSiteReporti
.build();
static final PropertyDescriptor FILTER_EVENT_TYPE_EXCLUDE = new
PropertyDescriptor.Builder()
- .name("s2s-prov-task-event-filter-exclude")
- .displayName("Event Type to Exclude")
+ .name("Event Type to Exclude")
.description("Comma-separated list of event types that will be
used to exclude the provenance events sent by the reporting task. "
+ "Available event types are " +
Arrays.deepToString(ProvenanceEventType.values()) + ". If no filter is set, all
the events are sent. If "
+ "multiple filters are set, the filters are cumulative.
If an event type is included in Event Type to Include and excluded here, then
the "
@@ -108,8 +107,7 @@ public class SiteToSiteProvenanceReportingTask extends
AbstractSiteToSiteReporti
.build();
static final PropertyDescriptor FILTER_COMPONENT_TYPE = new
PropertyDescriptor.Builder()
- .name("s2s-prov-task-type-filter")
- .displayName("Component Type to Include")
+ .name("Component Type to Include")
.description("Regular expression to filter the provenance events
based on the component type. Only the events matching the regular "
+ "expression will be sent. If no filter is set, all the
events are sent. If multiple filters are set, the filters are cumulative.")
.required(false)
@@ -118,8 +116,7 @@ public class SiteToSiteProvenanceReportingTask extends
AbstractSiteToSiteReporti
.build();
static final PropertyDescriptor FILTER_COMPONENT_TYPE_EXCLUDE = new
PropertyDescriptor.Builder()
- .name("s2s-prov-task-type-filter-exclude")
- .displayName("Component Type to Exclude")
+ .name("Component Type to Exclude")
.description("Regular expression to exclude the provenance events
based on the component type. The events matching the regular "
+ "expression will not be sent. If no filter is set, all
the events are sent. If multiple filters are set, the filters are cumulative. "
+ "If a component type is included in Component Type to
Include and excluded here, then the exclusion takes precedence and the event
will not be sent.")
@@ -129,8 +126,7 @@ public class SiteToSiteProvenanceReportingTask extends
AbstractSiteToSiteReporti
.build();
static final PropertyDescriptor FILTER_COMPONENT_ID = new
PropertyDescriptor.Builder()
- .name("s2s-prov-task-id-filter")
- .displayName("Component ID to Include")
+ .name("Component ID to Include")
.description("Comma-separated list of component UUID that will be
used to filter the provenance events sent by the reporting task. If no "
+ "filter is set, all the events are sent. If multiple
filters are set, the filters are cumulative.")
.required(false)
@@ -139,8 +135,7 @@ public class SiteToSiteProvenanceReportingTask extends
AbstractSiteToSiteReporti
.build();
static final PropertyDescriptor FILTER_COMPONENT_ID_EXCLUDE = new
PropertyDescriptor.Builder()
- .name("s2s-prov-task-id-filter-exclude")
- .displayName("Component ID to Exclude")
+ .name("Component ID to Exclude")
.description("Comma-separated list of component UUID that will be
used to exclude the provenance events sent by the reporting task. If no "
+ "filter is set, all the events are sent. If multiple
filters are set, the filters are cumulative. If a component UUID is included in
"
+ "Component ID to Include and excluded here, then the
exclusion takes precedence and the event will not be sent.")
@@ -150,8 +145,7 @@ public class SiteToSiteProvenanceReportingTask extends
AbstractSiteToSiteReporti
.build();
static final PropertyDescriptor FILTER_COMPONENT_NAME = new
PropertyDescriptor.Builder()
- .name("s2s-prov-task-name-filter")
- .displayName("Component Name to Include")
+ .name("Component Name to Include")
.description("Regular expression to filter the provenance events
based on the component name. Only the events matching the regular "
+ "expression will be sent. If no filter is set, all the
events are sent. If multiple filters are set, the filters are cumulative.")
.required(false)
@@ -160,8 +154,7 @@ public class SiteToSiteProvenanceReportingTask extends
AbstractSiteToSiteReporti
.build();
static final PropertyDescriptor FILTER_COMPONENT_NAME_EXCLUDE = new
PropertyDescriptor.Builder()
- .name("s2s-prov-task-name-filter-exclude")
- .displayName("Component Name to Exclude")
+ .name("Component Name to Exclude")
.description("Regular expression to exclude the provenance events
based on the component name. The events matching the regular "
+ "expression will not be sent. If no filter is set, all
the events are sent. If multiple filters are set, the filters are cumulative. "
+ "If a component name is included in Component Name to
Include and excluded here, then the exclusion takes precedence and the event
will not be sent.")
@@ -171,8 +164,7 @@ public class SiteToSiteProvenanceReportingTask extends
AbstractSiteToSiteReporti
.build();
static final PropertyDescriptor START_POSITION = new
PropertyDescriptor.Builder()
- .name("start-position")
- .displayName("Start Position")
+ .name("Start Position")
.description("If the Reporting Task has never been run, or if its
state has been reset by a user, specifies where in the stream of Provenance
Events the Reporting Task should start")
.allowableValues(BEGINNING_OF_STREAM, END_OF_STREAM)
.defaultValue(BEGINNING_OF_STREAM.getValue())
@@ -340,10 +332,23 @@ public class SiteToSiteProvenanceReportingTask extends
AbstractSiteToSiteReporti
}
+ @Override
+ public void migrateProperties(PropertyConfiguration config) {
+ super.migrateProperties(config);
+ config.renameProperty("s2s-prov-task-event-filter",
FILTER_EVENT_TYPE.getName());
+ config.renameProperty("s2s-prov-task-event-filter-exclude",
FILTER_EVENT_TYPE_EXCLUDE.getName());
+ config.renameProperty("s2s-prov-task-type-filter",
FILTER_COMPONENT_TYPE.getName());
+ config.renameProperty("s2s-prov-task-type-filter-exclude",
FILTER_COMPONENT_TYPE_EXCLUDE.getName());
+ config.renameProperty("s2s-prov-task-id-filter",
FILTER_COMPONENT_ID.getName());
+ config.renameProperty("s2s-prov-task-id-filter-exclude",
FILTER_COMPONENT_ID_EXCLUDE.getName());
+ config.renameProperty("s2s-prov-task-name-filter",
FILTER_COMPONENT_NAME.getName());
+ config.renameProperty("s2s-prov-task-name-filter-exclude",
FILTER_COMPONENT_NAME_EXCLUDE.getName());
+ config.renameProperty("start-position", START_POSITION.getName());
+ }
private JsonObject serialize(final JsonBuilderFactory factory, final
JsonObjectBuilder builder, final ProvenanceEventRecord event,
- final String componentName, final String processGroupId, final
String processGroupName, final String hostname, final URL nifiUrl, final String
applicationName,
- final String platform, final String nodeIdentifier, Boolean
allowNullValues) {
+ final String componentName, final String
processGroupId, final String processGroupName, final String hostname, final URL
nifiUrl, final String applicationName,
+ final String platform, final String
nodeIdentifier, Boolean allowNullValues) {
addField(builder, "eventId", UUID.randomUUID().toString(),
allowNullValues);
addField(builder, "eventOrdinal", event.getEventId(), allowNullValues);
addField(builder, "eventType", event.getEventType().name(),
allowNullValues);
diff --git
a/nifi-extension-bundles/nifi-site-to-site-reporting-bundle/nifi-site-to-site-reporting-task/src/main/java/org/apache/nifi/reporting/s2s/SiteToSiteUtils.java
b/nifi-extension-bundles/nifi-site-to-site-reporting-bundle/nifi-site-to-site-reporting-task/src/main/java/org/apache/nifi/reporting/s2s/SiteToSiteUtils.java
index 1c8082184d..f11d0dab0c 100644
---
a/nifi-extension-bundles/nifi-site-to-site-reporting-bundle/nifi-site-to-site-reporting-task/src/main/java/org/apache/nifi/reporting/s2s/SiteToSiteUtils.java
+++
b/nifi-extension-bundles/nifi-site-to-site-reporting-bundle/nifi-site-to-site-reporting-task/src/main/java/org/apache/nifi/reporting/s2s/SiteToSiteUtils.java
@@ -46,6 +46,7 @@ public class SiteToSiteUtils {
public static final String OBSOLETE_PROXY_PORT = "s2s-http-proxy-port";
public static final String OBSOLETE_PROXY_USERNAME =
"s2s-http-proxy-username";
public static final String OBSOLETE_PROXY_PASSWORD =
"s2s-http-proxy-password";
+ public static final String OBSOLETE_TRANSPORT_PROTOCOL =
"s2s-transport-protocol";
public static final PropertyDescriptor DESTINATION_URL = new
PropertyDescriptor.Builder()
.name("Destination URL")
@@ -99,8 +100,7 @@ public class SiteToSiteUtils {
.addValidator(StandardValidators.POSITIVE_INTEGER_VALIDATOR)
.build();
public static final PropertyDescriptor TRANSPORT_PROTOCOL = new
PropertyDescriptor.Builder()
- .name("s2s-transport-protocol")
- .displayName("Transport Protocol")
+ .name("Transport Protocol")
.description("Specifies which transport protocol to use for
Site-to-Site communication.")
.required(true)
.allowableValues(SiteToSiteTransportProtocol.values())
diff --git
a/nifi-extension-bundles/nifi-site-to-site-reporting-bundle/nifi-site-to-site-reporting-task/src/main/java/org/apache/nifi/reporting/sink/SiteToSiteReportingRecordSink.java
b/nifi-extension-bundles/nifi-site-to-site-reporting-bundle/nifi-site-to-site-reporting-task/src/main/java/org/apache/nifi/reporting/sink/SiteToSiteReportingRecordSink.java
index cdd9ddad69..5cf5454c70 100644
---
a/nifi-extension-bundles/nifi-site-to-site-reporting-bundle/nifi-site-to-site-reporting-task/src/main/java/org/apache/nifi/reporting/sink/SiteToSiteReportingRecordSink.java
+++
b/nifi-extension-bundles/nifi-site-to-site-reporting-bundle/nifi-site-to-site-reporting-task/src/main/java/org/apache/nifi/reporting/sink/SiteToSiteReportingRecordSink.java
@@ -81,6 +81,7 @@ public class SiteToSiteReportingRecordSink extends
AbstractControllerService imp
public void migrateProperties(final PropertyConfiguration config) {
ProxyServiceMigration.migrateProxyProperties(config,
SiteToSiteUtils.PROXY_CONFIGURATION_SERVICE,
SiteToSiteUtils.OBSOLETE_PROXY_HOST,
SiteToSiteUtils.OBSOLETE_PROXY_PORT, SiteToSiteUtils.OBSOLETE_PROXY_USERNAME,
SiteToSiteUtils.OBSOLETE_PROXY_PASSWORD);
+ config.renameProperty(SiteToSiteUtils.OBSOLETE_TRANSPORT_PROTOCOL,
SiteToSiteUtils.TRANSPORT_PROTOCOL.getName());
}
@OnEnabled
diff --git
a/nifi-extension-bundles/nifi-slack-bundle/nifi-slack-processors/src/main/java/org/apache/nifi/services/slack/SlackRecordSink.java
b/nifi-extension-bundles/nifi-slack-bundle/nifi-slack-processors/src/main/java/org/apache/nifi/services/slack/SlackRecordSink.java
index d214de4528..9342d4c397 100644
---
a/nifi-extension-bundles/nifi-slack-bundle/nifi-slack-processors/src/main/java/org/apache/nifi/services/slack/SlackRecordSink.java
+++
b/nifi-extension-bundles/nifi-slack-bundle/nifi-slack-processors/src/main/java/org/apache/nifi/services/slack/SlackRecordSink.java
@@ -22,6 +22,7 @@ import org.apache.nifi.annotation.lifecycle.OnEnabled;
import org.apache.nifi.components.PropertyDescriptor;
import org.apache.nifi.controller.AbstractControllerService;
import org.apache.nifi.controller.ConfigurationContext;
+import org.apache.nifi.migration.PropertyConfiguration;
import org.apache.nifi.processor.exception.ProcessException;
import org.apache.nifi.processor.util.StandardValidators;
import org.apache.nifi.record.sink.RecordSinkService;
@@ -48,8 +49,7 @@ public class SlackRecordSink extends
AbstractControllerService implements Record
private static final String SLACK_API_URL = "https://slack.com/api";
public static final PropertyDescriptor API_URL = new
PropertyDescriptor.Builder()
- .name("api-url")
- .displayName("API URL")
+ .name("API URL")
.description("Slack Web API URL for posting text messages to
channels." +
" It only needs to be changed if Slack changes its API
URL.")
.required(true)
@@ -58,8 +58,7 @@ public class SlackRecordSink extends
AbstractControllerService implements Record
.build();
public static final PropertyDescriptor ACCESS_TOKEN = new
PropertyDescriptor.Builder()
- .name("access-token")
- .displayName("Access Token")
+ .name("Access Token")
.description("Bot OAuth Token used for authenticating and
authorizing the Slack request sent by NiFi.")
.required(true)
.sensitive(true)
@@ -67,16 +66,14 @@ public class SlackRecordSink extends
AbstractControllerService implements Record
.build();
public static final PropertyDescriptor CHANNEL_ID = new
PropertyDescriptor.Builder()
- .name("channel-id")
- .displayName("Channel ID")
+ .name("Channel ID")
.description("Slack channel, private group, or IM channel to send
the message to. Use Channel ID instead of the name.")
.required(true)
.addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
.build();
public static final PropertyDescriptor INPUT_CHARACTER_SET = new
PropertyDescriptor.Builder()
- .name("input-character-set")
- .displayName("Input Character Set")
+ .name("Input Character Set")
.description("Specifies the character set of the records used to
generate the Slack message.")
.required(true)
.addValidator(StandardValidators.CHARACTER_SET_VALIDATOR)
@@ -84,8 +81,7 @@ public class SlackRecordSink extends
AbstractControllerService implements Record
.build();
public static final PropertyDescriptor WEB_SERVICE_CLIENT_PROVIDER = new
PropertyDescriptor.Builder()
- .name("web-service-client-provider")
- .displayName("Web Service Client Provider")
+ .name("Web Service Client Provider")
.description("Controller service to provide HTTP client for
communicating with Slack API")
.required(true)
.identifiesControllerService(WebClientServiceProvider.class)
@@ -120,6 +116,15 @@ public class SlackRecordSink extends
AbstractControllerService implements Record
service = new SlackRestService(webClientServiceProvider, accessToken,
apiUrl, charset, getLogger());
}
+ @Override
+ public void migrateProperties(PropertyConfiguration config) {
+ config.renameProperty("api-url", API_URL.getName());
+ config.renameProperty("access-token", ACCESS_TOKEN.getName());
+ config.renameProperty("channel-id", CHANNEL_ID.getName());
+ config.renameProperty("input-character-set",
INPUT_CHARACTER_SET.getName());
+ config.renameProperty("web-service-client-provider",
WEB_SERVICE_CLIENT_PROVIDER.getName());
+ }
+
@Override
public WriteResult sendData(final RecordSet recordSet, final Map<String,
String> attributes, final boolean sendZeroResults) throws IOException {
WriteResult writeResult;