<?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.
-->
<components>
    <scr:component name="felix.6161"
                   xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0"
                   immediate="true"
                   enabled="false"
                   configuration-policy="optional"
                   activate="activate"
                   modified="modified">
        <implementation class="org.apache.felix.scr.integration.components.SimpleComponent" />
        <service>
            <provide interface="org.apache.felix.scr.integration.components.SimpleComponent" />
        </service>
        <reference
                name="one"
                interface="org.apache.felix.scr.integration.components.SimpleService"
                cardinality="0..1"
                policy="dynamic"
                bind="setSimpleService"
                unbind="unsetSimpleService"
                target="(value=foo)"
        />
    </scr:component>

    <scr:component name="felix.6161.2nd"
                   xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0"
                   immediate="true"
                   enabled="false"
                   configuration-policy="optional"
                   activate="activate"
                   modified="modified">
        <implementation class="org.apache.felix.scr.integration.components.SimpleComponent" />
        <service>
            <provide interface="org.apache.felix.scr.integration.components.SimpleComponent" />
        </service>
        <reference
                name="one"
                interface="org.apache.felix.scr.integration.components.SimpleService"
                cardinality="0..1"
                policy="dynamic"
                bind="setSimpleService"
                unbind="unsetSimpleService"
                target="(value=foo)"
        />
    </scr:component>

    <scr:component name="felix.6161.other.target"
                   xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0"
                   immediate="true"
                   enabled="false"
                   configuration-policy="optional"
                   activate="activate"
                   modified="modified">
        <implementation class="org.apache.felix.scr.integration.components.SimpleComponent" />
        <service>
            <provide interface="org.apache.felix.scr.integration.components.SimpleComponent" />
        </service>
        <reference
                name="one"
                interface="org.apache.felix.scr.integration.components.SimpleService"
                cardinality="0..1"
                policy="dynamic"
                bind="setSimpleService"
                unbind="unsetSimpleService"
                target="(value=bar)"
        />
    </scr:component>

    <scr:component name="felix.6161.invalid.target"
                   xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0"
                   immediate="true"
                   enabled="false"
                   configuration-policy="optional"
                   activate="activate"
                   modified="modified">
        <implementation class="org.apache.felix.scr.integration.components.SimpleComponent" />
        <service>
            <provide interface="org.apache.felix.scr.integration.components.SimpleComponent" />
        </service>
        <reference
                name="one"
                interface="org.apache.felix.scr.integration.components.SimpleService"
                cardinality="0..1"
                policy="dynamic"
                bind="setSimpleService"
                unbind="unsetSimpleService"
                target="(value=invalid"
        />
    </scr:component>
</components>