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() {

Reply via email to