Issues (22)

DependencyInjection/Configuration.php (1 issue)

Labels
Severity
1
<?php
2
3
namespace Bdf\QueueBundle\DependencyInjection;
4
5
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
6
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
7
use Symfony\Component\Config\Definition\ConfigurationInterface;
8
9
/**
10
 * Configuration.
11
 */
12
class Configuration implements ConfigurationInterface
13
{
14
    /**
15
     * @var bool
16
     */
17
    private $debug;
18
19
    /**
20
     * @param bool $debug Whether to use the debug mode
21
     */
22 11
    public function __construct($debug = false)
23
    {
24 11
        $this->debug = (bool) $debug;
25
    }
26
27
    /**
28
     * {@inheritDoc}
29
     */
30 11
    public function getConfigTreeBuilder()
31
    {
32 11
        $treeBuilder = new TreeBuilder('bdf_queue');
33 11
        $treeBuilder->getRootNode()
34 11
            ->children()
35 11
                ->scalarNode('default_connection')->defaultNull()->end()
36 11
                ->scalarNode('default_serializer')->defaultValue('bdf')->end()
37 11
                ->scalarNode('failer')
38 11
                    ->info('A DSN with failer configuration; Format: [memory|prime]://{connection}/{table}')
39 11
                    ->defaultValue('memory:')
40 11
                    ->cannotBeEmpty()
41 11
                ->end()
42 11
                ->append($this->getConnectionsNode())
43 11
                ->append($this->getDestinationsNode())
44 11
            ->end()
45 11
        ;
46
47 11
        return $treeBuilder;
48
    }
49
50
    /**
51
     * @return NodeDefinition
52
     */
53 11
    private function getConnectionsNode()
54
    {
55 11
        $root = (new TreeBuilder('connections'))->getRootNode();
56 11
        $root
57 11
            ->requiresAtLeastOneElement()
0 ignored issues
show
The method requiresAtLeastOneElement() does not exist on Symfony\Component\Config...\Builder\NodeDefinition. It seems like you code against a sub-type of Symfony\Component\Config...\Builder\NodeDefinition such as Symfony\Component\Config...der\ArrayNodeDefinition. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

57
            ->/** @scrutinizer ignore-call */ 
58
              requiresAtLeastOneElement()
Loading history...
58 11
            ->useAttributeAsKey('name')
59 11
            ->arrayPrototype()
60 11
            ->isRequired()
61 11
            ->beforeNormalization()
62 11
                ->ifString()
63 11
                ->then(static function ($v) {
64
                    return ['url' => $v];
65 11
                })
66 11
            ->end()
67 11
            ->children()
68 11
                ->scalarNode('url')
69 11
                    ->info('A URL with connection information; any parameter value parsed from this string will override explicitly set parameters. Format: {driver}+{vendor}://{user}:{password}@{host}:{port}/{queue}?{option}=value')
70 11
                    ->defaultNull()
71 11
                ->end()
72 11
                ->scalarNode('driver')->defaultNull()->end()
73 11
                ->scalarNode('vendor')->defaultNull()->end()
74 11
                ->scalarNode('queue')->defaultNull()->end()
75 11
                ->scalarNode('host')->defaultNull()->end()
76 11
                ->scalarNode('port')->defaultNull()->end()
77 11
                ->scalarNode('user')->defaultNull()->end()
78 11
                ->scalarNode('password')->defaultNull()->end()
79 11
                ->arrayNode('serializer')
80 11
                    ->addDefaultsIfNotSet()
81 11
                    ->beforeNormalization()
82 11
                        ->ifString()
83 11
                        ->then(static function ($v) {
84 1
                            return ['id' => $v];
85 11
                        })
86 11
                    ->end()
87 11
                    ->children()
88 11
                        ->scalarNode('id')
89 11
                            ->info('The serializer ID. This ID will be prefix by "bdf_queue.serializer". Defined values: native, bdf, bdf_json.')
90 11
                        ->end()
91 11
                        ->scalarNode('service')
92 11
                            ->info('The serializer service ID.')
93 11
                        ->end()
94 11
                    ->end()
95 11
                ->end()
96 11
                ->arrayNode('options')
97 11
                    ->useAttributeAsKey('key')
98 11
                    ->variablePrototype()->end()
99 11
                ->end()
100 11
                ->scalarNode('connection_factory')
101 11
                    ->defaultNull()
102 11
                ->end()
103 11
            ->end();
104
105 11
        return $root;
106
    }
107
108
    /**
109
     * @return NodeDefinition
110
     */
111 11
    private function getDestinationsNode()
112
    {
113 11
        $root = (new TreeBuilder('destinations'))->getRootNode();
114 11
        $root
115 11
            ->requiresAtLeastOneElement()
116 11
            ->useAttributeAsKey('name')
117 11
            ->arrayPrototype()
118 11
            ->isRequired()
119 11
            ->beforeNormalization()
120 11
                ->ifString()
121 11
                ->then(static function ($v) {
122
                    return ['url' => $v];
123 11
                })
124 11
            ->end()
125 11
            ->children()
126 11
                ->scalarNode('url')
127 11
                    ->info('A URL with destination information; Format: [queue|queues|topic]://{connection}/{queue}')
128 11
                    ->cannotBeEmpty()
129 11
                ->end()
130 11
                ->arrayNode('consumer')
131 11
                    ->children()
132 11
                        ->scalarNode('handler')
133 11
                            ->info('Set unique handler as outlet receiver')
134 11
                            ->defaultNull()->end()
135 11
                        ->scalarNode('retry')
136 11
                            ->info('Retry failed jobs (i.e. throwing an exception)')
137 11
                            ->defaultNull()->end()
138 11
                        ->scalarNode('max')
139 11
                            ->info('Limit the number of received message. When the limit is reached, the consumer is stopped')
140 11
                            ->defaultNull()->end()
141 11
                        ->scalarNode('limit')
142 11
                            ->info('Limit the received message rate')
143 11
                            ->defaultNull()->end()
144 11
                        ->scalarNode('memory')
145 11
                            ->info('Limit the total memory usage of the current runtime in bytes. When the limit is reached, the consumer is stopped')
146 11
                            ->defaultNull()->end()
147 11
                        ->booleanNode('save')
148 11
                            ->info('Store the failed messages')
149 11
                            ->defaultNull()->end()
150 11
                        ->booleanNode('no_failure')
151 11
                            ->info('Catch all exceptions to ensure that the consumer will no crash (and will silently fail)')
152 11
                            ->defaultNull()->end()
153 11
                        ->booleanNode('no_reset')
154 11
                            ->info('Disable the reset of services between messages.')
155 11
                            ->defaultNull()->end()
156 11
                        ->booleanNode('stop_when_empty')
157 11
                            ->info('Stops consumption when the destination is empty (i.e. no messages are received during the waiting duration)')
158 11
                            ->defaultNull()->end()
159 11
                        ->booleanNode('auto_handle')
160 11
                            ->info('Set auto discover as outlet receiver. The message should contain target hint.')
161 11
                            ->defaultNull()->end()
162 11
                        ->arrayNode('middlewares')
163 11
                            ->useAttributeAsKey('name')
164 11
                            ->variablePrototype()->end()
165 11
                        ->end()
166 11
                    ->end()
167 11
                ->end()
168 11
            ->end();
169
170 11
        return $root;
171
    }
172
}
173