From 179e967b47920173c013d81411c6086ac1bff326 Mon Sep 17 00:00:00 2001 From: Bryan Bende Date: Fri, 2 Mar 2018 10:52:22 -0500 Subject: [PATCH] NIFI-4920 Skipping sensitive properties when updating component properties from versioned component. This closes #2505. Signed-off-by: Mark Payne --- .../apache/nifi/groups/StandardProcessGroup.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) 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 c738737eb0..41779174c4 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 populatePropertiesMap(final Map currentProperties, final Map proposedProperties, final Map 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 sensitiveProperties = new HashSet<>(); + final Map 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.