<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor
  license agreements. See the NOTICE file distributed with this work for additional
  information regarding copyright ownership. The ASF licenses this file to
  you under the Apache License, Version 2.0 (the "License"); you may not use
  this file except in compliance with the License. You may obtain a copy of
  the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required
  by applicable law or agreed to in writing, software distributed under the
  License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
  OF ANY KIND, either express or implied. See the License for the specific
  language governing permissions and limitations under the License. -->
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
  xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
                      http://www.springframework.org/schema/beans/spring-beans.xsd
                      http://www.springframework.org/schema/tx
                      http://www.springframework.org/schema/tx/spring-tx.xsd
                      http://www.springframework.org/schema/aop
                      http://www.springframework.org/schema/aop/spring-aop.xsd
                      http://www.springframework.org/schema/context
                      http://www.springframework.org/schema/context/spring-context.xsd">

  <context:annotation-config />

  <!-- @DB support -->
  <bean id="componentContext" class="com.cloud.utils.component.ComponentContext" />
  <bean id="transactionContextBuilder" class="com.cloud.utils.db.TransactionContextBuilder" />
  <bean id="instantiatePostProcessor" class="com.cloud.utils.component.ComponentInstantiationPostProcessor">
    <property name="Interceptors">
        <list>
            <ref bean="transactionContextBuilder" />
        </list>
    </property>
  </bean>
  <bean id="NetworkDao" class="com.cloud.network.dao.NetworkDaoImpl" />
  <bean id="NetworkAccountDao" class="com.cloud.network.dao.NetworkAccountDaoImpl"/>
  <bean id="NetworkDomainDao" class="com.cloud.network.dao.NetworkDomainDaoImpl"  />
  <bean id="NetworkOpDao" class="com.cloud.network.dao.NetworkOpDaoImpl"/>
  <bean id="NetworkServiceMapDao" class="com.cloud.network.dao.NetworkServiceMapDaoImpl"/>
  <bean id="NetworkOfferingDao" class="com.cloud.offerings.dao.NetworkOfferingDaoImpl"/>
  <bean id="NetwrkOfferingDetailsDao" class="com.cloud.offerings.dao.NetworkOfferingDetailsDaoImpl"/>
  <bean id="NetworkOfferingServiceMapDa" class="com.cloud.offerings.dao.NetworkOfferingServiceMapDaoImpl"/>
  <bean id="UsageEventDetailsDao" class="com.cloud.event.dao.UsageEventDetailsDaoImpl"/>
  <bean id="HostDaoImpl" class="com.cloud.gpu.dao.HostGpuGroupsDaoImpl"/>
  <bean id="VgpuTypesDao" class="com.cloud.gpu.dao.VGPUTypesDaoImpl"/>
  <bean id="MgmtServiceCOnf" class="com.cloud.configuration.ManagementServiceConfigurationImpl"/>
  <bean id="ClusterDetailsDao" class="com.cloud.dc.ClusterDetailsDaoImpl"/>
  <bean id="AccountGuestVlanMapDao" class="com.cloud.network.dao.AccountGuestVlanMapDaoImpl"/>
  <bean id="NicSecIpDao" class="com.cloud.vm.dao.NicSecondaryIpDaoImpl"/>
  <bean id="ManagedContext" class="org.apache.cloudstack.managed.context.impl.DefaultManagedContext"/>
  <bean id="SecurityGroupJoinDaoImpl" class="com.cloud.api.query.dao.ResourceTagJoinDaoImpl"/>
  <bean id="TestConfiguration"
    class="com.cloud.network.security.SecurityGroupManagerTestConfiguration" />
  <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor">
    <property name="requiredParameterValue" value="false" />
  </bean>
</beans>
