<?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.
-->
<features>
    <feature name="wrapper" version="${version}">
        <bundle>mvn:org.apache.felix.karaf.gshell/org.apache.felix.karaf.gshell.wrapper/${version}</bundle>
    </feature>
    <feature name="obr" version="${version}">
        <bundle>mvn:org.apache.felix/org.apache.felix.bundlerepository/${felix.bundlerepository.version}</bundle>
        <bundle>mvn:org.apache.felix.karaf.gshell/org.apache.felix.karaf.gshell.obr/${version}</bundle>
    </feature>
    <feature name="felix-http" version="${version}">
        <bundle>mvn:org.mortbay.jetty/jetty-util/${jetty.version}/jar</bundle>
        <bundle>mvn:org.mortbay.jetty/jetty-sslengine/${jetty.version}/jar</bundle>
        <bundle>mvn:org.mortbay.jetty/jetty/${jetty.version}/jar</bundle>
        <bundle>mvn:org.apache.felix/org.apache.felix.http.jetty/${felix.http.version}/jar</bundle>
        <config name="org.apache.felix.http">
          org.osgi.service.http.port=8080
        </config>
    </feature>
    <feature name="webconsole" version="${version}">
        <feature version="${version}">felix-http</feature>
        <bundle>mvn:org.apache.felix/org.apache.felix.metatype/${felix.metatype.version}/jar</bundle>
        <bundle>mvn:org.apache.felix/org.apache.felix.webconsole/${felix.webconsole.version}/jar</bundle>
        <config name="org.apache.felix.webconsole.internal.servlet.OsgiManager">
          username=karaf
          password=karaf
        </config>
        <bundle>mvn:org.apache.felix.karaf/org.apache.felix.karaf.webconsole/${version}/jar</bundle>
    </feature>
</features>
