<?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.5/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.4</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.0.33.Final</bundle>
        <bundle>mvn:io.netty/netty-buffer/4.0.33.Final</bundle>
        <bundle>mvn:io.netty/netty-transport/4.0.33.Final</bundle>
        <bundle>mvn:io.netty/netty-handler/4.0.33.Final</bundle>
        <bundle>mvn:io.netty/netty-codec/4.0.33.Final</bundle>
        <bundle>mvn:io.netty/netty-transport-native-epoll/4.0.33.Final</bundle>
        <bundle>mvn:commons-pool/commons-pool/1.6</bundle>
        <bundle>mvn:org.apache.commons/commons-math3/3.2</bundle>

        <bundle>mvn:joda-time/joda-time/2.9</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/3.0.3</bundle>
        <bundle>mvn:com.esotericsoftware/reflectasm/1.11.0</bundle>
        <bundle>mvn:org.ow2.asm/asm/4.2</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.7.0</bundle>
        <bundle>mvn:com.fasterxml.jackson.core/jackson-annotations/2.7.0</bundle>
        <bundle>mvn:com.fasterxml.jackson.core/jackson-databind/2.7.0</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>wrap:mvn:com.googlecode.concurrent-trees/concurrent-trees/2.4.0$Bundle-SymbolicName=concurrent-trees&amp;Bundle-Version=2.4.0</bundle>
        <bundle>mvn:commons-io/commons-io/2.4</bundle>
        <bundle>mvn:org.onosproject/atomix/1.0.onos-SNAPSHOT</bundle>

        <bundle>mvn:org.glassfish.jersey.core/jersey-client/2.22.2</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.22.2</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.4.0</bundle>
        <bundle>mvn:org.glassfish.hk2/hk2-locator/2.4.0</bundle>
        <bundle>mvn:org.glassfish.hk2/osgi-resource-locator/1.0.1</bundle>
        <bundle>mvn:org.glassfish.hk2.external/javax.inject/2.4.0</bundle>
        <bundle>mvn:org.glassfish.jersey.bundles.repackaged/jersey-guava/2.22.2</bundle>
        <!-- Bundles for jersey-server -->
        <bundle>mvn:org.glassfish.jersey.core/jersey-server/2.22.2</bundle>
        <bundle>mvn:org.glassfish.hk2.external/aopalliance-repackaged/2.4.0</bundle>
        <bundle>mvn:org.glassfish.hk2/hk2-utils/2.4.0</bundle>
        <bundle>mvn:javax.validation/validation-api/1.1.0.Final</bundle>
        <bundle>mvn:org.javassist/javassist/3.18.1-GA</bundle>
        <!-- Bundles for jersey-servlet -->
        <bundle>mvn:org.glassfish.jersey.containers/jersey-container-servlet/2.22.2</bundle>
        <bundle>mvn:org.glassfish.jersey.containers/jersey-container-servlet-core/2.22.2</bundle>
        <!-- Bundles for jersey-media-multipart -->
        <bundle>mvn:org.glassfish.jersey.media/jersey-media-multipart/2.22.2</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>
        <bundle>mvn:commons-configuration/commons-configuration/1.10</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.18.v20150929</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>
