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

    <command-bundle xmlns="http://felix.apache.org/karaf/xmlns/gshell/v1.0.0">
        <command name="osgi/bundle-level">
            <action class="org.apache.felix.karaf.gshell.osgi.BundleLevel">
                <property name="bundleContext" ref="blueprintBundleContext"/>
            </action>
        </command>
        <command name="osgi/headers">
            <action class="org.apache.felix.karaf.gshell.osgi.Headers">
                <property name="bundleContext" ref="blueprintBundleContext"/>
            </action>
        </command>
        <command name="osgi/install">
            <action class="org.apache.felix.karaf.gshell.osgi.InstallBundle">
                <property name="bundleContext" ref="blueprintBundleContext"/>
            </action>
        </command>
        <command name="osgi/list">
            <action class="org.apache.felix.karaf.gshell.osgi.ListBundles">
                <property name="bundleContext" ref="blueprintBundleContext"/>
                <property name="blueprintListener" ref="blueprintListener"/>
            </action>
        </command>
        <command name="osgi/ls">
            <action class="org.apache.felix.karaf.gshell.osgi.ListServices">
                <property name="bundleContext" ref="blueprintBundleContext"/>
            </action>
        </command>
        <command name="osgi/refresh">
            <action class="org.apache.felix.karaf.gshell.osgi.RefreshBundle">
                <property name="bundleContext" ref="blueprintBundleContext"/>
            </action>
        </command>
        <command name="osgi/update">
            <action class="org.apache.felix.karaf.gshell.osgi.UpdateBundle">
                <property name="bundleContext" ref="blueprintBundleContext"/>
            </action>
        </command>
        <command name="osgi/resolve">
            <action class="org.apache.felix.karaf.gshell.osgi.ResolveBundle">
                <property name="bundleContext" ref="blueprintBundleContext"/>
            </action>
        </command>
        <command name="osgi/restart">
            <action class="org.apache.felix.karaf.gshell.osgi.RestartBundle">
                <property name="bundleContext" ref="blueprintBundleContext"/>
            </action>
        </command>
        <command name="osgi/shutdown">
            <action class="org.apache.felix.karaf.gshell.osgi.Shutdown">
                <property name="bundleContext" ref="blueprintBundleContext"/>
            </action>
        </command>
        <command name="osgi/start">
            <action class="org.apache.felix.karaf.gshell.osgi.StartBundle">
                <property name="bundleContext" ref="blueprintBundleContext"/>
            </action>
        </command>
        <command name="osgi/start-level">
            <action class="org.apache.felix.karaf.gshell.osgi.StartLevel">
                <property name="bundleContext" ref="blueprintBundleContext"/>
            </action>
        </command>
        <command name="osgi/stop">
            <action class="org.apache.felix.karaf.gshell.osgi.StopBundle">
                <property name="bundleContext" ref="blueprintBundleContext"/>
            </action>
        </command>
        <command name="osgi/uninstall">
            <action class="org.apache.felix.karaf.gshell.osgi.UninstallBundle">
                <property name="bundleContext" ref="blueprintBundleContext"/>
            </action>
        </command>
    </command-bundle>

    <bean id="blueprintListener" class="org.apache.felix.karaf.gshell.osgi.BlueprintListener" />

    <service ref="blueprintListener" interface="org.osgi.service.blueprint.container.BlueprintListener" />

</blueprint>