NIFI-4920 Skipping sensitive properties when updating component properties from versioned component. This closes #2505.
Signed-off-by: Mark Payne <marka...@hotmail.com> Project: http://git-wip-us.apache.org/repos/asf/nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/a8e519b6 Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/a8e519b6 Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/a8e519b6 Branch: refs/heads/HDF-3.1-maint Commit: a8e519b652340d68c3f23c25167e92af0d37867e Parents: 87ec87a Author: Bryan Bende <bbe...@apache.org> Authored: Fri Mar 2 10:52:22 2018 -0500 Committer: Matt Gilman <matt.c.gil...@gmail.com> Committed: Tue Mar 6 09:44:39 2018 -0500 ---------------------------------------------------------------------- .../org/apache/nifi/groups/StandardProcessGroup.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/nifi/blob/a8e519b6/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/groups/StandardProcessGroup.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/groups/StandardProcessGroup.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/groups/StandardProcessGroup.java index ae9b43f..9fd5ad7 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/groups/StandardProcessGroup.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/groups/StandardProcessGroup.java @@ -4098,9 +4098,17 @@ public final class StandardProcessGroup implements ProcessGroup { private Map<String, String> populatePropertiesMap(final Map<PropertyDescriptor, String> currentProperties, final Map<String, String> proposedProperties, final Map<String, VersionedPropertyDescriptor> proposedDescriptors, final ProcessGroup group) { + // since VersionedPropertyDescriptor currently doesn't know if it is sensitive or not, + // keep track of which property descriptors are sensitive from the current properties + final Set<String> sensitiveProperties = new HashSet<>(); + final Map<String, String> fullPropertyMap = new HashMap<>(); for (final PropertyDescriptor property : currentProperties.keySet()) { - fullPropertyMap.put(property.getName(), null); + if (property.isSensitive()) { + sensitiveProperties.add(property.getName()); + } else { + fullPropertyMap.put(property.getName(), null); + } } if (proposedProperties != null) { @@ -4108,6 +4116,11 @@ public final class StandardProcessGroup implements ProcessGroup { final String propertyName = entry.getKey(); final VersionedPropertyDescriptor descriptor = proposedDescriptors.get(propertyName); + // skip any sensitive properties so we can retain whatever is currently set + if (sensitiveProperties.contains(propertyName)) { + continue; + } + String value; if (descriptor != null && descriptor.getIdentifiesControllerService()) { // Property identifies a Controller Service. So the value that we want to assign is not the value given.