This is an automated email from the ASF dual-hosted git repository.

pvillard 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 c0995a8824 NIFI-14781: Adding ParameterProvider support in resolving 
compatible bundles during PG replace-request
c0995a8824 is described below

commit c0995a882482d6fb92a6387abf4e6aca4ae4c32e
Author: Joe Gresock <[email protected]>
AuthorDate: Wed Jul 23 16:58:39 2025 -0400

    NIFI-14781: Adding ParameterProvider support in resolving compatible 
bundles during PG replace-request
    
    Signed-off-by: Pierre Villard <[email protected]>
    
    This closes #10130.
---
 .../src/main/java/org/apache/nifi/util/BundleUtils.java   | 15 +++++++++++++++
 .../main/java/org/apache/nifi/web/NiFiServiceFacade.java  |  8 ++++++++
 .../org/apache/nifi/web/StandardNiFiServiceFacade.java    |  4 ++++
 .../java/org/apache/nifi/web/api/FlowUpdateResource.java  |  1 +
 4 files changed, 28 insertions(+)

diff --git 
a/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/util/BundleUtils.java
 
b/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/util/BundleUtils.java
index 444ff8ed46..b596172705 100644
--- 
a/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/util/BundleUtils.java
+++ 
b/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/util/BundleUtils.java
@@ -18,6 +18,7 @@ package org.apache.nifi.util;
 
 import org.apache.nifi.bundle.Bundle;
 import org.apache.nifi.bundle.BundleCoordinate;
+import org.apache.nifi.flow.ParameterProviderReference;
 import org.apache.nifi.flow.VersionedConfigurableExtension;
 import org.apache.nifi.flow.VersionedProcessGroup;
 import org.apache.nifi.flow.VersionedReportingTaskSnapshot;
@@ -27,6 +28,7 @@ import org.apache.nifi.nar.PythonBundle;
 import org.apache.nifi.web.api.dto.BundleDTO;
 
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
 
 /**
@@ -240,6 +242,19 @@ public final class BundleUtils {
         }
     }
 
+    public static void discoverCompatibleBundles(final ExtensionManager 
extensionManager, final Map<String, ParameterProviderReference> 
parameterProviders) {
+        if (parameterProviders != null) {
+            parameterProviders.values().forEach(parameterProvider -> 
discoverCompatibleBundle(extensionManager, parameterProvider));
+        }
+    }
+
+    public static void discoverCompatibleBundle(final ExtensionManager 
extensionManager, final ParameterProviderReference parameterProviderReference) {
+        final BundleDTO dto = 
createBundleDto(parameterProviderReference.getBundle());
+        final BundleCoordinate coordinate = 
getOptionalCompatibleBundle(extensionManager, 
parameterProviderReference.getType(), dto).orElse(
+                new BundleCoordinate(dto.getGroup(), dto.getArtifact(), 
dto.getVersion()));
+        parameterProviderReference.setBundle(createBundle(coordinate));
+    }
+
     public static void discoverCompatibleBundle(final ExtensionManager 
extensionManager, final VersionedConfigurableExtension extension) {
         final BundleDTO dto = createBundleDto(extension.getBundle());
         final BundleCoordinate coordinate = 
getOptionalCompatibleBundle(extensionManager, extension.getType(), dto).orElse(
diff --git 
a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacade.java
 
b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacade.java
index 15ebf20d4a..480e7383f1 100644
--- 
a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacade.java
+++ 
b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacade.java
@@ -2782,6 +2782,14 @@ public interface NiFiServiceFacade {
      */
     void discoverCompatibleBundles(VersionedProcessGroup versionedGroup);
 
+    /**
+     * Discovers the compatible bundle details for the components in the 
specified Parameter Providers and updates them
+     * to reflect the appropriate bundles.
+     *
+     * @param parameterProviders the parameter provider map
+     */
+    void discoverCompatibleBundles(Map<String, ParameterProviderReference> 
parameterProviders);
+
     /**
      * Discovers the compatible bundle details for the components in the 
specified snapshot and updates the snapshot to reflect the appropriate bundles.
      *
diff --git 
a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java
 
b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java
index 3aed540382..e04112118f 100644
--- 
a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java
+++ 
b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java
@@ -4108,6 +4108,10 @@ public class StandardNiFiServiceFacade implements 
NiFiServiceFacade {
         
BundleUtils.discoverCompatibleBundles(controllerFacade.getExtensionManager(), 
versionedGroup);
     }
 
+    public void discoverCompatibleBundles(final Map<String, 
ParameterProviderReference> parameterProviders) {
+        
BundleUtils.discoverCompatibleBundles(controllerFacade.getExtensionManager(), 
parameterProviders);
+    }
+
     @Override
     public void discoverCompatibleBundles(final VersionedReportingTaskSnapshot 
reportingTaskSnapshot) {
         
BundleUtils.discoverCompatibleBundles(controllerFacade.getExtensionManager(), 
reportingTaskSnapshot);
diff --git 
a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/FlowUpdateResource.java
 
b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/FlowUpdateResource.java
index 6c502b1ee6..63dadca337 100644
--- 
a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/FlowUpdateResource.java
+++ 
b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/FlowUpdateResource.java
@@ -193,6 +193,7 @@ public abstract class FlowUpdateResource<T extends 
ProcessGroupDescriptorEntity,
         // The new flow may not contain the same versions of components in 
existing flow. As a result, we need to update
         // the flow snapshot to contain compatible bundles.
         
serviceFacade.discoverCompatibleBundles(flowSnapshot.getFlowContents());
+        
serviceFacade.discoverCompatibleBundles(flowSnapshot.getParameterProviders());
 
         // If there are any Controller Services referenced that are inherited 
from the parent group, resolve those to point to the appropriate Controller 
Service, if we are able to.
         final Set<String> unresolvedControllerServices = 
serviceFacade.resolveInheritedControllerServices(flowSnapshotContainer, 
groupId, user);

Reply via email to