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

  <context:component-scan base-package="org.apache.cloudstack, com.cloud" />

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

  <bean class="com.cloud.network.security.SecurityGroupManagerTestConfiguration" />

  <!--
    RPC/Async/EventBus
  -->

  <bean id="onwireRegistry" class="org.apache.cloudstack.framework.serializer.OnwireClassRegistry"
    init-method="scan" >
    <property name="packages">
      <list>
        <value>org.apache.cloudstack.framework</value>
      </list>
    </property>
  </bean>

  <bean id="messageSerializer" class="org.apache.cloudstack.framework.serializer.JsonMessageSerializer">
    <property name="onwireClassRegistry" ref="onwireRegistry" />
  </bean>

  <bean id="transportProvider" class="org.apache.cloudstack.framework.server.ServerTransportProvider"  init-method="initialize">
    <property name="workerPoolSize" value="5" />
    <property name="nodeId" value="Node1" />
    <property name="messageSerializer" ref="messageSerializer" />
  </bean>

  <bean id="rpcProvider" class="org.apache.cloudstack.framework.rpc.RpcProviderImpl" init-method="initialize">
    <constructor-arg ref="transportProvider" />
    <property name="messageSerializer" ref="messageSerializer" />
  </bean>

  <bean id="eventBus" class = "org.apache.cloudstack.framework.eventbus.EventBusBase" />
  <bean id="messageBus" class="org.apache.cloudstack.framework.messagebus.MessageBusBase" />

  <bean id="apiServlet" class = "com.cloud.api.ApiServlet" />

</beans>
