3
3
* Copyright © Magento, Inc. All rights reserved.
4
4
* See COPYING.txt for license details.
5
5
*/
6
-
7
6
namespace Magento \Framework \MessageQueue ;
8
7
9
8
use Magento \Framework \ObjectManagerInterface ;
@@ -25,7 +24,7 @@ class MergerFactory
25
24
* @param ObjectManagerInterface $objectManager
26
25
* @param string[] $mergers
27
26
*/
28
- public function __construct (ObjectManagerInterface $ objectManager , $ mergers )
27
+ public function __construct (ObjectManagerInterface $ objectManager , $ mergers = [] )
29
28
{
30
29
$ this ->objectManager = $ objectManager ;
31
30
$ this ->mergers = $ mergers ;
@@ -38,18 +37,11 @@ public function __construct(ObjectManagerInterface $objectManager, $mergers)
38
37
*/
39
38
public function create ($ consumerName )
40
39
{
41
- $ matchMergerWildcard = $ this ->matchConsumer ($ consumerName );
42
-
43
- if (!isset ($ this ->mergers [$ consumerName ]) && !isset ($ matchMergerWildcard )) {
40
+ if (!isset ($ this ->mergers [$ consumerName ])) {
44
41
throw new \LogicException ("Not found merger for consumer name ' {$ consumerName }' " );
45
42
}
46
43
47
- if (isset ($ this ->mergers [$ consumerName ])) {
48
- $ mergerClassName = $ this ->mergers [$ consumerName ];
49
- } else {
50
- $ mergerClassName = $ this ->mergers [$ matchMergerWildcard ];
51
- }
52
-
44
+ $ mergerClassName = $ this ->mergers [$ consumerName ];
53
45
$ merger = $ this ->objectManager ->get ($ mergerClassName );
54
46
55
47
if (!$ merger instanceof MergerInterface) {
@@ -62,40 +54,4 @@ public function create($consumerName)
62
54
63
55
return $ merger ;
64
56
}
65
-
66
- /**
67
- * @param $consumerName
68
- * @return string|null
69
- */
70
- private function matchConsumer ($ consumerName )
71
- {
72
- $ patterns = [];
73
- foreach (array_keys ($ this ->mergers ) as $ mergerFor ) {
74
- if (strpos ($ mergerFor , '* ' ) !== false || strpos ($ mergerFor , '# ' ) !== false ) {
75
- $ patterns [$ mergerFor ] = $ this ->buildWildcardPattern ($ mergerFor );
76
- }
77
- }
78
-
79
- foreach ($ patterns as $ mergerKey => $ pattern ) {
80
- if (preg_match ($ pattern , $ consumerName )) {
81
- return $ mergerKey ;
82
- }
83
- }
84
- }
85
-
86
- /**
87
- * Construct perl regexp pattern for matching topic names from wildcard key.
88
- *
89
- * @param string $wildcardKey
90
- * @return string
91
- */
92
- private function buildWildcardPattern ($ wildcardKey )
93
- {
94
- $ pattern = '/^ ' . str_replace ('. ' , '\. ' , $ wildcardKey );
95
- $ pattern = str_replace ('# ' , '.+ ' , $ pattern );
96
- $ pattern = str_replace ('* ' , '[^\.]+ ' , $ pattern );
97
- $ pattern .= strpos ($ wildcardKey , '# ' ) === strlen ($ wildcardKey ) ? '/ ' : '$/ ' ;
98
-
99
- return $ pattern ;
100
- }
101
57
}
0 commit comments