mirror of
https://github.com/apache/nifi.git
synced 2025-03-06 17:39:36 +00:00
NIFI-8537: Check that a property's dependencies are satisfied before checking if the referenced controller service valid/enabled
Signed-off-by: Matthew Burgess <mattyb149@apache.org> This closes #5071
This commit is contained in:
parent
a274c12bbb
commit
97ed0efbc2
@ -680,10 +680,8 @@ public abstract class AbstractComponentNode implements ComponentNode {
|
||||
|
||||
protected final Collection<ValidationResult> validateReferencedControllerServices(final ValidationContext validationContext) {
|
||||
final Set<PropertyDescriptor> propertyDescriptors = validationContext.getProperties().keySet();
|
||||
if (propertyDescriptors == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
final ConfigurableComponent component = getComponent();
|
||||
final Collection<ValidationResult> 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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user