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 8b6797bcbe9 NIFI-15838 Preserve prioritizer order in Git flow Registry 
serialization (#11140)
8b6797bcbe9 is described below

commit 8b6797bcbe92c9fde535ca389fd6e9a9cf761a50
Author: Pierre Villard <[email protected]>
AuthorDate: Tue Apr 21 21:00:22 2026 +0200

    NIFI-15838 Preserve prioritizer order in Git flow Registry serialization 
(#11140)
    
    Signed-off-by: David Handermann <[email protected]>
---
 .../serialize/SortedStringCollectionsModule.java   |  2 +-
 .../JacksonFlowSnapshotSerializerTest.java         | 55 ++++++++++++++++++++++
 2 files changed, 56 insertions(+), 1 deletion(-)

diff --git 
a/nifi-extension-bundles/nifi-extension-utils/nifi-git-flow-registry/src/main/java/org/apache/nifi/registry/flow/git/serialize/SortedStringCollectionsModule.java
 
b/nifi-extension-bundles/nifi-extension-utils/nifi-git-flow-registry/src/main/java/org/apache/nifi/registry/flow/git/serialize/SortedStringCollectionsModule.java
index 215d7db1fe3..47b37d02f0b 100644
--- 
a/nifi-extension-bundles/nifi-extension-utils/nifi-git-flow-registry/src/main/java/org/apache/nifi/registry/flow/git/serialize/SortedStringCollectionsModule.java
+++ 
b/nifi-extension-bundles/nifi-extension-utils/nifi-git-flow-registry/src/main/java/org/apache/nifi/registry/flow/git/serialize/SortedStringCollectionsModule.java
@@ -29,7 +29,7 @@ import java.util.Set;
 
 public class SortedStringCollectionsModule extends SimpleModule {
 
-    final Set<String> fieldsToSkipSorting = 
Set.of("inheritedParameterContexts");
+    final Set<String> fieldsToSkipSorting = 
Set.of("inheritedParameterContexts", "prioritizers");
 
     @Override
     public void setupModule(final SetupContext context) {
diff --git 
a/nifi-extension-bundles/nifi-extension-utils/nifi-git-flow-registry/src/test/java/org/apache/nifi/registry/flow/git/serialize/JacksonFlowSnapshotSerializerTest.java
 
b/nifi-extension-bundles/nifi-extension-utils/nifi-git-flow-registry/src/test/java/org/apache/nifi/registry/flow/git/serialize/JacksonFlowSnapshotSerializerTest.java
index 4d986b29855..17b523e8387 100644
--- 
a/nifi-extension-bundles/nifi-extension-utils/nifi-git-flow-registry/src/test/java/org/apache/nifi/registry/flow/git/serialize/JacksonFlowSnapshotSerializerTest.java
+++ 
b/nifi-extension-bundles/nifi-extension-utils/nifi-git-flow-registry/src/test/java/org/apache/nifi/registry/flow/git/serialize/JacksonFlowSnapshotSerializerTest.java
@@ -19,6 +19,9 @@ package org.apache.nifi.registry.flow.git.serialize;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ArrayNode;
+import org.apache.nifi.flow.ConnectableComponent;
+import org.apache.nifi.flow.ConnectableComponentType;
+import org.apache.nifi.flow.VersionedConnection;
 import org.apache.nifi.flow.VersionedListenPortDefinition;
 import org.apache.nifi.flow.VersionedParameter;
 import org.apache.nifi.flow.VersionedParameterContext;
@@ -30,7 +33,9 @@ import org.apache.nifi.flow.VersionedResourceType;
 import org.apache.nifi.registry.flow.RegisteredFlowSnapshot;
 import org.junit.jupiter.api.Test;
 
+import java.io.ByteArrayInputStream;
 import java.io.IOException;
+import java.nio.charset.StandardCharsets;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -116,4 +121,54 @@ public class JacksonFlowSnapshotSerializerTest {
         assertEquals("name3", parameters.get(2).get("name").asText());
     }
 
+    @Test
+    public void testPrioritizerOrderPreserved() throws IOException {
+        final JacksonFlowSnapshotSerializer serializer = new 
JacksonFlowSnapshotSerializer();
+
+        final List<String> prioritizers = List.of(
+                "org.apache.nifi.prioritizer.PriorityAttributePrioritizer",
+                "org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer",
+                "org.apache.nifi.prioritizer.NewestFlowFileFirstPrioritizer"
+        );
+
+        final ConnectableComponent source = new ConnectableComponent();
+        source.setId("source-id");
+        source.setType(ConnectableComponentType.PROCESSOR);
+        source.setGroupId("pg1");
+
+        final ConnectableComponent destination = new ConnectableComponent();
+        destination.setId("destination-id");
+        destination.setType(ConnectableComponentType.PROCESSOR);
+        destination.setGroupId("pg1");
+
+        final VersionedConnection connection = new VersionedConnection();
+        connection.setIdentifier("conn1");
+        connection.setSource(source);
+        connection.setDestination(destination);
+        connection.setPrioritizers(prioritizers);
+        connection.setSelectedRelationships(Set.of("success"));
+
+        final VersionedProcessGroup processGroup = new VersionedProcessGroup();
+        processGroup.setIdentifier("pg1");
+        processGroup.setConnections(Set.of(connection));
+
+        final RegisteredFlowSnapshot flowSnapshot = new 
RegisteredFlowSnapshot();
+        flowSnapshot.setFlowContents(processGroup);
+
+        final String jsonString = serializer.serialize(flowSnapshot);
+
+        final JsonNode flow = OBJECT_MAPPER.readTree(jsonString);
+        final ArrayNode connections = (ArrayNode) 
flow.get("flowContents").get("connections");
+        assertEquals(1, connections.size());
+
+        final ArrayNode serializedPrioritizers = (ArrayNode) 
connections.get(0).get("prioritizers");
+        assertEquals(3, serializedPrioritizers.size());
+        
assertEquals("org.apache.nifi.prioritizer.PriorityAttributePrioritizer", 
serializedPrioritizers.get(0).asText());
+        assertEquals("org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer", 
serializedPrioritizers.get(1).asText());
+        
assertEquals("org.apache.nifi.prioritizer.NewestFlowFileFirstPrioritizer", 
serializedPrioritizers.get(2).asText());
+
+        final RegisteredFlowSnapshot deserialized = serializer.deserialize(new 
ByteArrayInputStream(jsonString.getBytes(StandardCharsets.UTF_8)));
+        assertEquals(prioritizers, 
deserialized.getFlowContents().getConnections().iterator().next().getPrioritizers());
+    }
+
 }

Reply via email to