<!-- 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-3.0.xsd
                      http://www.springframework.org/schema/tx 
                      http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
                      http://www.springframework.org/schema/aop
                      http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
                      http://www.springframework.org/schema/context
                      http://www.springframework.org/schema/context/spring-context-3.0.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>
