<?xml version="1.0" encoding="UTF-8"?>
<!--

    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:tx="http://foo.bar/tx"
           xmlns:t2="http://foo.bar/t2">

    <type-converters>
        <bean class="p1.Foo" t2:a="b">
            <argument type="java.lang.Integer[]" value="0 1"/>
        </bean>
    </type-converters>

    <bean class="p2.Foo">
       <tx:transaction method="*" value="NotSupported"/>
        <property name="bar">
            <bean class="p3.Foo"/>
        </property>
    </bean>

    <reference interface="p4.Foo"  availability="optional" filter="(prop=a,b)" component-name="boo"/>

    <reference-list interface="p5.Foo">
    </reference-list>

    <service interface="p6.Foo">
        <service-properties>
            <entry key="k" value="v" />
        </service-properties>
    </service>

    <service interface="p6.Foo">
        <service-properties>
            <entry key="k">
                <array>
                    <value>v1</value>
                    <value>v2</value>
                </array>
            </entry>
        </service-properties>
    </service>

    <service>
        <interfaces>
            <value>p7.Foo</value>
            <value>p14.Foo</value>
        </interfaces>
        <bean class="p8.Foo">
            <argument type="p9.Foo[][]"><null/></argument>
            <property name="bar">
                <list value-type="p10.Foo">
                    <map key-type="p11.Foo" value-type="p12.Foo">
                    </map>
                    <set value-type="p13.Foo[]"/>
                </list>
            </property>
        </bean>
    </service>

</blueprint>
