<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--
  ~ Copyright 2014-present Open Networking Laboratory
  ~
  ~ Licensed 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 xmlns="http://karaf.apache.org/xmlns/features/v1.2.0"
          name="onos-@FEATURE-VERSION">
    <repository>mvn:org.apache.karaf.features/standard/3.0.8/xml/features</repository>

    <feature name="onos-thirdparty-base" version="@FEATURE-VERSION"
             description="ONOS 3rd party dependencies">
        <bundle>mvn:commons-lang/commons-lang/2.6</bundle>
        <bundle>mvn:org.apache.commons/commons-lang3/3.5</bundle>
        <bundle>mvn:commons-configuration/commons-configuration/1.10</bundle>
        <bundle>mvn:com.google.guava/guava/19.0</bundle>
        <bundle>mvn:io.netty/netty/3.10.5.Final</bundle>
        <bundle>mvn:io.netty/netty-common/4.1.5.Final</bundle>
        <bundle>mvn:io.netty/netty-buffer/4.1.5.Final</bundle>
        <bundle>mvn:io.netty/netty-transport/4.1.5.Final</bundle>
        <bundle>mvn:io.netty/netty-handler/4.1.5.Final</bundle>
        <bundle>mvn:io.netty/netty-codec/4.1.5.Final</bundle>
        <bundle>mvn:io.netty/netty-transport-native-epoll/4.1.5.Final</bundle>
        <bundle>mvn:io.netty/netty-resolver/4.1.5.Final</bundle>
        <bundle>mvn:commons-pool/commons-pool/1.6</bundle>
        <bundle>mvn:org.apache.commons/commons-math3/3.6.1</bundle>

        <bundle>mvn:joda-time/joda-time/2.9.3</bundle>

        <bundle>mvn:io.dropwizard.metrics/metrics-core/3.1.2</bundle>
        <bundle>mvn:io.dropwizard.metrics/metrics-json/3.1.2</bundle>
        <bundle>mvn:com.eclipsesource.minimal-json/minimal-json/0.9.4</bundle>

        <bundle>mvn:com.esotericsoftware/kryo/4.0.0</bundle>
        <bundle>mvn:com.esotericsoftware/reflectasm/1.11.3</bundle>
        <bundle>mvn:org.ow2.asm/asm/5.0.4</bundle>
        <bundle>mvn:com.esotericsoftware/minlog/1.3.0</bundle>
        <bundle>mvn:org.objenesis/objenesis/2.2</bundle>

        <bundle>mvn:com.fasterxml.jackson.core/jackson-core/2.8.6</bundle>
        <bundle>mvn:com.fasterxml.jackson.core/jackson-annotations/2.8.6</bundle>
        <bundle>mvn:com.fasterxml.jackson.core/jackson-databind/2.8.6</bundle>

        <bundle>mvn:commons-configuration/commons-configuration/1.10</bundle>
        <bundle>mvn:commons-collections/commons-collections/3.2.2</bundle>

        <bundle>mvn:com.typesafe/config/1.2.1</bundle>
        <bundle>mvn:com.googlecode.concurrent-trees/concurrent-trees/2.6.0</bundle>
        <bundle>mvn:commons-io/commons-io/2.4</bundle>
        <bundle>mvn:io.atomix/atomix-all/1.0.7</bundle>

        <bundle>mvn:org.glassfish.jersey.core/jersey-client/2.25.1</bundle>

        <bundle>mvn:org.mapdb/mapdb/1.0.7</bundle>
    </feature>

    <feature name="onos-thirdparty-web" version="@FEATURE-VERSION"
             description="ONOS 3rd party dependencies for web apps">
        <feature>war</feature>
        <feature>onos-thirdparty-base</feature>
        <!-- Bundles for jersey-common 2.x -->
        <bundle>mvn:org.glassfish.jersey.core/jersey-common/2.25.1</bundle>
        <bundle>mvn:javax.annotation/javax.annotation-api/1.2</bundle>
        <bundle>mvn:javax.ws.rs/javax.ws.rs-api/2.0.1</bundle>
        <bundle>mvn:org.glassfish.hk2/hk2-api/2.5.0-b32</bundle>
        <bundle>mvn:org.glassfish.hk2/hk2-locator/2.5.0-b32</bundle>
        <bundle>mvn:org.glassfish.hk2/osgi-resource-locator/1.0.1</bundle>
        <bundle>mvn:org.glassfish.hk2.external/javax.inject/2.5.0-b32</bundle>
        <bundle>mvn:org.glassfish.jersey.bundles.repackaged/jersey-guava/2.25.1</bundle>
        <!-- Bundles for jersey-server -->
        <bundle>mvn:org.glassfish.jersey.core/jersey-server/2.25.1</bundle>
        <bundle>mvn:org.glassfish.hk2.external/aopalliance-repackaged/2.5.0-b32</bundle>
        <bundle>mvn:org.glassfish.hk2/hk2-utils/2.5.0-b32</bundle>
        <bundle>mvn:javax.validation/validation-api/1.1.0.Final</bundle>
        <bundle>mvn:org.javassist/javassist/3.20.0-GA</bundle>
        <!-- Bundles for jersey-servlet -->
        <bundle>mvn:org.glassfish.jersey.containers/jersey-container-servlet/2.25.1</bundle>
        <bundle>mvn:org.glassfish.jersey.containers/jersey-container-servlet-core/2.25.1</bundle>
        <!-- Bundles for jersey-media-multipart -->
        <bundle>mvn:org.glassfish.jersey.media/jersey-media-multipart/2.25.1</bundle>
        <bundle>mvn:org.jvnet.mimepull/mimepull/1.9.6</bundle>
    </feature>

    <feature name="onos-api" version="@FEATURE-VERSION"
             description="ONOS services and model API">
        <feature>scr</feature>
        <feature>onos-thirdparty-base</feature>
        <bundle>mvn:org.onosproject/onlab-misc/@ONOS-VERSION</bundle>
        <bundle>mvn:org.onosproject/onlab-osgi/@ONOS-VERSION</bundle>

        <bundle>mvn:org.onosproject/onos-api/@ONOS-VERSION</bundle>
        <bundle>mvn:org.onosproject/onos-incubator-api/@ONOS-VERSION</bundle>
    </feature>

    <feature name="onos-core" version="@FEATURE-VERSION"
             description="ONOS core components">
        <feature>onos-api</feature>
        <bundle>mvn:org.onosproject/onos-core-net/@ONOS-VERSION</bundle>
        <bundle>mvn:org.onosproject/onos-core-common/@ONOS-VERSION</bundle>
        <bundle>mvn:org.onosproject/onos-core-dist/@ONOS-VERSION</bundle>
        <bundle>mvn:org.onosproject/onos-core-primitives/@ONOS-VERSION</bundle>
        <bundle>mvn:org.onosproject/onos-core-persistence/@ONOS-VERSION</bundle>
        <bundle>mvn:org.onosproject/onos-core-serializers/@ONOS-VERSION</bundle>
    </feature>

    <feature name="onos-incubator" version="@FEATURE-VERSION"
             description="ONOS core incubator components">
        <feature>onos-core</feature>
        <bundle>mvn:org.onosproject/onos-incubator-net/@ONOS-VERSION</bundle>
        <bundle>mvn:org.onosproject/onos-incubator-core/@ONOS-VERSION</bundle>
        <bundle>mvn:org.onosproject/onos-incubator-store/@ONOS-VERSION</bundle>
        <bundle>mvn:org.onosproject/onos-incubator-rpc/@ONOS-VERSION</bundle>
    </feature>

    <feature name="onos-rest" version="@FEATURE-VERSION"
             description="ONOS REST API components">
        <feature>onos-api</feature>
        <feature>onos-thirdparty-web</feature>
        <bundle>mvn:org.onosproject/onlab-rest/@ONOS-VERSION</bundle>
        <bundle>mvn:org.onosproject/onos-rest/@ONOS-VERSION</bundle>
    </feature>

    <feature name="onos-gui" version="@FEATURE-VERSION"
             description="ONOS GUI console components">
        <feature>onos-api</feature>
        <feature>onos-thirdparty-web</feature>
        <bundle>mvn:org.eclipse.jetty/jetty-websocket/8.1.19.v20160209</bundle>
        <bundle>mvn:org.onosproject/onlab-rest/@ONOS-VERSION</bundle>
        <bundle>mvn:org.onosproject/onos-gui/@ONOS-VERSION</bundle>
    </feature>

    <feature name="onos-cli" version="@FEATURE-VERSION"
             description="ONOS admin command console components">
        <feature>onos-api</feature>
        <bundle>mvn:org.onosproject/onos-cli/@ONOS-VERSION</bundle>
    </feature>

    <feature name="onos-security" version="@FEATURE-VERSION"
             description="Security-Mode ONOS">
        <feature>onos-api</feature>
        <bundle>mvn:org.onosproject/org.apache.felix.framework.security/2.2.0.onos</bundle>
        <bundle>mvn:org.onosproject/onos-security/@ONOS-VERSION</bundle>
    </feature>

</features>
