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

    <command-bundle xmlns="http://felix.apache.org/karaf/xmlns/shell/v1.0.0">
        <command name="features/addUrl">
            <action class="org.apache.felix.karaf.features.command.AddUrlCommand"/>
        </command>
        <command name="features/listUrl">
            <action class="org.apache.felix.karaf.features.command.ListUrlCommand"/>
        </command>
        <command name="features/removeUrl">
            <action class="org.apache.felix.karaf.features.command.RemoveUrlCommand"/>
            <completers>
                <ref component-id="removeUrlCompleter" />
            </completers>
        </command>
        <command name="features/refreshUrl">
            <action class="org.apache.felix.karaf.features.command.RefreshUrlCommand"/>
        </command>
        <command name="features/install">
            <action class="org.apache.felix.karaf.features.command.InstallFeatureCommand"/>
            <completers>
                <ref component-id="uninstalledFeatureCompleter" />
            </completers>
        </command>
        <command name="features/uninstall">
            <action class="org.apache.felix.karaf.features.command.UninstallFeatureCommand"/>
            <completers>
                <ref component-id="installedFeatureCompleter" />
            </completers>
        </command>
        <command name="features/list">
            <action class="org.apache.felix.karaf.features.command.ListFeaturesCommand"/>
        </command>
        <command name="features/info">
            <action class="org.apache.felix.karaf.features.command.InfoFeatureCommand"/>
            <completers>
                <ref component-id="allFeatureCompleter" />
            </completers>
        </command>
    </command-bundle>

    <reference id="featuresService" interface="org.apache.felix.karaf.features.FeaturesService" />

    <bean id="uninstalledFeatureCompleter" class="org.apache.felix.karaf.features.command.completers.AvailableFeatureCompleter">
        <property name="featuresService" ref="featuresService" />
    </bean>

    <bean id="installedFeatureCompleter" class="org.apache.felix.karaf.features.command.completers.InstalledFeatureCompleter">
        <property name="featuresService" ref="featuresService" />
    </bean>

    <bean id="allFeatureCompleter" class="org.apache.felix.karaf.features.command.completers.AllFeatureCompleter">
        <property name="featuresService" ref="featuresService" />
    </bean>

    <bean id="removeUrlCompleter" class="org.apache.felix.karaf.features.command.completers.FeatureRepositoryCompleter">
        <property name="featuresService" ref="featuresService" />
    </bean>

</blueprint>
