<?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:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0">

    <ext:property-placeholder placeholder-prefix="$(" placeholder-suffix=")"/>

    <ext:property-placeholder placeholder-prefix="$[" placeholder-suffix="]" ignore-missing-locations="true">
        <ext:default-properties>
            <ext:property name="featuresRepositories" value=""/>
            <ext:property name="featuresBoot" value=""/>
            <ext:property name="resolverTimeout" value="5000"/>
        </ext:default-properties>
        <ext:location>file:$(karaf.base)/etc/org.apache.karaf.features.cfg</ext:location>
    </ext:property-placeholder>

    <bean id="featuresService" class="org.apache.karaf.features.internal.FeaturesServiceImpl" init-method="start" destroy-method="stop">
        <property name="urls" value="$[featuresRepositories]" />
        <property name="boot" value="$[featuresBoot]" />
        <property name="resolverTimeout" value="$[resolverTimeout]" />
        <property name="configAdmin" ref="configAdmin" />
        <property name="packageAdmin" ref="packageAdmin" />
        <property name="startLevel" ref="startLevel" />
        <property name="bundleContext" ref="blueprintBundleContext" />
    </bean>

    <reference-list id="featuresListeners" interface="org.apache.karaf.features.FeaturesListener" availability="optional">
        <reference-listener ref="featuresService"
                            bind-method="registerListener"
                            unbind-method="unregisterListener" />
    </reference-list>

    <reference id="configAdmin" interface="org.osgi.service.cm.ConfigurationAdmin" />

    <reference id="packageAdmin" interface="org.osgi.service.packageadmin.PackageAdmin" />

    <reference id="startLevel" interface="org.osgi.service.startlevel.StartLevel" />
    
    <service ref="featuresService" interface="org.apache.karaf.features.FeaturesService" />

</blueprint>
