<!--
  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.
-->
<?xml version="1.0" encoding="UTF-8"?>
<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 />
  <context:component-scan base-package="org.apache.cloudstack.engine" />
  
  <tx:annotation-driven transaction-manager="transactionManager" />
  <!--  bean id="aopTestBean" class="org.apache.cloudstack.storage.test.AopTestAdvice"/-->
  <!--  aop:config proxy-target-class="true" >
    <aop:aspect id="AopTestAdvice" ref="aopTestBean">
    <aop:pointcut id="aoptest"
      expression="@annotation(com.cloud.utils.db.DB)" />
      <aop:around pointcut-ref="aoptest" method="AopTestMethod"/> 
    </aop:aspect>
  </aop:config>
   -->
   
  <bean class="org.apache.cloudstack.engine.provisioning.test.ChildTestConfiguration" />

</beans>