<?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>
        <!-- Cache -->
        <service id="api_platform.cache.metadata.resource" parent="cache.system" public="false">
            <tag name="cache.pool" />
        </service>

        <!-- Resource name collection -->
        <service id="api_platform.metadata.resource.name_collection_factory.cached" class="ApiPlatform\Metadata\Resource\Factory\CachedResourceNameCollectionFactory" decorates="api_platform.metadata.resource.name_collection_factory" decoration-priority="-10" public="false">
            <argument type="service" id="api_platform.cache.metadata.resource" />
            <argument type="service" id="api_platform.metadata.resource.name_collection_factory.cached.inner" />
        </service>

        <!-- XML is the default -->
        <service id="api_platform.metadata.resource.name_collection_factory" alias="api_platform.metadata.resource.name_collection_factory.xml" />
        <service id="api_platform.metadata.resource.name_collection_factory.xml" class="ApiPlatform\Metadata\Resource\Factory\ExtractorResourceNameCollectionFactory" public="false">
            <argument type="service" id="api_platform.metadata.resource_extractor.xml" />
        </service>

        <service id="api_platform.metadata.resource.name_collection_factory.concerns" class="ApiPlatform\Metadata\Resource\Factory\ConcernsResourceNameCollectionFactory" decorates="api_platform.metadata.resource.name_collection_factory" decoration-priority="800" public="false">
            <argument>%api_platform.resource_class_directories%</argument>
            <argument type="service" id="api_platform.metadata.resource.name_collection_factory.concerns.inner" />
        </service>

        <service id="ApiPlatform\Metadata\Resource\Factory\ResourceNameCollectionFactoryInterface" alias="api_platform.metadata.resource.name_collection_factory" />
        <service id="api_platform.metadata.resource.name_collection_factory.attributes" decorates="api_platform.metadata.resource.name_collection_factory" class="ApiPlatform\Metadata\Resource\Factory\AttributesResourceNameCollectionFactory" public="false">
            <argument>%api_platform.resource_class_directories%</argument>
            <argument type="service" id="api_platform.metadata.resource.name_collection_factory.attributes.inner" />
        </service>
        <service id="api_platform.metadata.resource.name_collection_factory.class_name" decorates="api_platform.metadata.resource.name_collection_factory" class="ApiPlatform\Metadata\Resource\Factory\ClassNameResourceNameCollectionFactory" public="false">
            <argument>%api_platform.class_name_resources%</argument>
            <argument type="service" id="api_platform.metadata.resource.name_collection_factory.class_name.inner" />
        </service>
    </services>
</container>
