Skip to content

Commit 9ab16c9

Browse files
authored
Merge pull request #218 from mcg-web/protect-against-duplicated-mapping-file
Protect against duplicate mapping file
2 parents 7b05ebb + b252a1f commit 9ab16c9

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

DependencyInjection/OverblogGraphQLTypesExtension.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ class OverblogGraphQLTypesExtension extends Extension
3636
],
3737
];
3838

39+
private $treatedFiles = [];
40+
3941
const DEFAULT_TYPES_SUFFIX = '.types';
4042

4143
public function load(array $configs, ContainerBuilder $container)
@@ -49,7 +51,8 @@ public function load(array $configs, ContainerBuilder $container)
4951
public function containerPrependExtensionConfig(array $config, ContainerBuilder $container)
5052
{
5153
$typesMappings = $this->mappingConfig($config, $container);
52-
54+
// reset treated files
55+
$this->treatedFiles = [];
5356
// treats mappings
5457
foreach ($typesMappings as $params) {
5558
$this->prependExtensionConfigFromFiles($params['type'], $params['files'], $container);
@@ -63,12 +66,17 @@ public function containerPrependExtensionConfig(array $config, ContainerBuilder
6366
*/
6467
private function prependExtensionConfigFromFiles($type, $files, ContainerBuilder $container)
6568
{
66-
/** @var SplFileInfo $file */
6769
foreach ($files as $file) {
70+
$fileRealPath = $file->getRealPath();
71+
if (isset($this->treatedFiles[$fileRealPath])) {
72+
continue;
73+
}
74+
6875
$parserClass = sprintf('Overblog\\GraphQLBundle\\Config\\Parser\\%sParser', ucfirst($type));
6976

7077
$typeConfig = call_user_func($parserClass.'::parse', $file, $container);
7178
$container->prependExtensionConfig($this->getAlias(), $typeConfig);
79+
$this->treatedFiles[$file->getRealPath()] = true;
7280
}
7381
}
7482

Tests/Functional/App/config/access/config.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,7 @@ overblog_graphql:
1616
-
1717
type: yaml
1818
dir: "%kernel.root_dir%/config/access/mapping"
19+
# include the same files twice
20+
-
21+
type: yaml
22+
dir: "%kernel.root_dir%/config/access/mapping"

0 commit comments

Comments
 (0)