<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd"
       default-autowire="constructor">
  <bean class="jetbrains.buildServer.nuget.feed.server.controllers.NuGetFeedController"/>
  <bean class="jetbrains.buildServer.nuget.feed.server.controllers.NuGetFeedProviderImpl"/>
  <bean class="jetbrains.buildServer.nuget.feed.server.controllers.NuGetCsrfCheck"/>

  <bean class="jetbrains.buildServer.nuget.feed.server.NuGetFeedAuthParametersProvider"/>
  <bean class="jetbrains.buildServer.nuget.feed.server.NuGetFeedParametersProvider"/>
  <bean class="jetbrains.buildServer.nuget.feed.server.NuGetFeedParametersDescription"/>
  <bean class="jetbrains.buildServer.nuget.feed.server.NuGetFeedPasswordProvider"/>

  <bean class="jetbrains.buildServer.nuget.feed.server.controllers.requests.RecentNuGetRequests"/>
  <bean class="jetbrains.buildServer.nuget.feed.server.controllers.requests.NuGetFeedRequestsController"/>

  <bean class="jetbrains.buildServer.nuget.feed.server.impl.NuGetServerSettingsImpl"/>

  <bean class="jetbrains.buildServer.nuget.feed.server.index.impl.NuGetBuildFeedsProviderImpl"/>
  <bean class="jetbrains.buildServer.nuget.feed.server.index.impl.NuGetBuildMetadataProviderImpl"/>
  <bean class="jetbrains.buildServer.nuget.feed.server.index.impl.NuGetArtifactsMetadataProvider"/>
  <bean class="jetbrains.buildServer.nuget.feed.server.index.NuGetFeedFactoryImpl">
    <constructor-arg>
      <list>
        <bean class="jetbrains.buildServer.nuget.feed.server.index.impl.transform.SamePackagesFilterTransformation"/>
        <bean class="jetbrains.buildServer.nuget.feed.server.index.impl.transform.OldFormatConvertTransformation"/>
        <bean class="jetbrains.buildServer.nuget.feed.server.index.impl.transform.AccessCheckTransformation"/>
        <bean class="jetbrains.buildServer.nuget.feed.server.index.impl.transform.ComputeExternalBuildIdTransformation"/>
        <bean class="jetbrains.buildServer.nuget.feed.server.index.impl.transform.DownloadUrlComputationTransformation"/>
      </list>
    </constructor-arg>
  </bean>
  <bean class="jetbrains.buildServer.nuget.feed.server.index.NuGetPackagesIndexer"/>
  <bean class="jetbrains.buildServer.nuget.common.index.NuGetPackageAnalyzer"/>

  <!-- UI -->
  <bean class="jetbrains.buildServer.nuget.feed.server.tab.PackagesSettingsController"/>
  <bean class="jetbrains.buildServer.nuget.feed.server.tab.PackagesController"/>
  <bean class="jetbrains.buildServer.nuget.feed.server.NuGetDownloadedPackagesTab"/>

  <!--stats -->
  <bean class="jetbrains.buildServer.nuget.feed.server.NuGetFeedUsageStatisticsProvider"/>

  <bean class="jetbrains.buildServer.nuget.feed.server.cache.ResponseCacheImpl"/>
  <bean class="jetbrains.buildServer.nuget.feed.server.odata4j.ODataRequestHandler"/>
  <bean class="jetbrains.buildServer.nuget.feed.server.olingo.OlingoRequestHandler"/>
  <bean class="jetbrains.buildServer.nuget.feed.server.json.JsonRequestHandler"/>
  <bean class="jetbrains.buildServer.nuget.feed.server.json.JsonServiceIndexHandler"/>
  <bean class="jetbrains.buildServer.nuget.feed.server.json.JsonSearchQueryHandler"/>
  <bean class="jetbrains.buildServer.nuget.feed.server.json.JsonRegistrationHandler"/>
  <bean class="jetbrains.buildServer.nuget.feed.server.json.JsonPackageContentHandler"/>
  <bean class="jetbrains.buildServer.nuget.feed.server.json.JsonAutocompleteHandler"/>
  <bean class="jetbrains.buildServer.nuget.feed.server.controllers.upload.PackageUploadHandler"/>
  <bean class="jetbrains.buildServer.nuget.feed.server.controllers.upload.NuGetFeedUploadMetadataStdHandlerImpl"/>
  <bean class="jetbrains.buildServer.nuget.feed.server.controllers.upload.NuGetFeedStdUploadHandler"/>

  <bean class="jetbrains.buildServer.nuget.feed.server.controllers.serviceFeed.NuGetServiceFeedHandlerImpl">
    <constructor-arg>
      <bean class="jetbrains.buildServer.nuget.feed.server.controllers.upload.PackageUploadHandler">
        <constructor-arg>
          <bean class="jetbrains.buildServer.nuget.feed.server.controllers.serviceFeed.upload.NuGetServiceFeedUploadMetadataHandlerImpl"/>
        </constructor-arg>
      </bean>
    </constructor-arg>
  </bean>

  <bean class="jetbrains.buildServer.nuget.feed.server.PermissionChecker"/>

  <bean class="jetbrains.buildServer.nuget.feed.server.TriggerUrlSelfPostProcessor"/>

  <bean class="jetbrains.buildServer.nuget.feed.server.NuGetAsyncTaskExecutor"/>
  <bean class="jetbrains.buildServer.nuget.feed.server.json.JsonPackageSourceFactoryImpl"/>
  <bean class="jetbrains.buildServer.nuget.feed.server.json.JsonPackageAdapterFactoryImpl"/>

  <bean class="jetbrains.buildServer.nuget.feed.server.json.LoggingInterceptor" scope="prototype"/>
  <bean class="jetbrains.buildServer.nuget.feed.server.json.TimeoutCallableInterceptor" scope="prototype"/>
  <bean class="jetbrains.buildServer.nuget.feed.server.json.CallableInterceptorRegistrar"/>

  <mvc:annotation-driven/>
  <context:component-scan base-package="jetbrains.buildServer.nuget.feed.server.json"/>
</beans>
