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 9ec75610fe NIFI-15636 Fixed NPE in StandardFlowComparator when 
property descriptors are null in compareProperties (#10927)
9ec75610fe is described below

commit 9ec75610fecb8573108410fedf84d27b7ca029c2
Author: Pierre Villard <[email protected]>
AuthorDate: Tue Feb 24 03:20:40 2026 +0100

    NIFI-15636 Fixed NPE in StandardFlowComparator when property descriptors 
are null in compareProperties (#10927)
    
    Signed-off-by: David Handermann <[email protected]>
---
 .../nifi/registry/flow/diff/StandardFlowComparator.java  | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git 
a/nifi-registry/nifi-registry-core/nifi-registry-flow-diff/src/main/java/org/apache/nifi/registry/flow/diff/StandardFlowComparator.java
 
b/nifi-registry/nifi-registry-core/nifi-registry-flow-diff/src/main/java/org/apache/nifi/registry/flow/diff/StandardFlowComparator.java
index 6708700e64..a298e66a14 100644
--- 
a/nifi-registry/nifi-registry-core/nifi-registry-flow-diff/src/main/java/org/apache/nifi/registry/flow/diff/StandardFlowComparator.java
+++ 
b/nifi-registry/nifi-registry-core/nifi-registry-flow-diff/src/main/java/org/apache/nifi/registry/flow/diff/StandardFlowComparator.java
@@ -205,7 +205,8 @@ public class StandardFlowComparator implements 
FlowComparator {
         addIfDifferent(differences, 
DifferenceType.RETRIED_RELATIONSHIPS_CHANGED, processorA, processorB, 
VersionedProcessor::getRetriedRelationships);
         addIfDifferent(differences, DifferenceType.BACKOFF_MECHANISM_CHANGED, 
processorA, processorB, VersionedProcessor::getBackoffMechanism);
         addIfDifferent(differences, DifferenceType.MAX_BACKOFF_PERIOD_CHANGED, 
processorA, processorB, VersionedProcessor::getMaxBackoffPeriod);
-        compareProperties(processorA, processorB, processorA.getProperties(), 
processorB.getProperties(), processorA.getPropertyDescriptors(), 
processorB.getPropertyDescriptors(), differences);
+        compareProperties(processorA, processorB, 
nullToEmpty(processorA.getProperties()), 
nullToEmpty(processorB.getProperties()),
+            nullToEmpty(processorA.getPropertyDescriptors()), 
nullToEmpty(processorB.getPropertyDescriptors()), differences);
     }
 
     private void compare(final VersionedReportingTask taskA, final 
VersionedReportingTask taskB, final Set<FlowDifference> differences) {
@@ -218,7 +219,8 @@ public class StandardFlowComparator implements 
FlowComparator {
         addIfDifferent(differences, DifferenceType.RUN_SCHEDULE_CHANGED, 
taskA, taskB, VersionedReportingTask::getSchedulingPeriod);
         addIfDifferent(differences, 
DifferenceType.SCHEDULING_STRATEGY_CHANGED, taskA, taskB, 
VersionedReportingTask::getSchedulingStrategy);
         addIfDifferent(differences, DifferenceType.SCHEDULED_STATE_CHANGED, 
taskA, taskB, VersionedReportingTask::getScheduledState);
-        compareProperties(taskA, taskB, taskA.getProperties(), 
taskB.getProperties(), taskA.getPropertyDescriptors(), 
taskB.getPropertyDescriptors(), differences);
+        compareProperties(taskA, taskB, nullToEmpty(taskA.getProperties()), 
nullToEmpty(taskB.getProperties()),
+            nullToEmpty(taskA.getPropertyDescriptors()), 
nullToEmpty(taskB.getPropertyDescriptors()), differences);
     }
 
     private void compare(final VersionedFlowAnalysisRule ruleA, final 
VersionedFlowAnalysisRule ruleB, final Set<FlowDifference> differences) {
@@ -229,7 +231,8 @@ public class StandardFlowComparator implements 
FlowComparator {
         addIfDifferent(differences, DifferenceType.BUNDLE_CHANGED, ruleA, 
ruleB, VersionedFlowAnalysisRule::getBundle);
         addIfDifferent(differences, DifferenceType.ENFORCEMENT_POLICY_CHANGED, 
ruleA, ruleB, VersionedFlowAnalysisRule::getEnforcementPolicy);
         addIfDifferent(differences, DifferenceType.SCHEDULED_STATE_CHANGED, 
ruleA, ruleB, VersionedFlowAnalysisRule::getScheduledState);
-        compareProperties(ruleA, ruleB, ruleA.getProperties(), 
ruleB.getProperties(), ruleA.getPropertyDescriptors(), 
ruleB.getPropertyDescriptors(), differences);
+        compareProperties(ruleA, ruleB, nullToEmpty(ruleA.getProperties()), 
nullToEmpty(ruleB.getProperties()),
+            nullToEmpty(ruleA.getPropertyDescriptors()), 
nullToEmpty(ruleB.getPropertyDescriptors()), differences);
     }
 
     private void compare(final VersionedParameterProvider parameterProviderA, 
final VersionedParameterProvider parameterProviderB, final Set<FlowDifference> 
differences) {
@@ -239,8 +242,8 @@ public class StandardFlowComparator implements 
FlowComparator {
 
         addIfDifferent(differences, DifferenceType.ANNOTATION_DATA_CHANGED, 
parameterProviderA, parameterProviderB, 
VersionedParameterProvider::getAnnotationData);
         addIfDifferent(differences, DifferenceType.BUNDLE_CHANGED, 
parameterProviderA, parameterProviderB, VersionedParameterProvider::getBundle);
-        compareProperties(parameterProviderA, parameterProviderB, 
parameterProviderA.getProperties(), parameterProviderB.getProperties(),
-                parameterProviderA.getPropertyDescriptors(), 
parameterProviderB.getPropertyDescriptors(), differences);
+        compareProperties(parameterProviderA, parameterProviderB, 
nullToEmpty(parameterProviderA.getProperties()), 
nullToEmpty(parameterProviderB.getProperties()),
+            nullToEmpty(parameterProviderA.getPropertyDescriptors()), 
nullToEmpty(parameterProviderB.getPropertyDescriptors()), differences);
     }
 
     void compare(final VersionedParameterContext contextA, final 
VersionedParameterContext contextB, final Set<FlowDifference> differences) {
@@ -346,7 +349,8 @@ public class StandardFlowComparator implements 
FlowComparator {
 
         addIfDifferent(differences, DifferenceType.ANNOTATION_DATA_CHANGED, 
serviceA, serviceB, VersionedControllerService::getAnnotationData);
         addIfDifferent(differences, DifferenceType.BUNDLE_CHANGED, serviceA, 
serviceB, VersionedControllerService::getBundle);
-        compareProperties(serviceA, serviceB, serviceA.getProperties(), 
serviceB.getProperties(), serviceA.getPropertyDescriptors(), 
serviceB.getPropertyDescriptors(), differences);
+        compareProperties(serviceA, serviceB, 
nullToEmpty(serviceA.getProperties()), nullToEmpty(serviceB.getProperties()),
+            nullToEmpty(serviceA.getPropertyDescriptors()), 
nullToEmpty(serviceB.getPropertyDescriptors()), differences);
         addIfDifferent(differences, DifferenceType.SCHEDULED_STATE_CHANGED, 
serviceA, serviceB, VersionedControllerService::getScheduledState);
         addIfDifferent(differences, DifferenceType.BULLETIN_LEVEL_CHANGED, 
serviceA, serviceB, VersionedControllerService::getBulletinLevel, true, "WARN");
     }

Reply via email to