diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/flow/synchronization/StandardVersionedComponentSynchronizer.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/flow/synchronization/StandardVersionedComponentSynchronizer.java index a2c702c704..12420e3764 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/flow/synchronization/StandardVersionedComponentSynchronizer.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/flow/synchronization/StandardVersionedComponentSynchronizer.java @@ -1656,26 +1656,12 @@ public class StandardVersionedComponentSynchronizer implements VersionedComponen } } - private void collectValueAndReferences(final ParameterContext parameterContext, final Map valueAndRef) { - parameterContext.getEffectiveParameters() - .forEach((pd, param) -> valueAndRef.put(pd.getName(), param.getValue())); - } - protected Set getUpdatedParameterNames(final ParameterContext parameterContext, final VersionedParameterContext proposed) { final Map originalValues = new HashMap<>(); - collectValueAndReferences(parameterContext, originalValues); + parameterContext.getParameters().values().forEach(param -> originalValues.put(param.getDescriptor().getName(), param.getValue())); final Map proposedValues = new HashMap<>(); if (proposed != null) { - if (proposed.getInheritedParameterContexts() != null) { - for (int i = proposed.getInheritedParameterContexts().size() - 1; i >= 0; i--) { - final String name = proposed.getInheritedParameterContexts().get(i); - final ParameterContext inheritedContext = getParameterContextByName(name); - if (inheritedContext != null) { - collectValueAndReferences(inheritedContext, proposedValues); - } - } - } proposed.getParameters().forEach(versionedParam -> proposedValues.put(versionedParam.getName(), versionedParam.getValue())); } diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/test/java/org/apache/nifi/flow/synchronization/StandardVersionedComponentSynchronizerTest.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/test/java/org/apache/nifi/flow/synchronization/StandardVersionedComponentSynchronizerTest.java index 64dc2dea8d..0ec1e8df66 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/test/java/org/apache/nifi/flow/synchronization/StandardVersionedComponentSynchronizerTest.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/test/java/org/apache/nifi/flow/synchronization/StandardVersionedComponentSynchronizerTest.java @@ -1061,30 +1061,30 @@ public class StandardVersionedComponentSynchronizerTest { // Test no changes Map parameterMap = new HashMap<>(originalParams); - VersionedParameterContext proposed = createVersionedParameterContext("Context 1", parameterMap, Collections.singleton("secret")); + VersionedParameterContext proposed = createVersionedParameterContext("Context 2", parameterMap, Collections.singleton("secret")); assertEquals(Collections.emptySet(), synchronizer.getUpdatedParameterNames(existing, proposed)); // Test non-sensitive param change parameterMap = new HashMap<>(originalParams); parameterMap.put("abc", "hello"); - proposed = createVersionedParameterContext("Context 1", parameterMap, Collections.singleton("secret")); + proposed = createVersionedParameterContext("Context 2", parameterMap, Collections.singleton("secret")); assertEquals(Collections.singleton("abc"), synchronizer.getUpdatedParameterNames(existing, proposed)); // Test sensitive param change parameterMap = new HashMap<>(originalParams); parameterMap.put("secret", "secret"); - proposed = createVersionedParameterContext("Context 1", parameterMap, Collections.singleton("secret")); + proposed = createVersionedParameterContext("Context 2", parameterMap, Collections.singleton("secret")); assertEquals(Collections.singleton("secret"), synchronizer.getUpdatedParameterNames(existing, proposed)); // Test removed parameters parameterMap.clear(); - proposed = createVersionedParameterContext("Context 1", parameterMap, Collections.singleton("secret")); + proposed = createVersionedParameterContext("Context 2", parameterMap, Collections.singleton("secret")); assertEquals(new HashSet<>(Arrays.asList("abc", "secret")), synchronizer.getUpdatedParameterNames(existing, proposed)); // Test added parameter parameterMap = new HashMap<>(originalParams); parameterMap.put("Added", "Added"); - proposed = createVersionedParameterContext("Context 1", parameterMap, Collections.singleton("secret")); + proposed = createVersionedParameterContext("Context 2", parameterMap, Collections.singleton("secret")); assertEquals(Collections.singleton("Added"), synchronizer.getUpdatedParameterNames(existing, proposed)); // Test added, removed, and updated parameters @@ -1093,30 +1093,8 @@ public class StandardVersionedComponentSynchronizerTest { parameterMap.put("Added 2", "Added"); parameterMap.remove("secret"); parameterMap.put("abc", "hello"); - proposed = createVersionedParameterContext("Context 1", parameterMap, Collections.singleton("secret")); + proposed = createVersionedParameterContext("Context 2", parameterMap, Collections.singleton("secret")); assertEquals(new HashSet<>(Arrays.asList("abc", "secret", "Added", "Added 2")), synchronizer.getUpdatedParameterNames(existing, proposed)); - - // Test change value due to inherited parameter context reordering - final Map inheritedParameters = new HashMap<>(); - // Context 1: abc = xyz - // Context 3: abc = def - inheritedParameters.put("abc", "def"); - final VersionedParameterContext context3 = createVersionedParameterContext("Context 3", inheritedParameters, Collections.emptySet()); - - synchronizer.synchronize(null, context3, synchronizationOptions); - - parameterMap = new HashMap<>(); - proposed = createVersionedParameterContext("Context 2", parameterMap, Collections.emptySet()); - synchronizer.synchronize(null, proposed, synchronizationOptions); - - ParameterContext context2 = parameterContextManager.getParameterContextNameMapping().get("Context 2"); - proposed.setInheritedParameterContexts(List.of("Context 1", "Context 3")); - synchronizer.synchronize(context2, proposed, synchronizationOptions); - - proposed.setInheritedParameterContexts(List.of("Context 3", "Context 1")); - context2 = parameterContextManager.getParameterContextNameMapping().get("Context 2"); - // The effective value of abc should change here due to the reordering - assertEquals(Collections.singleton("abc"), synchronizer.getUpdatedParameterNames(context2, proposed)); } @Test