test_class.file: efm/efm-flow-designer/efm-flow-designer-framework/src/test/java/com/cloudera/cem/efm/validation/TestPropertyValidationContext.java
test_class.identifier: TestPropertyValidationContext
test_case.body: @Test
      public void testExtraProperties() {
          final Map<String, PropertyDescriptor> descriptors = new HashMap<>();
          final VersionedProcessGroup flow = new VersionedProcessGroup();
  
          final Map<String, String> properties = new HashMap<>();
          properties.put("Extra Property", "Extra Value");
  
          final ControllerServiceLookup serviceLookup = Mockito.mock(ControllerServiceLookup.class);
  
          final PropertyValidationContext dynamicNotAllowed = new PropertyValidationContext(descriptors, false);
          Collection<String> validationErrors = dynamicNotAllowed.validateProperties(properties, flow, "flow-a", serviceLookup);
          assertEquals(1, validationErrors.size());
  
          final PropertyValidationContext dynamicAllowed = new PropertyValidationContext(descriptors, true);
          validationErrors = dynamicAllowed.validateProperties(properties, flow,"flow-a", serviceLookup);
          assertTrue(validationErrors.isEmpty());
      }
test_case.class_method_signature: TestPropertyValidationContext.testExtraProperties()
test_case.full_signature: @Test public void testExtraProperties()
test_case.identifier: testExtraProperties
test_case.invocations: put mock validateProperties assertEquals size validateProperties assertTrue isEmpty
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testExtraProperties()
focal_class.declarator: logger = LoggerFactory.getLogger(PropertyValidationContext.class)
focal_class.modifier: private static final
focal_class.original_string: private static final Logger logger = LoggerFactory.getLogger(PropertyValidationContext.class);
focal_class.type: Logger
focal_class.var_name: logger
focal_class.declarator: propertyDescriptors
focal_class.modifier: private final
focal_class.original_string: private final Map<String, PropertyDescriptor> propertyDescriptors;
focal_class.type: Map<String, PropertyDescriptor>
focal_class.var_name: propertyDescriptors
focal_class.declarator: dynamicPropertiesSupported
focal_class.modifier: private final
focal_class.original_string: private final boolean dynamicPropertiesSupported;
focal_class.type: boolean
focal_class.var_name: dynamicPropertiesSupported
focal_class.file: efm/efm-flow-designer/efm-flow-designer-framework/src/main/java/com/cloudera/cem/efm/validation/PropertyValidationContext.java
focal_class.identifier: PropertyValidationContext
focal_class.class_method_signature: PropertyValidationContext.PropertyValidationContext(final Map<String, PropertyDescriptor> propertyDescriptors, final boolean dynamicPropertiesSupported)
focal_class.full_signature: public  PropertyValidationContext(final Map<String, PropertyDescriptor> propertyDescriptors, final boolean dynamicPropertiesSupported)
focal_class.identifier: PropertyValidationContext
focal_class.modifiers: public
focal_class.parameters: (final Map<String, PropertyDescriptor> propertyDescriptors, final boolean dynamicPropertiesSupported)
focal_class.signature:  PropertyValidationContext(final Map<String, PropertyDescriptor> propertyDescriptors, final boolean dynamicPropertiesSupported)
focal_class.class_method_signature: PropertyValidationContext.validateProperties(final Map<String, String> properties, final VersionedProcessGroup flow, final String flowId,
                                                      final ControllerServiceLookup controllerServiceLookup)
focal_class.full_signature: protected Collection<String> validateProperties(final Map<String, String> properties, final VersionedProcessGroup flow, final String flowId,
                                                      final ControllerServiceLookup controllerServiceLookup)
focal_class.identifier: validateProperties
focal_class.modifiers: protected
focal_class.parameters: (final Map<String, String> properties, final VersionedProcessGroup flow, final String flowId,
                                                      final ControllerServiceLookup controllerServiceLookup)
focal_class.return: Collection<String>
focal_class.signature: Collection<String> validateProperties(final Map<String, String> properties, final VersionedProcessGroup flow, final String flowId,
                                                      final ControllerServiceLookup controllerServiceLookup)
focal_class.class_method_signature: PropertyValidationContext.validateNoExtraProperties(final Map<String, String> properties, final Collection<String> validationErrors)
focal_class.full_signature: private void validateNoExtraProperties(final Map<String, String> properties, final Collection<String> validationErrors)
focal_class.identifier: validateNoExtraProperties
focal_class.modifiers: private
focal_class.parameters: (final Map<String, String> properties, final Collection<String> validationErrors)
focal_class.return: void
focal_class.signature: void validateNoExtraProperties(final Map<String, String> properties, final Collection<String> validationErrors)
focal_class.class_method_signature: PropertyValidationContext.computePropertyValidationErrors(final Map<String, String> properties, final Collection<String> validationErrors)
focal_class.full_signature: private void computePropertyValidationErrors(final Map<String, String> properties, final Collection<String> validationErrors)
focal_class.identifier: computePropertyValidationErrors
focal_class.modifiers: private
focal_class.parameters: (final Map<String, String> properties, final Collection<String> validationErrors)
focal_class.return: void
focal_class.signature: void computePropertyValidationErrors(final Map<String, String> properties, final Collection<String> validationErrors)
focal_class.class_method_signature: PropertyValidationContext.validateControllerServiceReferences(final Map<String, String> properties, final VersionedProcessGroup flow, final String flowId,
                                                       final ControllerServiceLookup controllerServiceLookup, final Collection<String> validationErrors)
focal_class.full_signature: private void validateControllerServiceReferences(final Map<String, String> properties, final VersionedProcessGroup flow, final String flowId,
                                                       final ControllerServiceLookup controllerServiceLookup, final Collection<String> validationErrors)
focal_class.identifier: validateControllerServiceReferences
focal_class.modifiers: private
focal_class.parameters: (final Map<String, String> properties, final VersionedProcessGroup flow, final String flowId,
                                                       final ControllerServiceLookup controllerServiceLookup, final Collection<String> validationErrors)
focal_class.return: void
focal_class.signature: void validateControllerServiceReferences(final Map<String, String> properties, final VersionedProcessGroup flow, final String flowId,
                                                       final ControllerServiceLookup controllerServiceLookup, final Collection<String> validationErrors)
focal_class.class_method_signature: PropertyValidationContext.isServiceOfCorrectType(final VersionedControllerService service, final DefinedType expectedType)
focal_class.full_signature: private boolean isServiceOfCorrectType(final VersionedControllerService service, final DefinedType expectedType)
focal_class.identifier: isServiceOfCorrectType
focal_class.modifiers: private
focal_class.parameters: (final VersionedControllerService service, final DefinedType expectedType)
focal_class.return: boolean
focal_class.signature: boolean isServiceOfCorrectType(final VersionedControllerService service, final DefinedType expectedType)
focal_class.class_method_signature: PropertyValidationContext.findControllerService(final VersionedProcessGroup group, final String serviceId)
focal_class.full_signature: private Optional<VersionedControllerService> findControllerService(final VersionedProcessGroup group, final String serviceId)
focal_class.identifier: findControllerService
focal_class.modifiers: private
focal_class.parameters: (final VersionedProcessGroup group, final String serviceId)
focal_class.return: Optional<VersionedControllerService>
focal_class.signature: Optional<VersionedControllerService> findControllerService(final VersionedProcessGroup group, final String serviceId)
focal_class.class_method_signature: PropertyValidationContext.getDisplayName(final PropertyDescriptor descriptor)
focal_class.full_signature: private String getDisplayName(final PropertyDescriptor descriptor)
focal_class.identifier: getDisplayName
focal_class.modifiers: private
focal_class.parameters: (final PropertyDescriptor descriptor)
focal_class.return: String
focal_class.signature: String getDisplayName(final PropertyDescriptor descriptor)
focal_class.class_method_signature: PropertyValidationContext.getPropertyValue(final PropertyDescriptor descriptor, final Map<String, String> properties)
focal_class.full_signature: private String getPropertyValue(final PropertyDescriptor descriptor, final Map<String, String> properties)
focal_class.identifier: getPropertyValue
focal_class.modifiers: private
focal_class.parameters: (final PropertyDescriptor descriptor, final Map<String, String> properties)
focal_class.return: String
focal_class.signature: String getPropertyValue(final PropertyDescriptor descriptor, final Map<String, String> properties)
focal_method.body: protected Collection<String> validateProperties(final Map<String, String> properties, final VersionedProcessGroup flow, final String flowId,
                                                      final ControllerServiceLookup controllerServiceLookup) {
          final List<String> validationErrors = new ArrayList<>();
  
          computePropertyValidationErrors(properties, validationErrors);
          validateNoExtraProperties(properties, validationErrors);
          validateControllerServiceReferences(properties, flow, flowId, controllerServiceLookup, validationErrors);
  
          return validationErrors;
      }
focal_method.class_method_signature: PropertyValidationContext.validateProperties(final Map<String, String> properties, final VersionedProcessGroup flow, final String flowId,
                                                      final ControllerServiceLookup controllerServiceLookup)
focal_method.full_signature: protected Collection<String> validateProperties(final Map<String, String> properties, final VersionedProcessGroup flow, final String flowId,
                                                      final ControllerServiceLookup controllerServiceLookup)
focal_method.identifier: validateProperties
focal_method.invocations: computePropertyValidationErrors validateNoExtraProperties validateControllerServiceReferences
focal_method.modifiers: protected
focal_method.parameters: (final Map<String, String> properties, final VersionedProcessGroup flow, final String flowId,
                                                      final ControllerServiceLookup controllerServiceLookup)
focal_method.return: Collection<String>
focal_method.signature: Collection<String> validateProperties(final Map<String, String> properties, final VersionedProcessGroup flow, final String flowId,
                                                      final ControllerServiceLookup controllerServiceLookup)