<?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.
-->

<!-- 

    This file has a component descriptor with values for all elements
    and attributes defined in the Declarative Services XML Schema for
    the Declarative Services Specification 1.0.
    
    The goal of this file is to test the XML parsing whether all elements
    are read and stored in the metadata objects and fields. Semantic
    correctness according to the specificiation is not tested.
 -->

<components>
    <!--
        component element with
        * DS 1.0 namespace (sets the ds namespace code)
        * DS 1.0 attributes
        * DS 1.1 attributes (must be read)
    -->
    <scr:component
        xmlns:scr="http://www.osgi.org/xmlns/scr/v1.0.0"
        
        enabled="true"
        name="components.all.name"
        factory="components.all.factory"
        immediate="true"
        
        activate="myactivate"
        deactivate="mydeactivate"
        modified="mymodified"
        configuration-policy="ignore"
        >

        <implementation class="components.all.impl" />

        <property
            name="prop"
            value="1234"
            type="Integer"
        />

        <properties
            entry="components_all_elements_10.properties"
        />

        <service
            servicefactory="true"
        >
            <provide
                interface="components.all.service"
            />
        </service>

        <!-- Basic reference testing reading -->
        <reference
            name="ref.name"
            interface="ref.service"
            cardinality="0..n"
            policy="dynamic"
            target="ref.target"
            bind="ref_bind"
            unbind="ref_unbind"
        />
        
        <!--
            references testing the setting of secondary properties
            isStatic, isMultiple and isOptional
        -->
        <reference name="ref.01" cardinality="0..1" />
        <reference name="ref.11" cardinality="1..1" />
        <reference name="ref.0n" cardinality="0..n" />
        <reference name="ref.1n" cardinality="1..n" />
        <reference name="ref.static" policy="static" />
        <reference name="ref.dynamic" policy="dynamic" />

    </scr:component>
</components>
