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 b3b315fd916 NIFI-15645 Fixed AzureLogAnalyticsReportingTask URL 
Validation (#10935)
b3b315fd916 is described below

commit b3b315fd916623723a6f65670c280e9036edcd16
Author: Pierre Villard <[email protected]>
AuthorDate: Tue Mar 10 21:31:42 2026 +0100

    NIFI-15645 Fixed AzureLogAnalyticsReportingTask URL Validation (#10935)
    
    - Added placeholder resolution before validating URL
    
    Signed-off-by: David Handermann <[email protected]>
---
 .../AbstractAzureLogAnalyticsReportingTask.java    |  75 +++++++---
 .../AzureLogAnalyticsProvenanceReportingTask.java  | 157 +++++++++++++--------
 .../AzureLogAnalyticsReportingTask.java            |  21 ++-
 3 files changed, 171 insertions(+), 82 deletions(-)

diff --git 
a/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-reporting-task/src/main/java/org/apache/nifi/reporting/azure/loganalytics/AbstractAzureLogAnalyticsReportingTask.java
 
b/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-reporting-task/src/main/java/org/apache/nifi/reporting/azure/loganalytics/AbstractAzureLogAnalyticsReportingTask.java
index 3d4652f114e..12f8892480e 100644
--- 
a/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-reporting-task/src/main/java/org/apache/nifi/reporting/azure/loganalytics/AbstractAzureLogAnalyticsReportingTask.java
+++ 
b/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-reporting-task/src/main/java/org/apache/nifi/reporting/azure/loganalytics/AbstractAzureLogAnalyticsReportingTask.java
@@ -22,6 +22,7 @@ import org.apache.http.entity.StringEntity;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClients;
 import org.apache.nifi.components.PropertyDescriptor;
+import org.apache.nifi.components.ValidationResult;
 import org.apache.nifi.expression.ExpressionLanguageScope;
 import org.apache.nifi.migration.PropertyConfiguration;
 import org.apache.nifi.processor.util.StandardValidators;
@@ -57,41 +58,79 @@ public abstract class 
AbstractAzureLogAnalyticsReportingTask extends AbstractRep
             .ofPattern("EEE, dd MMM yyyy HH:mm:ss O");
 
     static final PropertyDescriptor LOG_ANALYTICS_WORKSPACE_ID = new 
PropertyDescriptor.Builder()
-            .name("Log Analytics Workspace Id").description("Log Analytics 
Workspace Id").required(true)
+            .name("Log Analytics Workspace Id")
+            .description("Log Analytics Workspace Id")
+            .required(true)
             .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
-            
.addValidator(StandardValidators.NON_EMPTY_VALIDATOR).sensitive(true).build();
+            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+            .sensitive(true)
+            .build();
+
     static final PropertyDescriptor LOG_ANALYTICS_WORKSPACE_KEY = new 
PropertyDescriptor.Builder()
-            .name("Log Analytics Workspace Key").description("Azure Log 
Analytic Worskspace Key").required(true)
+            .name("Log Analytics Workspace Key")
+            .description("Azure Log Analytics Workspace Key")
+            .required(true)
             .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
-            
.addValidator(StandardValidators.NON_EMPTY_VALIDATOR).sensitive(true).build();
+            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+            .sensitive(true)
+            .build();
+
     static final PropertyDescriptor APPLICATION_ID = new 
PropertyDescriptor.Builder()
             .name("Application ID")
             .description("The Application ID to be included in the metrics 
sent to Azure Log Analytics WS")
-            
.required(true).expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT).defaultValue("nifi")
-            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR).build();
+            .required(true)
+            .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
+            .defaultValue("nifi")
+            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+            .build();
+
     static final PropertyDescriptor INSTANCE_ID = new 
PropertyDescriptor.Builder()
             .name("Instance ID")
             .description("Id of this NiFi instance to be included in the 
metrics sent to Azure Log Analytics WS")
-            
.required(true).expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
-            
.defaultValue("${hostname(true)}").addValidator(StandardValidators.NON_EMPTY_VALIDATOR).build();
+            .required(true)
+            .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
+            .defaultValue("${hostname(true)}")
+            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+            .build();
+
     static final PropertyDescriptor PROCESS_GROUP_IDS = new 
PropertyDescriptor.Builder()
             .name("Process Group IDs")
-            .description(
-                    "If specified, the reporting task will send metrics the 
configured ProcessGroup(s) only. Multiple IDs should be separated by a comma. 
If"
-                            + " none of the group-IDs could be found or no IDs 
are defined, the Root Process Group is used and global metrics are sent.")
-            
.required(false).expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
+            .description("""
+                    If specified, the reporting task will send metrics the 
configured ProcessGroup(s) only.
+                    Multiple IDs should be separated by a comma. If none of 
the group-IDs could be found or
+                    no IDs are defined, the Root Process Group is used and 
global metrics are sent.""")
+            .required(false)
+            .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
             .addValidator(StandardValidators.createListValidator(true, true,
                     
StandardValidators.createRegexMatchingValidator(Pattern.compile("[0-9a-z-]+"))))
             .build();
-    static final PropertyDescriptor JOB_NAME = new 
PropertyDescriptor.Builder().name("Job Name")
-            .description("The name of the exporting 
job").defaultValue("nifi_reporting_job")
+
+    static final PropertyDescriptor JOB_NAME = new PropertyDescriptor.Builder()
+            .name("Job Name")
+            .description("The name of the exporting job")
+            .defaultValue("nifi_reporting_job")
             .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
-            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR).build();
+            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+            .build();
+
     static final PropertyDescriptor LOG_ANALYTICS_URL_ENDPOINT_FORMAT = new 
PropertyDescriptor.Builder()
-            .name("Log Analytics URL Endpoint Format").description("Log 
Analytics URL Endpoint Format").required(false)
+            .name("Log Analytics URL Endpoint Format")
+            .description("""
+                    Log Analytics URL Endpoint Format. The placeholder {0} is 
replaced at runtime with the value
+                    configured in the Log Analytics Workspace Id property.""")
+            .required(false)
             
.defaultValue("https://{0}.ods.opinsights.azure.com/api/logs?api-version=2016-04-01";)
-            .addValidator(StandardValidators.URL_VALIDATOR)
-            
.expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT).build();
+            .addValidator((subject, input, context) -> {
+                final ValidationResult result = 
StandardValidators.URL_VALIDATOR.validate(
+                        subject, MessageFormat.format(input, "workspace-id"), 
context);
+                if (result.isValid()) {
+                    return new 
ValidationResult.Builder().subject(subject).input(input).valid(true).build();
+                }
+                return new 
ValidationResult.Builder().subject(subject).input(input).valid(false)
+                        .explanation("'%s' is not a valid URL 
format".formatted(input)).build();
+            })
+            .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
+            .build();
 
     private static final List<PropertyDescriptor> PROPERTY_DESCRIPTORS = 
List.of(
             LOG_ANALYTICS_WORKSPACE_ID,
diff --git 
a/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-reporting-task/src/main/java/org/apache/nifi/reporting/azure/loganalytics/AzureLogAnalyticsProvenanceReportingTask.java
 
b/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-reporting-task/src/main/java/org/apache/nifi/reporting/azure/loganalytics/AzureLogAnalyticsProvenanceReportingTask.java
index 4dec6ed4951..e4ae30959fc 100644
--- 
a/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-reporting-task/src/main/java/org/apache/nifi/reporting/azure/loganalytics/AzureLogAnalyticsProvenanceReportingTask.java
+++ 
b/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-reporting-task/src/main/java/org/apache/nifi/reporting/azure/loganalytics/AzureLogAnalyticsProvenanceReportingTask.java
@@ -62,9 +62,13 @@ public class AzureLogAnalyticsProvenanceReportingTask 
extends AbstractAzureLogAn
     private static final DateTimeFormatter DATE_TIME_FORMATTER = 
DateTimeFormatter.ofPattern(TIMESTAMP_FORMAT);
 
     static final PropertyDescriptor LOG_ANALYTICS_CUSTOM_LOG_NAME = new 
PropertyDescriptor.Builder()
-            .name("Log Analytics Custom Log Name").description("Log Analytics 
Custom Log Name").required(false)
-            
.defaultValue("nifiprovenance").addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
-            
.expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT).build();
+            .name("Log Analytics Custom Log Name")
+            .description("Log Analytics Custom Log Name")
+            .required(false)
+            .defaultValue("nifiprovenance")
+            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+            .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
+            .build();
 
     static final AllowableValue BEGINNING_OF_STREAM = new 
AllowableValue("beginning-of-stream",
             "Beginning of Stream",
@@ -75,98 +79,135 @@ public class AzureLogAnalyticsProvenanceReportingTask 
extends AbstractAzureLogAn
 
     static final PropertyDescriptor FILTER_EVENT_TYPE = new 
PropertyDescriptor.Builder()
             .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.")
-            
.required(false).expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
-            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR).build();
+            .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 %s. If no filter is set, all the 
events are sent. If multiple filters are set, the filters
+                    are cumulative."""
+                    
.formatted(Arrays.deepToString(ProvenanceEventType.values())))
+            .required(false)
+            .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
+            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+            .build();
 
     static final PropertyDescriptor FILTER_EVENT_TYPE_EXCLUDE = new 
PropertyDescriptor.Builder()
             .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 "
-                    + "exclusion takes precedence and the event will not be 
sent.")
-            
.required(false).expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
-            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR).build();
+            .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 %s. 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 exclusion takes
+                    precedence and the event will not be sent."""
+                    
.formatted(Arrays.deepToString(ProvenanceEventType.values())))
+            .required(false)
+            .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
+            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+            .build();
 
     static final PropertyDescriptor FILTER_COMPONENT_TYPE = new 
PropertyDescriptor.Builder()
             .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).expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
-            
.addValidator(StandardValidators.REGULAR_EXPRESSION_VALIDATOR).build();
+            .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)
+            .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
+            .addValidator(StandardValidators.REGULAR_EXPRESSION_VALIDATOR)
+            .build();
 
     static final PropertyDescriptor FILTER_COMPONENT_TYPE_EXCLUDE = new 
PropertyDescriptor.Builder()
             .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.")
-            
.required(false).expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
-            
.addValidator(StandardValidators.REGULAR_EXPRESSION_VALIDATOR).build();
+            .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.""")
+            .required(false)
+            .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
+            .addValidator(StandardValidators.REGULAR_EXPRESSION_VALIDATOR)
+            .build();
 
     static final PropertyDescriptor FILTER_COMPONENT_ID = new 
PropertyDescriptor.Builder()
             .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).expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
-            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR).build();
+            .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)
+            .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
+            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+            .build();
 
     static final PropertyDescriptor FILTER_COMPONENT_ID_EXCLUDE = new 
PropertyDescriptor.Builder()
             .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.")
-            
.required(false).expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
-            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR).build();
+            .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.""")
+            .required(false)
+            .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
+            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+            .build();
 
     static final PropertyDescriptor FILTER_COMPONENT_NAME = new 
PropertyDescriptor.Builder()
             .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).expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
-            
.addValidator(StandardValidators.REGULAR_EXPRESSION_VALIDATOR).build();
+            .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)
+            .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
+            .addValidator(StandardValidators.REGULAR_EXPRESSION_VALIDATOR)
+            .build();
 
     static final PropertyDescriptor FILTER_COMPONENT_NAME_EXCLUDE = new 
PropertyDescriptor.Builder()
             .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.")
-            
.required(false).expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
-            
.addValidator(StandardValidators.REGULAR_EXPRESSION_VALIDATOR).build();
+            .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.""")
+            .required(false)
+            .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
+            .addValidator(StandardValidators.REGULAR_EXPRESSION_VALIDATOR)
+            .build();
 
     static final PropertyDescriptor START_POSITION = new 
PropertyDescriptor.Builder()
             .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")
+            .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).required(true).build();
+            .defaultValue(BEGINNING_OF_STREAM)
+            .required(true)
+            .build();
 
     static final PropertyDescriptor ALLOW_NULL_VALUES = new 
PropertyDescriptor.Builder()
             .name("Include Null Values")
             .description("Indicate if null values should be included in 
records. Default will be false")
-            .required(true).allowableValues("true", 
"false").defaultValue("false").build();
-
-    static final PropertyDescriptor PLATFORM = new 
PropertyDescriptor.Builder().name("Platform")
-            .description("The value to use for the platform field in each 
event.").required(true)
-            
.expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT).defaultValue("nifi")
-            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR).build();
+            .required(true)
+            .allowableValues("true", "false")
+            .defaultValue("false")
+            .build();
+
+    static final PropertyDescriptor PLATFORM = new PropertyDescriptor.Builder()
+            .name("Platform")
+            .description("The value to use for the platform field in each 
event.")
+            .required(true)
+            .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
+            .defaultValue("nifi")
+            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+            .build();
 
     static final PropertyDescriptor INSTANCE_URL = new 
PropertyDescriptor.Builder()
             .name("Instance URL")
-            .description("The URL of this instance to use in the Content URI 
of each event.").required(true)
+            .description("The URL of this instance to use in the Content URI 
of each event.")
+            .required(true)
             .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
             .defaultValue("http://${hostname(true)}:8080/nifi")
-            .addValidator(StandardValidators.URL_VALIDATOR).build();
+            .addValidator(StandardValidators.URL_VALIDATOR)
+            .build();
 
     static final PropertyDescriptor BATCH_SIZE = new 
PropertyDescriptor.Builder()
             .name("Batch Size")
-            .description("Specifies how many records to send in a single 
batch, at most.").required(true)
-            
.defaultValue("1000").addValidator(StandardValidators.POSITIVE_INTEGER_VALIDATOR).build();
+            .description("Specifies how many records to send in a single 
batch, at most.")
+            .required(true)
+            .defaultValue("1000")
+            .addValidator(StandardValidators.POSITIVE_INTEGER_VALIDATOR)
+            .build();
 
     private static final List<PropertyDescriptor> PROPERTY_DESCRIPTORS = 
List.of(
         LOG_ANALYTICS_WORKSPACE_ID,
diff --git 
a/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-reporting-task/src/main/java/org/apache/nifi/reporting/azure/loganalytics/AzureLogAnalyticsReportingTask.java
 
b/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-reporting-task/src/main/java/org/apache/nifi/reporting/azure/loganalytics/AzureLogAnalyticsReportingTask.java
index a5e1169aa4c..33460cee957 100644
--- 
a/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-reporting-task/src/main/java/org/apache/nifi/reporting/azure/loganalytics/AzureLogAnalyticsReportingTask.java
+++ 
b/nifi-extension-bundles/nifi-azure-bundle/nifi-azure-reporting-task/src/main/java/org/apache/nifi/reporting/azure/loganalytics/AzureLogAnalyticsReportingTask.java
@@ -50,13 +50,22 @@ public class AzureLogAnalyticsReportingTask extends 
AbstractAzureLogAnalyticsRep
     private static final String JVM_JOB_NAME = "jvm_global";
     private final JvmMetrics virtualMachineMetrics = 
JmxJvmMetrics.getInstance();
 
-    static final PropertyDescriptor SEND_JVM_METRICS = new 
PropertyDescriptor.Builder().name("Send JVM Metrics")
-            .description("Send JVM Metrics in addition to the 
NiFi-metrics").allowableValues("true", "false")
-            .defaultValue("false").required(true).build();
+    static final PropertyDescriptor SEND_JVM_METRICS = new 
PropertyDescriptor.Builder()
+            .name("Send JVM Metrics")
+            .description("Send JVM Metrics in addition to the NiFi-metrics")
+            .allowableValues("true", "false")
+            .defaultValue("false")
+            .required(true)
+            .build();
+
     static final PropertyDescriptor LOG_ANALYTICS_CUSTOM_LOG_NAME = new 
PropertyDescriptor.Builder()
-            .name("Log Analytics Custom Log Name").description("Log Analytics 
Custom Log Name").required(false)
-            
.defaultValue("nifimetrics").addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
-            
.expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT).build();
+            .name("Log Analytics Custom Log Name")
+            .description("Log Analytics Custom Log Name")
+            .required(false)
+            .defaultValue("nifimetrics")
+            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+            .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
+            .build();
 
     private static final List<PropertyDescriptor> PROPERTY_DESCRIPTORS = 
List.of(
             SEND_JVM_METRICS,

Reply via email to