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

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

    <reference-list id="columnProviders" interface="org.apache.karaf.webconsole.osgi.core.spi.IColumnProvider" availability="optional" />
    <reference-list id="actionProviders" interface="org.apache.karaf.webconsole.osgi.core.spi.IActionProvider" availability="optional" />
    <reference-list id="decorationProviders" interface="org.apache.karaf.webconsole.osgi.core.spi.IDecorationProvider" availability="optional" />

    <service interface="org.apache.karaf.webconsole.core.navigation.ConsoleTabProvider">
        <bean class="org.apache.karaf.webconsole.core.navigation.ExtendableConsoleTabProvider">
            <argument>
                <bean class="org.apache.karaf.webconsole.osgi.core.navigation.OsgiConsoleTabProvider" />
            </argument>
            <property name="extensions">
                <reference-list interface="org.apache.karaf.webconsole.core.navigation.NavigationProvider"
                    availability="optional" filter="(extends=osgi)" />
            </property>
        </bean>
    </service>

    <bean id="widgetProvider" class="org.apache.karaf.webconsole.osgi.core.widget.OsgiWidgetProvider">
        <argument ref="blueprintBundleContext" />
    </bean>

    <service auto-export="interfaces" ref="widgetProvider" />

    <service auto-export="interfaces">
        <bean class="org.apache.karaf.webconsole.osgi.core.bundle.list.SystemBundleDecorationProvider">
            <argument ref="startLevel" />
        </bean>
    </service>

</blueprint>