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 2cfd6f4e56 NIFI-14555 Added Paramter Context Values Property to Git
Flow Registry Clients (#9927)
2cfd6f4e56 is described below
commit 2cfd6f4e56fdfb450ba77f9870014a60cdf89b23
Author: Pierre Villard <[email protected]>
AuthorDate: Tue May 13 16:07:24 2025 +0200
NIFI-14555 Added Paramter Context Values Property to Git Flow Registry
Clients (#9927)
Signed-off-by: David Handermann <[email protected]>
---
.../flow/git/AbstractGitFlowRegistryClient.java | 46 ++++++++++++++++++++++
.../nifi/github/GitHubFlowRegistryClientTest.java | 3 ++
2 files changed, 49 insertions(+)
diff --git
a/nifi-extension-bundles/nifi-extension-utils/nifi-git-flow-registry/src/main/java/org/apache/nifi/registry/flow/git/AbstractGitFlowRegistryClient.java
b/nifi-extension-bundles/nifi-extension-utils/nifi-git-flow-registry/src/main/java/org/apache/nifi/registry/flow/git/AbstractGitFlowRegistryClient.java
index c721153b64..738777d3db 100644
---
a/nifi-extension-bundles/nifi-extension-utils/nifi-git-flow-registry/src/main/java/org/apache/nifi/registry/flow/git/AbstractGitFlowRegistryClient.java
+++
b/nifi-extension-bundles/nifi-extension-utils/nifi-git-flow-registry/src/main/java/org/apache/nifi/registry/flow/git/AbstractGitFlowRegistryClient.java
@@ -17,6 +17,7 @@
package org.apache.nifi.registry.flow.git;
+import org.apache.nifi.components.DescribedValue;
import org.apache.nifi.components.PropertyDescriptor;
import org.apache.nifi.components.ValidationContext;
import org.apache.nifi.components.ValidationResult;
@@ -93,6 +94,14 @@ public abstract class AbstractGitFlowRegistryClient extends
AbstractFlowRegistry
.required(true)
.build();
+ public static final PropertyDescriptor PARAMETER_CONTEXT_VALUES = new
PropertyDescriptor.Builder()
+ .name("Parameter Context Values")
+ .description("Specifies what to do with parameter values when
storing the versioned flow.")
+ .allowableValues(ParameterContextValuesStrategy.class)
+ .defaultValue(ParameterContextValuesStrategy.RETAIN)
+ .required(true)
+ .build();
+
static final String DEFAULT_BUCKET_NAME = "default";
static final String DEFAULT_BUCKET_KEEP_FILE_PATH = DEFAULT_BUCKET_NAME +
"/.keep";
static final String DEFAULT_BUCKET_KEEP_FILE_CONTENT = "Do Not Delete";
@@ -121,6 +130,7 @@ public abstract class AbstractGitFlowRegistryClient extends
AbstractFlowRegistry
combinedPropertyDescriptors.add(REPOSITORY_BRANCH);
combinedPropertyDescriptors.add(REPOSITORY_PATH);
combinedPropertyDescriptors.add(DIRECTORY_FILTER_EXCLUDE);
+ combinedPropertyDescriptors.add(PARAMETER_CONTEXT_VALUES);
propertyDescriptors =
Collections.unmodifiableList(combinedPropertyDescriptors);
flowSnapshotSerializer = createFlowSnapshotSerializer();
@@ -347,6 +357,14 @@ public abstract class AbstractGitFlowRegistryClient
extends AbstractFlowRegistry
flowSnapshot.getSnapshotMetadata().setComments(null);
flowSnapshot.getSnapshotMetadata().setTimestamp(0);
+ // remove all parameter values if configured to do so
+ final ParameterContextValuesStrategy parameterContextValuesStrategy =
context.getProperty(PARAMETER_CONTEXT_VALUES).asAllowableValue(ParameterContextValuesStrategy.class);
+ if
(ParameterContextValuesStrategy.REMOVE.equals(parameterContextValuesStrategy)) {
+ flowSnapshot.getParameterContexts().forEach((name,
parameterContext) ->
+ parameterContext.getParameters().forEach(parameter ->
parameter.setValue(null))
+ );
+ }
+
// replace the id of the top level group and all of its references
with a constant value prior to serializing to avoid
// unnecessary diffs when different instances of the same flow are
imported and have different top-level PG ids
final String originalFlowContentsGroupId =
replaceGroupId(flowSnapshot.getFlowContents(), FLOW_CONTENTS_GROUP_ID);
@@ -656,4 +674,32 @@ public abstract class AbstractGitFlowRegistryClient
extends AbstractFlowRegistry
protected FlowSnapshotSerializer createFlowSnapshotSerializer() {
return new JacksonFlowSnapshotSerializer();
}
+
+ enum ParameterContextValuesStrategy implements DescribedValue {
+ RETAIN("Retain", "Retain Values in Parameter Contexts without
modifications"),
+ REMOVE("Remove", "Remove Values from Parameter Context");
+
+ private final String displayName;
+ private final String description;
+
+ ParameterContextValuesStrategy(final String displayName, final String
description) {
+ this.displayName = displayName;
+ this.description = description;
+ }
+
+ @Override
+ public String getValue() {
+ return name();
+ }
+
+ @Override
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ @Override
+ public String getDescription() {
+ return description;
+ }
+ }
}
diff --git
a/nifi-extension-bundles/nifi-github-bundle/nifi-github-extensions/src/test/java/org/apache/nifi/github/GitHubFlowRegistryClientTest.java
b/nifi-extension-bundles/nifi-github-bundle/nifi-github-extensions/src/test/java/org/apache/nifi/github/GitHubFlowRegistryClientTest.java
index 79958c9458..67c85912de 100644
---
a/nifi-extension-bundles/nifi-github-bundle/nifi-github-extensions/src/test/java/org/apache/nifi/github/GitHubFlowRegistryClientTest.java
+++
b/nifi-extension-bundles/nifi-github-bundle/nifi-github-extensions/src/test/java/org/apache/nifi/github/GitHubFlowRegistryClientTest.java
@@ -180,6 +180,9 @@ public class GitHubFlowRegistryClientTest {
final PropertyValue filterPropertyValue =
createMockPropertyValue(DEFAULT_FILTER);
when(clientConfigurationContext.getProperty(GitHubFlowRegistryClient.DIRECTORY_FILTER_EXCLUDE)).thenReturn(filterPropertyValue);
+
+ final PropertyValue parametersPropertyValue =
createMockPropertyValue("Retain");
+
when(clientConfigurationContext.getProperty(GitHubFlowRegistryClient.PARAMETER_CONTEXT_VALUES)).thenReturn(parametersPropertyValue);
}
private void setupClientConfigurationContextWithDefaults() {