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

scottyaslan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi.git

commit 10b4f6fd89cfb7f996a9ab1258eee7c8e00f6a8a
Author: Rob Fellows <[email protected]>
AuthorDate: Tue Sep 3 16:57:47 2019 -0400

    NIFI-6506 - review feedback
    * fixed issues converting sensitive props to parameters
    * only include parameter value if it has changed (even for non-sensitive 
params)
    * do not allow null parameter values when editing parameters.
---
 .../jquery/propertytable/jquery.propertytable.js   |  9 +++--
 .../webapp/js/nf/canvas/nf-parameter-contexts.js   | 47 +++++++++++++++-------
 2 files changed, 37 insertions(+), 19 deletions(-)

diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js
index 7709824..c4050d6 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/jquery/propertytable/jquery.propertytable.js
@@ -1578,15 +1578,16 @@
 
                     if (options.readOnly !== true && 
!_.isNil(parameterContextId)) {
                         var descriptors = table.data('descriptors');
-                        var propertyDescriptor = 
descriptors[property.displayName];
+                        var propertyDescriptor = 
descriptors[property.property];
 
                         
nfParameterContexts.convertPropertyToParameter(property, propertyDescriptor, 
parameterContextId)
                             .done(function (parameter) {
-                                // set the property value to the reference the 
parameter that was created
-                                propertyData.updateItem(property.id, 
$.extend(property, {
+                                var updatedItem = _.extend({}, property, {
                                     previousValue: property.value,
                                     value: '#{' + parameter.name + '}'
-                                }));
+                                });
+                                // set the property value to the reference the 
parameter that was created
+                                propertyData.updateItem(property.id, 
updatedItem);
                             });
                     }
                 }
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
index 49aa47e..3fdc7f0 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-parameter-contexts.js
@@ -814,12 +814,23 @@
      */
     var serializeParameter = function (originalParameter) {
         var name = $.trim($('#parameter-name').val());
+        var value = $('#parameter-value-field').val();
         var isEmptyStringSet = 
$('#parameter-set-empty-string-field').hasClass('checkbox-checked');
-
-        var serializedValue = serializeValue($('#parameter-value-field'), 
originalParameter, isEmptyStringSet);
         var description = $('#parameter-description-field').val();
         var isSensitive = 
$('#parameter-dialog').find('input[name="sensitive"]:checked').val() === 
'sensitive' ? true : false;
 
+        var parameter = {
+            name: name,
+            value: value,
+            description: description,
+            sensitive: isSensitive,
+            isEmptyStringSet: isEmptyStringSet,
+            previousValue: null,
+            isNew: true
+        };
+
+        var serializedValue = serializeValue($('#parameter-value-field'), 
_.isNil(originalParameter) ? parameter : originalParameter, isEmptyStringSet);
+
         return {
             name: name,
             value: serializedValue.value,
@@ -859,6 +870,14 @@
         // validate the parameter is not a duplicate
         var matchingParameter = _.find(existingParameters, { name: 
parameter.name });
 
+        // If in edit mode, the value can not be null
+        if (editMode === true && _.isNil(parameter.value)) {
+            nfDialog.showOkDialog({
+                headerText: 'Configuration Error',
+                dialogContent: 'The value of the parameter must be specified.'
+            });
+        }
+
         // Valid if no duplicate is found or it is edit mode and a matching 
parameter was found
         if (_.isNil(matchingParameter) || (editMode === true && 
!_.isNil(matchingParameter))) {
             return true;
@@ -885,7 +904,7 @@
 
     var serializeValue = function (input, parameter, isChecked) {
         var serializedValue;
-        var hasChanged = true;
+        var hasChanged = parameter.value !== parameter.previousValue;
 
         var value = input.val();
         if (!nfCommon.isBlank(value)) {
@@ -938,7 +957,7 @@
                 isEmptyStringSet: serializedParam.isEmptyStringSet,
                 isNew: originalParameter.isNew,
                 hasValueChanged: serializedParam.hasValueChanged,
-                isModified: serializedParam.value !== originalParameter.value 
|| serializedParam.description !== originalParameter.description
+                isModified: serializedParam.hasValueChanged || 
serializedParam.description !== originalParameter.description
             });
 
             // update row for the parameter
@@ -1013,10 +1032,11 @@
                         text: '#ffffff'
                     },
                     disabled: function () {
-                        if ($('#parameter-context-name').val() !== '') {
-                            return false;
+                        var param = serializeParameter();
+                        if (_.isEmpty(param.name) || (_.isNil(param.value) && 
!param.isEmptyStringSet)) {
+                            return true;
                         }
-                        return true;
+                        return false;
                     },
                     handler: {
                         click: function () {
@@ -1400,7 +1420,7 @@
                 return '<span class="table-cell sensitive">Sensitive value 
set</span>';
             } else if (value === '') {
                 return '<span class="table-cell blank">Empty string 
set</span>';
-            } else if (nfCommon.isNull(value)) {
+            } else if (_.isNil(value)) {
                 return '<span class="unset">No value set</span>';
             } else {
                 return nfCommon.escapeHtml(value);
@@ -1576,7 +1596,7 @@
                             },
                             disabled: function () {
                                 var param = serializeParameter(parameter);
-                                return param.value === parameter.value && 
param.description === parameter.description;
+                                return !param.hasValueChanged && 
param.description === parameter.description;
                             },
                             handler: {
                                 click: function () {
@@ -1849,14 +1869,10 @@
                     var param = serializeParameter();
                     var isUpdatingParameterContext = 
$('#parameter-context-updating-status').hasClass('show-status');
 
-                    if (isUpdatingParameterContext) {
+                    if (isUpdatingParameterContext || _.isEmpty(param.name)) {
                         return true;
                     }
-
-                    if (param.name !== '') {
-                        return false;
-                    }
-                    return true;
+                    return false;
                 },
                 handler: {
                     click: callbacks.onApply
@@ -2477,6 +2493,7 @@
                         if (nfCommon.isSensitiveProperty(propertyDescriptor)) {
                             
$('#parameter-sensitive-radio-button').prop('checked', true);
                             
$('#parameter-not-sensitive-radio-button').prop('checked', false);
+                            $('#parameter-value-field').val(null);
                         } else {
                             
$('#parameter-sensitive-radio-button').prop('checked', false);
                             
$('#parameter-not-sensitive-radio-button').prop('checked', true);

Reply via email to