<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
 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.
-->
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
        xmlns:jpa="http://aries.apache.org/xmlns/jpa/v2.0.0"
        xmlns:tx="http://aries.apache.org/xmlns/transactions/v2.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">

    <jpa:enable />
    <tx:enable />

    <reference id="transactionManager" interface="javax.transaction.TransactionManager" />

    <bean id="carDao" class="org.apache.aries.jpa.container.itest.bundle.blueprint.dao.CarDaoImpl" />

    <bean id="testService" class="org.apache.aries.jpa.container.itest.bundle.blueprint.impl.TestServiceImpl">
        <property name="carDao" ref="carDao" />
        <property name="transactionManager" ref="transactionManager" />
        <property name="newTxTestService" ref="newTxTestService" />
    </bean>

    <bean id="newTxTestService" class="org.apache.aries.jpa.container.itest.bundle.blueprint.impl.NewTxTestServiceImpl">
        <property name="carDao" ref="carDao" />
        <property name="transactionManager" ref="transactionManager" />
    </bean>

    <service ref="testService" interface="org.apache.aries.jpa.container.itest.bundle.blueprint.TestService" />

    <service ref="newTxTestService" interface="org.apache.aries.jpa.container.itest.bundle.blueprint.NewTxTestService" />

</blueprint>
