Github user YolandaMDavis commented on a diff in the pull request:

    https://github.com/apache/nifi/pull/511#discussion_r67215337
  
    --- Diff: 
nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiWebConfigurationContext.java
 ---
    @@ -452,8 +456,40 @@ private ComponentDetails 
getComponentConfiguration(final ProcessorDTO processor)
                         .state(processor.getState())
                         .annotationData(processorConfig.getAnnotationData())
                         .properties(processorConfig.getProperties())
    +                    .descriptors(getComponentDescriptors(processorConfig))
                         
.validateErrors(processor.getValidationErrors()).build();
             }
    +
    +        private Map<String,ComponentDescriptor> 
getComponentDescriptors(final ProcessorConfigDTO processorConfig){
    +
    +            final Map<String, ComponentDescriptor> descriptors = new 
HashMap<>();
    +
    +            for(String key : processorConfig.getDescriptors().keySet()){
    +
    +                PropertyDescriptorDTO descriptor = 
processorConfig.getDescriptors().get(key);
    +                List<PropertyDescriptorDTO.AllowableValueDTO> 
allowableValuesDTO = descriptor.getAllowableValues();
    +                Map<String,String> allowableValues = new HashMap<>();
    +
    +                if(allowableValuesDTO != null) {
    +                    for (PropertyDescriptorDTO.AllowableValueDTO value : 
allowableValuesDTO) {
    +                        allowableValues.put(value.getValue(), 
value.getDisplayName());
    +                    }
    +                }
    +
    +                ComponentDescriptor componentDescriptor = new 
ComponentDescriptor.Builder()
    +                        .name(descriptor.getName())
    +                        .displayName(descriptor.getDisplayName())
    +                        .defaultValue(descriptor.getDefaultValue())
    +                        .allowableValues(allowableValues)
    +                        .build();
    +
    +
    +                descriptors.put(key,componentDescriptor);
    +            }
    +
    +            return descriptors;
    --- End diff --
    
    @olegz this Map is populated based on whether a component (or specifically 
a processor in this case) has Property Descriptors; my thought is it's unlikely 
we'd encounter one that didn't but I'd defer to @mcgilman  for certainty. Even 
if it did return an empty map, this method is used by the 
ComponentDetails.Builder class which can handle populating component details 
with the empty value.  
    
    Also this method is used when building and returning detailed information 
of a processor's configuration to the caller (after a specific update or get 
detail info call). If for some reason a processor was created that had no 
properties the Map would simply the reflect that Processor class's 
configuration.  I believe its possible for property descriptors to be removed 
by the caller (via updateComponents and later StandardProcessorDAO) with 
subsequent calls to generate that Map reflecting the change; however I would 
hesitate to say an validation error should be thrown at this level, especially 
if a caller proactively removes a property. If there is a case where a caller 
was expecting a property to exist and then, upon retrieving details, discover 
that property is gone perhaps it would be better to throw some error at that 
level as opposed to within the class above.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to