<?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:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0"
    xmlns:jpa="http://aries.apache.org/xmlns/jpa/v2.0.0"
    xmlns:tx="http://aries.apache.org/xmlns/transactions/v1.2.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
    http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0 http://aries.apache.org/schemas/blueprint-ext/blueprint-ext.xsd
    ">

    <jpa:enable />
    <tx:enable-annotations/>

    <service ref="carServiceEmf"
        interface="org.apache.aries.jpa.container.itest.entities.CarService">
        <service-properties>
            <entry key="type" value="emf" />
        </service-properties>
    </service>

    <bean id="carServiceEmf"
        class="org.apache.aries.jpa.container.itest.bundle.blueprint.impl.CarServiceWithEmfImpl">
        <tx:transaction method="*" value="Required" />
    </bean>

    <service ref="carServiceEm"
        interface="org.apache.aries.jpa.container.itest.entities.CarService">
        <service-properties>
            <entry key="type" value="em" />
        </service-properties>
    </service>

    <bean id="carServiceEm"
        class="org.apache.aries.jpa.container.itest.bundle.blueprint.impl.CarServiceImpl">
        <tx:transaction method="*" value="Required" />
    </bean>

    <service ref="carServiceEmJtaAnn"
        interface="org.apache.aries.jpa.container.itest.entities.CarService">
        <service-properties>
            <entry key="type" value="emJtaAnn" />
        </service-properties>
    </service>

    <bean id="carServiceEmJtaAnn"
        class="org.apache.aries.jpa.container.itest.bundle.blueprint.impl.CarServiceEmJtaAnn">
    </bean>
    
    <service interface="org.apache.aries.jpa.container.itest.entities.CarService">
        <service-properties>
            <entry key="type" value="emJtaAnnInlined" />
        </service-properties>
        <bean class="org.apache.aries.jpa.container.itest.bundle.blueprint.impl.CarServiceEmJtaAnn"/>
    </service>

    <service ref="carServiceEmSupplier"
        interface="org.apache.aries.jpa.container.itest.entities.CarService">
        <service-properties>
            <entry key="type" value="supplier" />
        </service-properties>
    </service>

    <bean id="carServiceEmSupplier"
        class="org.apache.aries.jpa.container.itest.bundle.blueprint.impl.CarServiceWithSupplierImpl">
        <tx:transaction method="*" value="Required" />
    </bean>

    <service ref="carServiceMulti"
        interface="org.apache.aries.jpa.container.itest.entities.CarService">
        <service-properties>
            <entry key="type" value="multiannotation" />
        </service-properties>
    </service>

    <bean id="carServiceMulti"
        class="org.apache.aries.jpa.container.itest.bundle.blueprint.impl.CarServiceWithMultiAnnotationImpl">
        <tx:transaction method="*" value="Required" />
    </bean>

    <service ref="carServiceMethod"
        interface="org.apache.aries.jpa.container.itest.entities.CarService">
        <service-properties>
            <entry key="type" value="method" />
        </service-properties>
    </service>

    <bean id="carServiceMethod"
        class="org.apache.aries.jpa.container.itest.bundle.blueprint.impl.CarServiceWithMethodImpl">
        <tx:transaction method="*" value="Required" />
    </bean>

    <bean id="carLifeCycle" class="org.apache.aries.jpa.container.itest.bundle.blueprint.impl.CarLifeCycle" >
        <property name="coordinator" ref="coordinator"/>
        <property name="carService" ref="carServiceEm"/>
    </bean>
    
    <reference id="coordinator" interface="org.osgi.service.coordinator.Coordinator" />
    
    <service ref="carLifeCycle" interface="java.lang.Runnable" >
        <service-properties>
            <entry key="type" value="carCoordinated"/>
        </service-properties>
    </service>
</blueprint>

