<?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>
        <defaults public="false" />

        <service id="api_platform.json_schema.schema_factory" class="ApiPlatform\JsonSchema\SchemaFactory">
            <argument type="service" id="api_platform.metadata.resource.metadata_collection_factory" />
            <argument type="service" id="api_platform.metadata.property.name_collection_factory" />
            <argument type="service" id="api_platform.metadata.property.metadata_factory" />
            <argument type="service" id="api_platform.name_converter" on-invalid="ignore" />
            <argument type="service" id="api_platform.resource_class_resolver" />
            <argument on-invalid="ignore">%api_platform.jsonschema_formats%</argument>
            <argument type="service" id="api_platform.json_schema.definition_name_factory" on-invalid="ignore"/>
        </service>
        <service id="ApiPlatform\JsonSchema\SchemaFactoryInterface" alias="api_platform.json_schema.schema_factory" />

        <service id="api_platform.json_schema.json_schema_generate_command" class="ApiPlatform\JsonSchema\Command\JsonSchemaGenerateCommand">
            <argument type="service" id="api_platform.json_schema.schema_factory"/>
            <argument>%api_platform.formats%</argument>
            <tag name="console.command" />
        </service>

        <service id="api_platform.json_schema.metadata.property.metadata_factory.schema" decorates="api_platform.metadata.property.metadata_factory" decoration-priority="10" class="ApiPlatform\JsonSchema\Metadata\Property\Factory\SchemaPropertyMetadataFactory" public="false">
            <argument type="service" id="api_platform.resource_class_resolver" />
            <argument type="service" id="api_platform.json_schema.metadata.property.metadata_factory.schema.inner" />
        </service>

        <service id="api_platform.json_schema.backward_compatible_schema_factory" decorates="api_platform.json_schema.schema_factory" decoration-priority="-2" class="ApiPlatform\JsonSchema\BackwardCompatibleSchemaFactory">
            <argument type="service" id="api_platform.json_schema.backward_compatible_schema_factory.inner" />
        </service>

        <service id="api_platform.json_schema.definition_name_factory" class="ApiPlatform\JsonSchema\DefinitionNameFactory">
            <argument on-invalid="ignore">%api_platform.jsonschema_formats%</argument>
        </service>

    </services>

</container>
