<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
       default-autowire="constructor">

  <import resource="classpath*:META-INF/spring-nuget-common.xml"/>

  <bean class="jetbrains.buildServer.nuget.agent.util.impl.SystemInformationImpl"/>
  <bean class="jetbrains.buildServer.nuget.agent.util.impl.CommandLineExecutorImpl"/>
  <bean class="jetbrains.buildServer.nuget.agent.util.impl.NuGetCommandLineProvider"/>
  <bean class="jetbrains.buildServer.nuget.agent.util.impl.NuGetCommandBuildProcessFactory"/>
  <bean class="jetbrains.buildServer.nuget.agent.util.sln.impl.SolutionParserImpl"/>

  <bean class="jetbrains.buildServer.nuget.agent.commands.impl.CommandFactoryImpl"/>
  <bean class="jetbrains.buildServer.nuget.agent.commands.impl.LoggingNuGetActionFactoryImpl">
    <constructor-arg>
      <bean class="jetbrains.buildServer.nuget.agent.commands.impl.NuGetActionFactoryImpl">
        <constructor-arg>
          <bean class="jetbrains.buildServer.nuget.agent.util.impl.NuGetCommandBuildProcessFactory"/>
        </constructor-arg>
      </bean>
    </constructor-arg>
  </bean>

  <bean class="jetbrains.buildServer.nuget.agent.parameters.impl.PackagesParametersFactoryImpl"/>
  <bean class="jetbrains.buildServer.nuget.agent.parameters.impl.PackageSourceManagerImpl"/>

  <bean class="jetbrains.buildServer.nuget.agent.dependencies.impl.PackageUsagesImpl"/>
  <bean class="jetbrains.buildServer.nuget.agent.dependencies.impl.NuGetPackagesConfigParser" />
  <bean class="jetbrains.buildServer.nuget.agent.dependencies.impl.NuGetPackagesCollectorImpl"/>


  <bean class="jetbrains.buildServer.nuget.agent.runner.EnabledPackagesOptionSetter"/>
  <bean class="jetbrains.buildServer.nuget.agent.runner.credentials.CredentialProviderPropertiesExtension"/>
  <bean class="jetbrains.buildServer.nuget.agent.runner.credentials.MsBuildCredentialsPathProvider"/>
  <bean class="jetbrains.buildServer.nuget.agent.runner.credentials.NuGetCredentialsPathProvider"/>
  <bean class="jetbrains.buildServer.nuget.agent.runner.credentials.NuGetCredentialsProvider"/>

  <bean class="jetbrains.buildServer.nuget.agent.exec.AgentNuGetTeamCityProvider"/>

  <bean class="jetbrains.buildServer.nuget.agent.NuGetCacheCleaner"/>

  <!-- Packages indexer -->
  <bean class="jetbrains.buildServer.nuget.common.index.NuGetPackageAnalyzer"/>
  <bean class="jetbrains.buildServer.nuget.agent.index.NuGetPackagePublisher">
    <constructor-arg ref="webPublisher"/> <!-- from parent context config -->
  </bean>
  <bean class="jetbrains.buildServer.nuget.agent.index.NuGetPackagePathProvider"/>
  <bean class="jetbrains.buildServer.nuget.agent.index.NugetPackageIndexer"/>

  <bean class="jetbrains.buildServer.nuget.agent.serviceMessages.NuGetPackageServiceFeedPublisherImpl"/>
  <bean class="jetbrains.buildServer.nuget.agent.serviceMessages.NuGetPackageServiceFeedUrlProviderImpl"/>
  <bean class="jetbrains.buildServer.nuget.agent.serviceMessages.NuGetPackageServiceFeedTransportProviderImpl"/>
  <bean class="jetbrains.buildServer.nuget.agent.serviceMessages.PublishPackageServiceMessageHandler"/>
</beans>
