Code Duplication    Length = 24-25 lines in 3 locations

DependencyInjection/ServiceLoader/MetadataDrivers.php 1 location

@@ 105-129 (lines=25) @@
102
     * {@inheritdoc}
103
     * @todo    Add low-level support for multiple drivers in the metadata factory.
104
     */
105
    public function load(array $config, ContainerBuilder $container)
106
    {
107
        foreach ($config['metadata']['drivers'] as $name => $driverConfig) {
108
            $driverName = Utility::getAliasedName(sprintf('metadata.driver.%s', $name));
109
            if (isset($driverConfig['service'])) {
110
                // Custom persister.
111
                $container->setAlias($driverName, Utility::cleanServiceName($driverConfig['service']));
112
            } else {
113
                // Built-in driver.
114
                switch ($driverConfig['type']) {
115
                    case 'yml':
116
                        $definition = $this->createYmlDriver($driverName, $driverConfig, $container);
117
                        break;
118
                    default:
119
                        throw new \RuntimeException(sprintf('Unable to create a metadata driver for type "%s"', $driverConfig['type']));
120
                }
121
                $definition->setPublic(false);
122
                $container->setDefinition($driverName, $definition);
123
            }
124
            // The library currently only supports one driver. Must break and set as default alias.
125
            $container->setAlias(Utility::getAliasedName('metadata.default_driver'), $driverName);
126
            break;
127
        }
128
        return $this;
129
    }
130
}
131

DependencyInjection/ServiceLoader/Persisters.php 1 location

@@ 57-80 (lines=24) @@
54
    /**
55
     * {@inheritdoc}
56
     */
57
    public function load(array $config, ContainerBuilder $container)
58
    {
59
        $managerDef = $container->getDefinition(Utility::getAliasedName('storage_manager'));
60
61
        foreach ($config['persisters'] as $name => $persisterConfig) {
62
            $persisterName = Utility::getAliasedName(sprintf('persister.%s', $name));
63
            if (isset($persisterConfig['service'])) {
64
                // Custom persister.
65
                $container->setAlias($persisterName, Utility::cleanServiceName($persisterConfig['service']));
66
            } else {
67
                // Built-in persister.
68
                switch ($persisterConfig['type']) {
69
                    case 'mongodb':
70
                        $definition = $this->createMongoDbPersister($persisterName, $persisterConfig, $container);
71
                        break;
72
                    default:
73
                        throw new \RuntimeException(sprintf('The persister type "%s" is currently not supported.', $persisterConfig['type']));
74
                }
75
                $container->setDefinition($persisterName, $definition);
76
            }
77
            $managerDef->addMethodCall('addPersister', [new Reference($persisterName)]);
78
        }
79
        return $this;
80
    }
81
}
82

DependencyInjection/ServiceLoader/SearchClients.php 1 location

@@ 45-68 (lines=24) @@
42
    /**
43
     * {@inheritdoc}
44
     */
45
    public function load(array $config, ContainerBuilder $container)
46
    {
47
        $managerDef = $container->getDefinition(Utility::getAliasedName('storage_manager'));
48
49
        foreach ($config['search_clients'] as $name => $clientConfig) {
50
            $clientName = Utility::getAliasedName(sprintf('search_client.%s', $name));
51
            if (isset($clientConfig['service'])) {
52
                // Custom search client.
53
                $container->setAlias($clientName, Utility::cleanServiceName($clientConfig['service']));
54
            } else {
55
                // Built-in client.
56
                switch ($clientConfig['type']) {
57
                    case 'elastic':
58
                        $definition = $this->createElasticClient($clientName, $container);
59
                        break;
60
                    default:
61
                        throw new \RuntimeException(sprintf('The search client type "%s" is currently not supported.', $clientConfig['type']));
62
                }
63
                $container->setDefinition($clientName, $definition);
64
            }
65
            $managerDef->addMethodCall('addSearchClient', [new Reference($clientName)]);
66
        }
67
        return $this;
68
    }
69
}
70