diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core-api/src/main/java/org/apache/nifi/controller/AbstractComponentNode.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core-api/src/main/java/org/apache/nifi/controller/AbstractComponentNode.java index dec673b6ca..29108c01a3 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core-api/src/main/java/org/apache/nifi/controller/AbstractComponentNode.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core-api/src/main/java/org/apache/nifi/controller/AbstractComponentNode.java @@ -680,10 +680,8 @@ public abstract class AbstractComponentNode implements ComponentNode { protected final Collection validateReferencedControllerServices(final ValidationContext validationContext) { final Set propertyDescriptors = validationContext.getProperties().keySet(); - if (propertyDescriptors == null) { - return Collections.emptyList(); - } + final ConfigurableComponent component = getComponent(); final Collection validationResults = new ArrayList<>(); for (final PropertyDescriptor descriptor : propertyDescriptors) { if (descriptor.getControllerServiceDefinition() == null) { @@ -691,6 +689,11 @@ public abstract class AbstractComponentNode implements ComponentNode { continue; } + final boolean dependencySatisfied = validationContext.isDependencySatisfied(descriptor, component::getPropertyDescriptor); + if (!dependencySatisfied) { + continue; + } + final String controllerServiceId = validationContext.getProperty(descriptor).getValue(); if (controllerServiceId == null) { continue; diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core-api/src/test/java/org/apache/nifi/controller/TestAbstractComponentNode.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core-api/src/test/java/org/apache/nifi/controller/TestAbstractComponentNode.java index bacfdd2328..4db58929e7 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core-api/src/test/java/org/apache/nifi/controller/TestAbstractComponentNode.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core-api/src/test/java/org/apache/nifi/controller/TestAbstractComponentNode.java @@ -52,6 +52,7 @@ import java.util.Optional; import java.util.Set; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; +import java.util.function.Function; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -186,6 +187,7 @@ public class TestAbstractComponentNode { final PropertyValue propertyValue = Mockito.mock(PropertyValue.class); Mockito.when(propertyValue.getValue()).thenReturn(serviceIdentifier); Mockito.when(context.getProperty(Mockito.eq(property))).thenReturn(propertyValue); + Mockito.when(context.isDependencySatisfied(Mockito.any(PropertyDescriptor.class), Mockito.any(Function.class))).thenReturn(true); return context; }