<!-- 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>
