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

kdoran pushed a commit to branch NIFI-15727
in repository https://gitbox.apache.org/repos/asf/nifi.git

commit b723a8dc485e6990203f46419a323806c4cc0b2b
Author: Kevin Doran <[email protected]>
AuthorDate: Wed Mar 18 13:18:01 2026 -0400

    NIFI-15727 Fix ConnectorRepository syncFromProvider bug
---
 .../connector/StandardConnectorRepository.java     |  3 +-
 .../connector/TestStandardConnectorRepository.java | 34 +++++++++++++++++-----
 2 files changed, 27 insertions(+), 10 deletions(-)

diff --git 
a/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/components/connector/StandardConnectorRepository.java
 
b/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/components/connector/StandardConnectorRepository.java
index 2df018c6382..dcc53f2a472 100644
--- 
a/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/components/connector/StandardConnectorRepository.java
+++ 
b/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/components/connector/StandardConnectorRepository.java
@@ -463,10 +463,9 @@ public class StandardConnectorRepository implements 
ConnectorRepository {
 
         final List<VersionedConfigurationStep> workingFlowConfiguration = 
config.getWorkingFlowConfiguration();
         if (workingFlowConfiguration != null) {
-            final MutableConnectorConfigurationContext workingConfigContext = 
connector.getWorkingFlowContext().getConfigurationContext();
             for (final VersionedConfigurationStep step : 
workingFlowConfiguration) {
                 final StepConfiguration stepConfiguration = 
toStepConfiguration(step);
-                workingConfigContext.replaceProperties(step.getName(), 
stepConfiguration);
+                connector.setConfiguration(step.getName(), stepConfiguration);
             }
         }
     }
diff --git 
a/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/components/connector/TestStandardConnectorRepository.java
 
b/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/components/connector/TestStandardConnectorRepository.java
index 4089b274819..b833d74c6a1 100644
--- 
a/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/components/connector/TestStandardConnectorRepository.java
+++ 
b/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/components/connector/TestStandardConnectorRepository.java
@@ -211,12 +211,11 @@ public class TestStandardConnectorRepository {
     }
 
     @Test
-    public void testGetConnectorWithProviderOverridesWorkingConfig() {
+    public void testGetConnectorWithProviderOverridesWorkingConfig() throws 
FlowUpdateException {
         final ConnectorConfigurationProvider provider = 
mock(ConnectorConfigurationProvider.class);
         final StandardConnectorRepository repository = 
createRepositoryWithProvider(provider);
 
-        final MutableConnectorConfigurationContext workingConfigContext = 
mock(MutableConnectorConfigurationContext.class);
-        final ConnectorNode connector = 
createConnectorNodeWithWorkingConfig("connector-1", "Original Name", 
workingConfigContext);
+        final ConnectorNode connector = 
createSimpleConnectorNode("connector-1", "Original Name");
         repository.addConnector(connector);
 
         final ConnectorWorkingConfiguration externalConfig = new 
ConnectorWorkingConfiguration();
@@ -229,7 +228,7 @@ public class TestStandardConnectorRepository {
 
         assertNotNull(result);
         verify(connector).setName("External Name");
-        verify(workingConfigContext).replaceProperties(eq("step1"), 
any(StepConfiguration.class));
+        verify(connector).setConfiguration(eq("step1"), 
any(StepConfiguration.class));
     }
 
     @Test
@@ -648,12 +647,11 @@ public class TestStandardConnectorRepository {
     }
 
     @Test
-    public void testSyncFromProviderAppliesNifiUuidsDirectly() {
+    public void testSyncFromProviderAppliesNifiUuidsDirectly() throws 
FlowUpdateException {
         final ConnectorConfigurationProvider provider = 
mock(ConnectorConfigurationProvider.class);
         final StandardConnectorRepository repository = 
createRepositoryWithProvider(provider);
 
-        final MutableConnectorConfigurationContext workingConfigContext = 
mock(MutableConnectorConfigurationContext.class);
-        final ConnectorNode connector = 
createConnectorNodeWithWorkingConfig("connector-1", "Test Connector", 
workingConfigContext);
+        final ConnectorNode connector = 
createSimpleConnectorNode("connector-1", "Test Connector");
         repository.addConnector(connector);
 
         // Provider returns config with NiFi UUIDs (no translation needed in 
framework)
@@ -670,7 +668,27 @@ public class TestStandardConnectorRepository {
         repository.getConnector("connector-1");
 
         // Working config is updated with NiFi UUIDs as-is -- no translation 
in the repository
-        verify(workingConfigContext).replaceProperties(eq("step1"), 
any(StepConfiguration.class));
+        verify(connector).setConfiguration(eq("step1"), 
any(StepConfiguration.class));
+    }
+
+    @Test
+    public void testSyncFromProviderSkipsSetConfigurationWhenNoSteps() throws 
FlowUpdateException {
+        final ConnectorConfigurationProvider provider = 
mock(ConnectorConfigurationProvider.class);
+        final StandardConnectorRepository repository = 
createRepositoryWithProvider(provider);
+
+        final ConnectorNode connector = 
createSimpleConnectorNode("connector-1", "Test Connector");
+        repository.addConnector(connector);
+
+        final ConnectorWorkingConfiguration externalConfig = new 
ConnectorWorkingConfiguration();
+        externalConfig.setName("External Name");
+        externalConfig.setWorkingFlowConfiguration(null);
+        
when(provider.load("connector-1")).thenReturn(Optional.of(externalConfig));
+
+        final ConnectorNode result = repository.getConnector("connector-1");
+
+        assertNotNull(result);
+        verify(connector).setName("External Name");
+        verify(connector, never()).setConfiguration(anyString(), 
any(StepConfiguration.class));
     }
 
     @Test

Reply via email to