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

    <parameters>
        <parameter key="fos_http_cache.event_listener.user_context.class">FOS\HttpCacheBundle\EventListener\UserContextSubscriber</parameter>
        <parameter key="fos_http_cache.user_context.hash_generator.class">FOS\HttpCache\UserContext\HashGenerator</parameter>
        <parameter key="fos_http_cache.user_context.role_provider.class">FOS\HttpCacheBundle\UserContext\RoleProvider</parameter>
        <parameter key="fos_http_cache.user_context.request_matcher.class">FOS\HttpCacheBundle\UserContext\RequestMatcher</parameter>
        <parameter key="fos_http_cache.user_context.logout_handler.class">FOS\HttpCacheBundle\Security\Http\Logout\ContextInvalidationLogoutHandler</parameter>
    </parameters>

    <services>
        <service id="fos_http_cache.user_context.hash_generator" class="%fos_http_cache.user_context.hash_generator.class%">
        </service>

        <service id="fos_http_cache.user_context.request_matcher" class="%fos_http_cache.user_context.request_matcher.class%">
            <argument />
            <argument />
        </service>

        <service id="fos_http_cache.event_listener.user_context" class="%fos_http_cache.event_listener.user_context.class%">
            <argument type="service" id="fos_http_cache.user_context.request_matcher" />
            <argument type="service" id="fos_http_cache.user_context.hash_generator" />
            <argument />
            <argument />
            <argument />
            <argument type="service" id="fos_http_cache.user_context.anonymous_request_matcher" />
            <tag name="kernel.event_subscriber" />
        </service>

        <service id="fos_http_cache.user_context.role_provider" class="%fos_http_cache.user_context.role_provider.class%" abstract="true">
            <argument type="service" id="security.token_storage" on-invalid="ignore" />
        </service>

        <service id="fos_http_cache.user_context.logout_handler" class="%fos_http_cache.user_context.logout_handler.class%">
            <argument type="service" id="fos_http_cache.default_proxy_client" />
            <argument />
            <argument />
        </service>

        <service id="fos_http_cache.user_context.anonymous_request_matcher" class="FOS\HttpCacheBundle\UserContext\AnonymousRequestMatcher">
            <argument type="collection" />
        </service>
    </services>
</container>
