<!-- 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="actionEventInterceptor" class="com.cloud.event.ActionEventInterceptor" />
  <bean id="instantiatePostProcessor" class="com.cloud.utils.component.ComponentInstantiationPostProcessor">
    <property name="Interceptors">
        <list>
            <ref bean="transactionContextBuilder" />
            <ref bean="actionEventInterceptor" />
        </list>
    </property>
  </bean>

  <!--
      Network Elements
  -->
  <bean id="SecurityGroupProvider" class="com.cloud.network.element.SecurityGroupElement">
    <property name="name" value="SecurityGroupProvider"/>
  </bean>
  <bean id="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement">
    <property name="name" value="VirtualRouter"/>
  </bean>
  <bean id="VpcVirtualRouter" class="com.cloud.vpc.dao.MockVpcVirtualRouterElement">
    <property name="name" value="VpcVirtualRouter"/>
  </bean>
  
  <!--
    Network Gurus
  -->
  <bean id="PublicNetworkGuru" class="com.cloud.network.guru.PublicNetworkGuru">
    <property name="name" value="PublicNetworkGuru"/>
  </bean>
  <bean id="PodBasedNetworkGuru" class="com.cloud.network.guru.PodBasedNetworkGuru">
    <property name="name" value="PodBasedNetworkGuru"/>
  </bean>
  <bean id="ControlNetworkGuru" class="com.cloud.network.guru.ControlNetworkGuru">
    <property name="name" value="ControlNetworkGuru"/>
  </bean>
  <bean id="DirectNetworkGuru" class="com.cloud.network.guru.DirectNetworkGuru">
    <property name="name" value="DirectNetworkGuru"/>
  </bean>
  <bean id="DirectPodBasedNetworkGuru" class="com.cloud.network.guru.DirectPodBasedNetworkGuru">
    <property name="name" value="DirectPodBasedNetworkGuru"/>
  </bean>
  <bean id="PrivateNetworkGuru" class="com.cloud.network.guru.PrivateNetworkGuru">
    <property name="name" value="PrivateNetworkGuru"/>
  </bean>
  
  <bean id="TestConfiguration"
    class="com.cloud.vpc.VpcTestConfiguration" />
  <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor">
    <property name="requiredParameterValue" value="false" />
  </bean>
</beans>
