/**
  * @param MessageHandler $messageHandler
  * @param Message $message
  * @return MessageIsNotManageable
  */
 public static function byMessageHandler(MessageHandler $messageHandler, Message $message)
 {
     $message = sprintf("Message %s -> %s is not manageable by message handler %s: %s", $message->messageType()->toString(), $message->processingType()->typeDescription()->label(), $messageHandler->name(), $messageHandler->lastValidationError());
     return new self($message);
 }
 /**
  * @param MessageHandler $messageHandler
  */
 private function syncMessageHandler(MessageHandler $messageHandler)
 {
     $additionalData = $messageHandler->additionalData();
     if ($messageHandler->preferredProcessingType()) {
         $additionalData['preferred_type'] = $messageHandler->preferredProcessingType()->of();
     }
     $additionalData['node_name'] = $messageHandler->processingNodeName()->toString();
     $additionalData['icon'] = $messageHandler->icon();
     $additionalData['icon_type'] = $messageHandler->iconType();
     $additionalData['metadata'] = $messageHandler->processingMetadata()->toArray();
     $additionalData['ui_metadata_riot_tag'] = $messageHandler->metadataRiotTag();
     $allowedTypes = $messageHandler->supportedProcessingTypes()->areAllTypesSupported() ? MessageHandler\ProcessingTypes::SUPPORT_ALL : $messageHandler->supportedProcessingTypes()->typeList();
     if ($messageHandler->isKnownInProcessingSystem()) {
         $this->commandBus->dispatch(ChangeConnectorConfig::ofConnector($messageHandler->processingId()->toString(), array_merge(['name' => $messageHandler->name(), 'allowed_messages' => $this->determineAllowedMessages($messageHandler), 'allowed_types' => $allowedTypes], $additionalData), $this->processingConfigLocation));
     } else {
         $this->commandBus->dispatch(AddConnectorToConfig::fromDefinition($messageHandler->processingId()->toString(), $messageHandler->name(), $this->determineAllowedMessages($messageHandler), $allowedTypes, $this->processingConfigLocation, $additionalData));
     }
 }