| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 | 
							- <?php
 
- /**
 
-  * Copyright © Magento, Inc. All rights reserved.
 
-  * See COPYING.txt for license details.
 
-  */
 
- namespace Magento\Framework\MessageQueue\Publisher\Config;
 
- use Magento\Framework\MessageQueue\DefaultValueProvider;
 
- /**
 
-  * Composite reader for publisher config.
 
-  */
 
- class CompositeReader implements ReaderInterface
 
- {
 
-     /**
 
-      * Config validator.
 
-      *
 
-      * @var ValidatorInterface
 
-      */
 
-     private $validator;
 
-     /**
 
-      * Config reade list.
 
-      *
 
-      * @var ReaderInterface[]
 
-      */
 
-     private $readers;
 
-     /**
 
-      * @var DefaultValueProvider
 
-      */
 
-     private $defaultValueProvider;
 
-     /**
 
-      * Initialize dependencies.
 
-      *
 
-      * @param ValidatorInterface $validator
 
-      * @param DefaultValueProvider $defaultValueProvider
 
-      * @param ReaderInterface[] $readers
 
-      */
 
-     public function __construct(
 
-         ValidatorInterface $validator,
 
-         DefaultValueProvider $defaultValueProvider,
 
-         array $readers
 
-     ) {
 
-         $this->validator = $validator;
 
-         $this->readers = $readers;
 
-         $this->defaultValueProvider = $defaultValueProvider;
 
-     }
 
-     /**
 
-      * Read config.
 
-      *
 
-      * @param string|null $scope
 
-      * @return array
 
-      */
 
-     public function read($scope = null)
 
-     {
 
-         $result = [];
 
-         foreach ($this->readers as $reader) {
 
-             $result = array_replace_recursive($result, $reader->read($scope));
 
-         }
 
-         $result = $this->addDefaultConnection($result);
 
-         $this->validator->validate($result);
 
-         foreach ($result as $key => &$value) {
 
-             //Find enabled connection
 
-             $connection = null;
 
-             foreach ($value['connections'] as $connectionConfig) {
 
-                 if (!$connectionConfig['disabled']) {
 
-                     $connection = $connectionConfig;
 
-                     break;
 
-                 }
 
-             }
 
-             $value['connection'] = $connection;
 
-             unset($value['connections']);
 
-             $result[$key] = $value;
 
-         }
 
-         return $result;
 
-     }
 
-     /**
 
-      * Add default connection.
 
-      *
 
-      * @param array $config
 
-      * @return array
 
-      */
 
-     private function addDefaultConnection(array $config)
 
-     {
 
-         $defaultConnectionName = $this->defaultValueProvider->getConnection();
 
-         $default = [
 
-             'name' => $defaultConnectionName,
 
-             'exchange' => $this->defaultValueProvider->getExchange(),
 
-             'disabled' => false,
 
-         ];
 
-         foreach ($config as &$value) {
 
-             if (!isset($value['connections']) || empty($value['connections'])) {
 
-                 $value['connections'][$defaultConnectionName] = $default;
 
-                 continue;
 
-             }
 
-             $hasActiveConnection = false;
 
-             /** Find enabled connection */
 
-             foreach ($value['connections'] as $connectionConfig) {
 
-                 if (!$connectionConfig['disabled']) {
 
-                     $hasActiveConnection = true;
 
-                     break;
 
-                 }
 
-             }
 
-             if (!$hasActiveConnection) {
 
-                 $value['connections'][$defaultConnectionName] = $default;
 
-             }
 
-         }
 
-         return $config;
 
-     }
 
- }
 
 
  |