<?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.
-->
<obr>
    <require extend="false"
        filter="(service=org.osgi.service.log.LogService)"
        multiple="false" name="service" optional="true">
        Import Service org.osgi.service.log.LogService
    </require>
    <require extend="false"
        filter="(service=org.osgi.service.cm.ManagedService)"
        multiple="true" name="service" optional="true">
        Import Service org.osgi.service.cm.ManagedService
    </require>
    <require extend="false"
        filter="(service=org.osgi.service.cm.ManagedServiceFactory)"
        multiple="true" name="service" optional="true">
        Import Service org.osgi.service.cm.ManagedServiceFactory
    </require>
    <require extend="false"
        filter="(service=org.osgi.service.cm.ConfigurationListener)"
        multiple="true" name="service" optional="true">
        Import Service org.osgi.service.cm.ConfigurationListener
    </require>
    <require extend="false"
        filter="(service=org.apache.felix.cm.PersistenceManager)"
        multiple="true" name="service" optional="false">
        Import Service org.apache.felix.cm.PersistenceManager
    </require>
    <capability name="service">
        <p n="service" v="org.apache.felix.cm.PersistenceManager" />
        <p n="service.description"
            v="Platform Filesystem Persistence Manager" />
        <p n="service.pid"
            v="org.apache.felix.cm.file.FilePersistenceManager" />
        <p n="service.vendor" v="Apache Software Foundation" />
    </capability>
    <capability name="service">
        <p n="service" v="org.osgi.service.cm.ConfigurationAdmin" />
        <p n="service.description"
            v="Configuration Admin Service Specification 1.2 Implementation" />
        <p n="service.pid" v="org.apache.felix.cm.ConfigurationAdmin" />

        <p n="service.vendor" v="Apache Software Foundation" />
    </capability>
</obr>