<?xml version="1.0" encoding="UTF-8" ?>

<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">

    <parameters>
        <parameter key="fos_elastica.alias_processor.class">FOS\ElasticaBundle\Index\AliasProcessor</parameter>
        <parameter key="fos_elastica.finder.class">FOS\ElasticaBundle\Finder\TransformedFinder</parameter>
        <parameter key="fos_elastica.index.class">FOS\ElasticaBundle\Elastica\Index</parameter>
        <parameter key="fos_elastica.indexable.class">FOS\ElasticaBundle\Provider\Indexable</parameter>
        <parameter key="fos_elastica.index_manager.class">FOS\ElasticaBundle\Index\IndexManager</parameter>
        <parameter key="fos_elastica.resetter.class">FOS\ElasticaBundle\Index\Resetter</parameter>
        <parameter key="fos_elastica.type.class">Elastica\Type</parameter>
    </parameters>

    <services>
        <service id="fos_elastica.alias_processor" class="%fos_elastica.alias_processor.class%" />

        <service id="fos_elastica.indexable" class="%fos_elastica.indexable.class%">
            <argument type="collection" /> <!-- array of indexable callbacks keyed by type name -->
            <argument type="service" id="service_container" />
        </service>

        <service id="fos_elastica.index_prototype" class="%fos_elastica.index.class%" factory-service="fos_elastica.client" factory-method="getIndex" abstract="true">
            <argument /> <!-- index name -->
            <!-- tagged with fos_elastica.index in the Extension -->
        </service>

        <service id="fos_elastica.type_prototype" class="%fos_elastica.type.class%" factory-method="getType" abstract="true">
            <argument /> <!-- type name -->
        </service>

        <service id="fos_elastica.index_manager" class="%fos_elastica.index_manager.class%">
            <argument /> <!-- indexes -->
            <argument type="service" id="fos_elastica.index" /> <!-- default index -->
        </service>

        <service id="fos_elastica.resetter" class="%fos_elastica.resetter.class%">
            <argument type="service" id="fos_elastica.config_manager" />
            <argument type="service" id="fos_elastica.index_manager" />
            <argument type="service" id="fos_elastica.alias_processor" />
            <argument type="service" id="fos_elastica.mapping_builder" />
            <argument type="service" id="event_dispatcher"/>
        </service>

        <!-- Abstract definition for all finders. -->
        <service id="fos_elastica.finder" class="%fos_elastica.finder.class%" public="true" abstract="true">
            <argument /> <!-- searchable -->
            <argument /> <!-- transformer -->
        </service>
    </services>
</container>
