diff --git a/src/main/java/org/apache/nifi/components/ConfigurableComponent.java b/src/main/java/org/apache/nifi/components/ConfigurableComponent.java index 4c5537e..e2ea992 100644 --- a/src/main/java/org/apache/nifi/components/ConfigurableComponent.java +++ b/src/main/java/org/apache/nifi/components/ConfigurableComponent.java @@ -43,25 +43,44 @@ public interface ConfigurableComponent { PropertyDescriptor getPropertyDescriptor(String name); /** + *

* Hook method allowing subclasses to eagerly react to a configuration * change for the given property descriptor. This method will be invoked * regardless of property validity. As an alternative to using this method, * a component may simply get the latest value whenever it needs it and if * necessary lazily evaluate it. Any throwable that escapes this method will * simply be ignored. + *

* + *

* When NiFi is restarted, this method will be called for each 'dynamic' property that is - * added, as well as for each property that is not set to the default value. I.e., if the - * Properties are modified from the default values. If it is undesirable for your use case + * added, as well as for each property that has a value. I.e., even if the + * Properties are not modified from the default values. If it is undesirable for your use case * to react to properties being modified in this situation, you can add the {@link OnConfigurationRestored} * annotation to a method - this will allow the Processor to know when configuration has * been restored, so that it can determine whether or not to perform some action in the - * onPropertyModified method. + * onPropertyModified method. This can be done as follows: + *

+ * + *
{@code
+     *    private volatile boolean configurationRestored = false;
+     *
+     *    @OnConfigurationRestored
+     *    public void onConfigurationRestored() {
+     *        this.configurationRestored = true;
+     *    }
+     *
+     *    public void onPropertyModified(PropertyDescriptor descriptor, String oldValue, String newValue) {
+     *        if (!configurationRestored) {
+     *            return;
+     *        }
+     *    }
+     * }
* * @param descriptor the descriptor for the property being modified - * @param oldValue the value that was previously set, or null if no value - * was previously set for this property - * @param newValue the new property value or if null indicates the property + * @param oldValue the value that was previously set. Will be null if no value + * was previously set for this property, on NiFi startup or on first modification after component is added to flow + * @param newValue the new property value or if null indicates the property * was removed */ void onPropertyModified(PropertyDescriptor descriptor, String oldValue, String newValue);