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

<config xmlns="http://thelia.net/schema/dic/config"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://thelia.net/schema/dic/config http://thelia.net/schema/dic/config/thelia-1.0.xsd">

    <parameters>
        <parameter key="router.request_context.class">Symfony\Component\Routing\RequestContext</parameter>
        <parameter key="router.null_generator.class">Thelia\Routing\NullUrlGenerator</parameter>
        <parameter key="router.dynamicRouter.class">Symfony\Cmf\Component\Routing\DynamicRouter</parameter>
        <parameter key="router.chainRouter.class">Symfony\Cmf\Component\Routing\ChainRouter</parameter>
        <parameter key="router.class">Symfony\Component\Routing\Router</parameter>
        <parameter key="router.xmlFileName">routing.xml</parameter>
    </parameters>

    <services>
        <service id="Thelia\Core\EventListener\ViewListener">
            <argument type="service" id="thelia.parser"/>
            <argument type="service" id="thelia.template_helper"/>
            <argument type="service" id="request_stack"/>
            <argument type="service" id="event_dispatcher"/>
            <argument type="service" id="router.chainRequest"/>
            <tag name="kernel.event_subscriber"/>
        </service>
        <service id="thelia.listener.view" alias="Thelia\Core\EventListener\ViewListener"/>

        <service id="controller.default" class="Thelia\Controller\DefaultController" public="true"/>

        <service id="thelia.admin.base_controller" class="Thelia\Admin\Controller\BaseAdminController">
       		<argument type="service" id="thelia.parser"/>
        </service>


        <service id="request.context" class="%router.request_context.class%" public="true" />


        <service id="router.fileLocator" class="Symfony\Component\Config\FileLocator" public="true">
            <argument>%thelia.core_dir%/Config/Resources/routing</argument>
        </service>

        <service id="router.xmlLoader" class="Symfony\Component\Routing\Loader\XmlFileLoader">
            <argument type="service" id="router.fileLocator"/>
        </service>

        <service id="router.module.fileLocator" class="Symfony\Component\Config\FileLocator">
            <argument>%thelia.module_dir%</argument>
        </service>

        <service id="router.module.xmlLoader" class="Symfony\Component\Routing\Loader\XmlFileLoader">
            <argument type="service" id="router.module.fileLocator"/>
        </service>

        <service id="router.admin" class="%router.class%" public="true">
            <argument type="service" id="router.xmlLoader"/>
            <argument>admin.xml</argument>
            <argument type="collection">
                <argument key="cache_dir">%kernel.cache_dir%</argument>
                <argument key="debug">%kernel.debug%</argument>
            </argument>
            <argument type="service" id="request.context"/>
            <tag name="router.register" priority="0"/>
        </service>

        <service id="router.default" class="Symfony\Bundle\FrameworkBundle\Routing\Router">
          <argument type="service" id="service_container" />
          <argument>%router.resource%</argument>
          <argument type="collection">
            <argument key="cache_dir">%kernel.cache_dir%</argument>
            <argument key="debug">%kernel.debug%</argument>
            <argument key="generator_class">Symfony\Component\Routing\Generator\CompiledUrlGenerator</argument>
            <argument key="generator_dumper_class">Symfony\Component\Routing\Generator\Dumper\CompiledUrlGeneratorDumper</argument>
            <argument key="matcher_class">Symfony\Bundle\FrameworkBundle\Routing\RedirectableCompiledUrlMatcher</argument>
            <argument key="matcher_dumper_class">Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherDumper</argument>
            <argument key="resource_type">service</argument>
          </argument>
        </service>

          <service id="router.annotation" class="Thelia\Core\Routing\AnnotationRouter" public="true">
              <argument type="service" id="router.fileLocator"/>
              <tag name="router.register" priority="255"/>
          </service>

          <service id="router.rewrite" class="Thelia\Core\Routing\RewritingRouter">
              <tag name="router.register" priority="255"/>
          </service>

          <service id="router.chainRequest" class="%router.chainrouter.class%">
              <call method="setContext">
                  <argument type="service" id="request.context"/>
              </call>
          </service>

          <service id="listener.router" class="Symfony\Component\HttpKernel\EventListener\RouterListener">
              <tag name="kernel.event_subscriber"/>
              <argument type="service" id="router.chainRequest"/>
              <argument type="service" id="request_stack"/>
          </service>
    </services>

</config>
