<?xml version="1.0" ?>

<container xmlns="http://symfony.com/schema/dic/services"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">

    <services>
        <service id="Shopware\Core\System\SystemConfig\Validation\SystemConfigValidator">
            <argument type="service" id="Shopware\Core\System\SystemConfig\Service\ConfigurationService"/>
            <argument type="service" id="Shopware\Core\Framework\Validation\DataValidator"></argument>

            <tag name="shopware.system_config.validation" />
        </service>

        <service id="Shopware\Core\System\SystemConfig\SystemConfigDefinition">
            <tag name="shopware.entity.definition"/>
        </service>

        <service id="kernel.bundles" class="Iterator">
            <factory service="kernel" method="getBundles"/>
        </service>

        <service id="Shopware\Core\System\SystemConfig\Service\AppConfigReader">
            <argument type="service" id="Shopware\Core\Framework\App\Source\SourceResolver"/>
            <argument type="service" id="Shopware\Core\System\SystemConfig\Util\ConfigReader"/>
        </service>

        <service id="Shopware\Core\System\SystemConfig\Service\ConfigurationService">
            <argument type="service" id="kernel.bundles" />
            <argument type="service" id="Shopware\Core\System\SystemConfig\Util\ConfigReader"/>
            <argument type="service" id="Shopware\Core\System\SystemConfig\Service\AppConfigReader"/>
            <argument type="service" id="app.repository"/>
            <argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService"/>
        </service>

        <service id="Shopware\Core\System\SystemConfig\Util\ConfigReader"/>

        <service id="Shopware\Core\System\SystemConfig\Api\SystemConfigController" public="true">
            <argument type="service" id="Shopware\Core\System\SystemConfig\Service\ConfigurationService"/>
            <argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService"/>
            <argument type="service" id="Shopware\Core\System\SystemConfig\Validation\SystemConfigValidator" />

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Core\System\SystemConfig\SystemConfigService" public="true" lazy="true">
            <argument type="service" id="Doctrine\DBAL\Connection"/>
            <argument type="service" id="Shopware\Core\System\SystemConfig\Util\ConfigReader" />
            <argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigLoader" />
            <argument type="service" id="event_dispatcher"/>
            <argument type="service" id="Shopware\Core\System\SystemConfig\SymfonySystemConfigService"/>
            <argument type="service" id="Shopware\Core\Framework\Adapter\Cache\CacheTagCollector"/>
            <tag name="kernel.reset" method="reset"/>
        </service>

        <service id="Shopware\Core\System\SystemConfig\Store\MemoizedSystemConfigStore">
            <tag name="kernel.event_subscriber"/>
            <tag name="kernel.reset" method="reset"/>
        </service>

        <service id="Shopware\Core\System\SystemConfig\SymfonySystemConfigService">
            <argument>%shopware.system_config%</argument>
        </service>

        <service id="Shopware\Core\System\SystemConfig\SystemConfigLoader">
            <argument type="service" id="Doctrine\DBAL\Connection"/>
            <argument type="service" id="Symfony\Component\HttpKernel\KernelInterface"/>
        </service>

        <service id="Shopware\Core\System\SystemConfig\ConfiguredSystemConfigLoader" decorates="Shopware\Core\System\SystemConfig\SystemConfigLoader" decoration-priority="-1500">
            <argument type="service" id=".inner"/>
            <argument type="service" id="Shopware\Core\System\SystemConfig\SymfonySystemConfigService"/>
        </service>

        <service id="Shopware\Core\System\SystemConfig\CachedSystemConfigLoader" decorates="Shopware\Core\System\SystemConfig\SystemConfigLoader" decoration-priority="-1000">
            <argument type="service" id="Shopware\Core\System\SystemConfig\CachedSystemConfigLoader.inner"/>
            <argument type="service" id="cache.object"/>
        </service>

        <service id="Shopware\Core\System\SystemConfig\MemoizedSystemConfigLoader" decorates="Shopware\Core\System\SystemConfig\SystemConfigLoader" decoration-priority="-2000">
            <argument type="service" id="Shopware\Core\System\SystemConfig\MemoizedSystemConfigLoader.inner"/>
            <argument type="service" id="Shopware\Core\System\SystemConfig\Store\MemoizedSystemConfigStore"/>
        </service>

        <service id="Shopware\Core\System\SystemConfig\Facade\SystemConfigFacadeHookFactory" public="true">
            <argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService" />
            <argument type="service" id="Doctrine\DBAL\Connection"/>
        </service>

        <service id="Shopware\Core\System\SystemConfig\Command\ConfigGet">
            <argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService"/>

            <tag name="console.command"/>
        </service>

        <service id="Shopware\Core\System\SystemConfig\Command\ConfigSet">
            <argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService"/>

            <tag name="console.command"/>
        </service>
    </services>
</container>
