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-api.git
The following commit(s) were added to refs/heads/main by this push:
new 266c85c NIFI-14571 Added VerifiableFlowRegistryClient interface for
Flow Registry Clients (#9)
266c85c is described below
commit 266c85c0272932a791bf058fd01be992227fe6fa
Author: Matt Burgess <[email protected]>
AuthorDate: Thu Jul 10 12:26:44 2025 -0400
NIFI-14571 Added VerifiableFlowRegistryClient interface for Flow Registry
Clients (#9)
Signed-off-by: David Handermann <[email protected]>
---
.../flow/VerifiableFlowRegistryClient.java | 66 ++++++++++++++++++++++
1 file changed, 66 insertions(+)
diff --git
a/src/main/java/org/apache/nifi/registry/flow/VerifiableFlowRegistryClient.java
b/src/main/java/org/apache/nifi/registry/flow/VerifiableFlowRegistryClient.java
new file mode 100644
index 0000000..114e8ee
--- /dev/null
+++
b/src/main/java/org/apache/nifi/registry/flow/VerifiableFlowRegistryClient.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.registry.flow;
+
+import org.apache.nifi.components.ConfigVerificationResult;
+import org.apache.nifi.logging.ComponentLog;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * Any Flow Registry Client that implements this interface will be
provided the opportunity to verify
+ * a given configuration of the Flow Registry Client. This allows the Flow
Registry Client to provide meaningful feedback
+ * to users when configuring the dataflow.
+ * </p>
+ *
+ * <p>
+ * Generally speaking, verification differs from validation in that
validation is expected to be very
+ * quick and run often. If a Flow Registry Client is not valid, it cannot
be started. However, verification may be
+ * more expensive or time-consuming to complete. For example, validation
may ensure that a username is
+ * provided for connecting to an external service but should not perform
any sort of network connection
+ * in order to verify that the username is accurate. Verification, on the
other hand, may create resources
+ * such as network connections, may be more expensive to complete, and may
be run only when a user invokes
+ * the action (though verification may later occur at other stages, such
as when starting a component).
+ * </p>
+ *
+ * <p>
+ * Verification is allowed to be run only when a Flow Registry Client is
fully disabled.
+ * Therefore, any initialization logic that may need to be performed
+ * before the Flow Registry Client is triggered may also be required for
verification. However, the framework is not responsible
+ * for triggering the Lifecycle management stages before triggering the
verification. Such
+ * methods should be handled by the {@link
#verify(FlowRegistryClientConfigurationContext, ComponentLog, Map)} itself.
+ * The {@link #verify(FlowRegistryClientConfigurationContext,
ComponentLog, Map)} method will only be called if the configuration is valid
according to the
+ * validation rules (i.e., all Property Descriptors' validators and
customValidate methods have indicated that the configuration is valid).
+ * </p>
+ */
+public interface VerifiableFlowRegistryClient {
+
+ /**
+ * Verifies that the configuration defined by the given
FlowRegistryClientConfigurationContext is valid.
+ * @param context the FlowRegistryClientConfigurationContext that contains
the necessary configuration
+ * @param verificationLogger a logger that can be used during
verification. While the typical logger can be used, doing so may result
+ * in producing bulletins, which can be confusing.
+ * @param variables a Map of key/value pairs that can be used to resolve
variables referenced in property values via Expression Language
+ *
+ * @return a List of ConfigVerificationResults, each illustrating one step
of the verification process that was completed
+ */
+ List<ConfigVerificationResult>
verify(FlowRegistryClientConfigurationContext context, ComponentLog
verificationLogger, Map<String, String> variables);
+
+}