<?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 xmlns="http://karaf.apache.org/xmlns/features/v1.4.0"
          name="org.apache.brooklyn-0.12.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:noNamespaceSchemaLocation="http://karaf.apache.org/xmlns/features/v1.4.0">

    <repository>mvn:org.apache.karaf.features/standard/4.1.2/xml/features</repository>
    <repository>mvn:org.apache.jclouds.karaf/jclouds-karaf/2.0.2/xml/features</repository>
    <repository>mvn:org.apache.cxf.karaf/apache-cxf/3.1.10/xml/features</repository>
    <repository>mvn:io.fabric8.kubernetes/kubernetes-karaf/1.4.27/xml/features</repository>

    <feature name="swagger" version="1.5.6" description="Swagger Annotations+Core+JAXRS+Models">
        <bundle dependency='true'>mvn:com.google.guava/guava/18.0</bundle>

        <bundle>mvn:io.swagger/swagger-annotations/1.5.6</bundle>
        <bundle>wrap:mvn:io.swagger/swagger-core/1.5.6</bundle>
        <bundle>wrap:mvn:io.swagger/swagger-jaxrs/1.5.6</bundle>
        <bundle>mvn:io.swagger/swagger-models/1.5.6</bundle>

        <bundle dependency='true'>mvn:com.fasterxml.jackson.core/jackson-annotations/2.7.5</bundle>
        <bundle dependency='true'>mvn:com.fasterxml.jackson.core/jackson-core/2.7.5</bundle>
        <bundle dependency='true'>mvn:com.fasterxml.jackson.core/jackson-databind/2.7.5</bundle>
        <bundle dependency='true'>mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.7.5</bundle>
        <bundle dependency='true'>mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-base/2.7.5</bundle>
        <bundle dependency='true'>mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-json-provider/2.7.5</bundle>
    </feature>

    <feature name="brooklyn-utils-common" version="0.12.0" description="Brooklyn Common Utils">
        <bundle>mvn:org.apache.brooklyn/brooklyn-utils-common/0.12.0</bundle>
        <bundle>mvn:org.apache.brooklyn/brooklyn-logback-includes/0.12.0</bundle>

        <bundle dependency="true">mvn:com.google.guava/guava/18.0</bundle>
        <bundle dependency="true">mvn:org.codehaus.groovy/groovy-all/2.3.7</bundle>
        <bundle dependency="true">mvn:commons-io/commons-io/2.4</bundle>
        <bundle dependency="true">mvn:commons-codec/commons-codec/1.9</bundle>
        <bundle dependency="true">mvn:org.slf4j/jul-to-slf4j/1.6.6</bundle>
        <bundle dependency="true">mvn:org.yaml/snakeyaml/1.17</bundle>
        <bundle dependency="true">mvn:org.apache.httpcomponents/httpcore-osgi/4.4.4</bundle>
        <bundle dependency="true">mvn:org.apache.httpcomponents/httpclient-osgi/4.5.2</bundle>

        <bundle dependency="true">mvn:ch.qos.logback/logback-classic/1.0.7</bundle>
        <bundle dependency="true">mvn:ch.qos.logback/logback-core/1.0.7</bundle>
    </feature>

    <feature name="brooklyn-utils-groovy" version="0.12.0" description="Brooklyn Groovy Utils">
        <feature>brooklyn-utils-common</feature>
        <bundle>mvn:org.apache.brooklyn/brooklyn-utils-common/0.12.0</bundle>
    </feature>

    <feature name="brooklyn-utils-rest-swagger" version="0.12.0" description="Brooklyn REST Swagger Apidoc Utilities">
        <feature>brooklyn-utils-common</feature>
        <feature version="1.5.6">swagger</feature>

        <bundle>mvn:org.apache.brooklyn/brooklyn-utils-rest-swagger/0.12.0</bundle>

        <bundle dependency="true">mvn:javax.servlet/javax.servlet-api/3.1.0</bundle>
        <bundle dependency="true">mvn:javax.ws.rs/javax.ws.rs-api/2.0.1</bundle>

        <!-- TODO: version 1.1.0.Final has OSGi manifest; check if upgrade doesn't get rid of wrap -->
        <bundle dependency="true">wrap:mvn:javax.validation/validation-api/1.1.0.Final</bundle>
        <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.reflections/0.9.9_1</bundle>
    </feature>

    <feature name="brooklyn-rest-api" version="0.12.0" description="Brooklyn REST API">
        <feature>brooklyn-utils-rest-swagger</feature>
        <feature>brooklyn-api</feature>
        <feature>brooklyn-core</feature>

        <bundle>mvn:org.apache.brooklyn/brooklyn-rest-api/0.12.0</bundle>

        <bundle dependency="true">mvn:org.jvnet.mimepull/mimepull/1.9.3</bundle>
        <bundle dependency="true">mvn:commons-lang/commons-lang/2.4</bundle>

        <!-- TODO: version 1.1.0.Final has OSGi manifest; check if upgrade doesn't get rid of wrap -->
        <bundle dependency="true">wrap:mvn:javax.validation/validation-api/1.1.0.Final</bundle>

        <bundle dependency="true">mvn:org.apache.commons/commons-lang3/3.3.2</bundle>
        <bundle dependency="true">mvn:com.fasterxml.jackson.core/jackson-annotations/2.7.5</bundle>
        <bundle dependency="true">mvn:com.fasterxml.jackson.core/jackson-databind/2.7.5</bundle>

        <bundle dependency="true">mvn:javax.servlet/javax.servlet-api/3.1.0</bundle>
    </feature>

    <feature name="brooklyn-rest-client" version="0.12.0" description="Brooklyn REST Client">
        <feature>brooklyn-rest-api</feature>
        <feature>swagger</feature>
        
        <bundle>mvn:org.apache.brooklyn/brooklyn-rest-client/0.12.0</bundle>
        
        <bundle dependency="true">mvn:org.apache.httpcomponents/httpclient-osgi/4.5.2</bundle>
        <bundle dependency='true'>mvn:commons-logging/commons-logging/1.2</bundle>
        <bundle dependency='true'>mvn:commons-codec/commons-codec/1.9</bundle>

        <bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jsr305/${jsr305.bundle.version}</bundle>
        <bundle dependency='true'>mvn:com.google.code.gson/gson/2.3</bundle>
        
        <bundle dependency='true'>wrap:mvn:javax.activation/activation/${javax-activation.version}</bundle>
        <bundle dependency="true">mvn:commons-io/commons-io/2.4</bundle>
        <bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jcip-annotations/${jcip-annotations.bundle.version}</bundle>
        
        <bundle dependency="true">mvn:com.fasterxml.jackson.core/jackson-core/2.7.5</bundle>
        <bundle dependency="true">mvn:com.fasterxml.jackson.core/jackson-annotations/2.7.5</bundle>
        <bundle dependency="true">mvn:com.fasterxml.jackson.core/jackson-databind/2.7.5</bundle>
        <bundle dependency="true">mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-json-provider/2.7.5</bundle>
        <bundle dependency='true'>mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-base/2.7.5</bundle>
        <bundle dependency="true">mvn:com.fasterxml.jackson.module/jackson-module-jaxb-annotations/2.7.5</bundle>
        <bundle dependency="true">mvn:com.fasterxml.jackson.datatype/jackson-datatype-guava/2.7.5</bundle>
    </feature>


    <feature name="brooklyn-api"  version="0.12.0" description="Brooklyn API">
        <feature>brooklyn-utils-common</feature>
        <bundle>mvn:org.apache.brooklyn/brooklyn-api/0.12.0</bundle>
    </feature>

    <feature name="brooklyn-core" version="0.12.0" description="Brooklyn Core">
        <feature>brooklyn-api</feature>

        <bundle>mvn:org.apache.brooklyn/brooklyn-core/0.12.0</bundle>
        <bundle>mvn:org.apache.brooklyn/brooklyn-utils-groovy/0.12.0</bundle>

        <bundle dependency="true">mvn:com.google.code.gson/gson/2.3</bundle>
        <bundle dependency="true">mvn:com.jayway.jsonpath/json-path/2.4.0</bundle>
        <bundle dependency="true">mvn:com.fasterxml.jackson.core/jackson-core/2.7.5</bundle>
        <bundle dependency="true">mvn:com.fasterxml.jackson.core/jackson-databind/2.7.5</bundle>
        <bundle dependency="true">mvn:com.fasterxml.jackson.core/jackson-annotations/2.7.5</bundle>
        <bundle dependency="true">mvn:net.minidev/json-smart/2.3</bundle>
        <bundle dependency="true">mvn:net.minidev/accessors-smart/1.2</bundle>
        <bundle dependency="true">mvn:com.thoughtworks.xstream/xstream/1.4.8</bundle>
        <bundle dependency="true">mvn:org.freemarker/freemarker/2.3.25-incubating</bundle>
        <bundle dependency="true">mvn:com.hierynomus/sshj/0.12.0</bundle>
        <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jzlib/1.1.3_2</bundle> <!-- jzlib version is 1.1.3, but bundle is 1.1.3_2 -->
        <bundle dependency="true">mvn:org.bouncycastle/bcprov-ext-jdk15on/1.51</bundle>
        <bundle dependency="true">mvn:org.bouncycastle/bcpkix-jdk15on/1.51</bundle>
        <bundle dependency="true">mvn:commons-codec/commons-codec/1.9</bundle>
        <bundle dependency="true">mvn:org.apache.commons/commons-lang3/3.3.2</bundle>
        <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xpp3/1.1.4c_7</bundle> <!-- from com.thoughtworks.xstream/xstream -->
        <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.kxml2/2.3.0_3</bundle>

        <!-- TODO: don't use wrap -->
        <bundle dependency="true">wrap:mvn:com.maxmind.geoip2/geoip2/2.8.0-rc1</bundle> <!-- from geoip2 -->
        <bundle dependency="true">wrap:mvn:com.maxmind.db/maxmind-db/1.2.1</bundle>

        <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.reflections/0.9.9_1</bundle>
    </feature>

    <feature name="brooklyn-camp-brooklyn" version="0.12.0" description="Brooklyn CAMP REST API">
        <bundle>mvn:org.apache.brooklyn/brooklyn-camp/0.12.0</bundle>

        <feature>brooklyn-core</feature>
        <feature>brooklyn-camp-base</feature>
        <bundle dependency="true">mvn:commons-beanutils/commons-beanutils/1.9.1</bundle>
        <bundle dependency="true">mvn:commons-collections/commons-collections/3.2.1</bundle>
    </feature>

    <feature name="brooklyn-camp-base" version="0.12.0" description="Brooklyn CAMP Base">
        <bundle>mvn:org.apache.brooklyn.camp/camp-base/0.12.0</bundle>

        <feature>brooklyn-utils-common</feature>
        <bundle dependency="true">mvn:org.apache.commons/commons-compress/1.4</bundle>
        <bundle dependency="true">wrap:mvn:org.tukaani/xz/1.4</bundle>
        <bundle dependency="true">mvn:org.apache.commons/commons-lang3/3.3.2</bundle>
    </feature>

    <feature name="brooklyn-camp-server" version="0.12.0" description="Brooklyn CAMP Server">
        <bundle>mvn:org.apache.brooklyn.camp/camp-server/0.12.0</bundle>

        <feature>brooklyn-camp-base</feature>
        <feature>brooklyn-utils-rest-swagger</feature>
        <feature>pax-jetty</feature>
    </feature>

    <feature name="brooklyn-rest-resources-prereqs" version="0.12.0" description="Brooklyn REST Resources Prerequisites">
        <feature>brooklyn-core</feature>
        <feature>brooklyn-rest-api</feature>
        <feature>brooklyn-camp-brooklyn</feature>
        <feature>brooklyn-camp-base</feature>

        <feature>cxf-jaxrs</feature>
        <bundle dependency="true">mvn:org.apache.cxf/cxf-rt-rs-security-cors/3.1.10</bundle>

        <bundle dependency="true">mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-json-provider/2.7.5</bundle>

        <!-- should be deps of jax-rs-2.0 rest-api project -->
        <bundle dependency="true">mvn:javax.servlet/javax.servlet-api/3.1.0</bundle>
        <bundle dependency="true">mvn:javax.ws.rs/javax.ws.rs-api/2.0.1</bundle>

        <config name="org.apache.cxf.osgi">
            org.apache.cxf.servlet.context = /v1
        </config>
    </feature>

    <feature name="brooklyn-rest-resources" version="0.12.0" description="Brooklyn REST Resources">
        <feature>brooklyn-rest-resources-prereqs</feature>
        <bundle>mvn:org.apache.brooklyn/brooklyn-rest-resources/0.12.0</bundle>
    </feature>

    <feature name="brooklyn-commands"  version="0.12.0"  description="Brooklyn Shell Commands">
        <bundle dependency="true">mvn:org.apache.brooklyn/brooklyn-launcher-common/0.12.0</bundle>
        <bundle>mvn:org.apache.brooklyn/brooklyn-commands/0.12.0</bundle>
    </feature>

    <feature name="brooklyn-software-winrm" version="0.12.0" description="Brooklyn WinRM Software Entities">
        <bundle>mvn:org.apache.brooklyn/brooklyn-software-winrm/0.12.0</bundle>
        <feature>brooklyn-core</feature>
        <bundle dependency="true">mvn:io.cloudsoft.windows/winrm4j/0.5.0</bundle>
        <bundle dependency="true">mvn:io.cloudsoft.windows/winrm4j-client/0.5.0</bundle>
        <bundle>mvn:org.apache.brooklyn/brooklyn-karaf-httpcomponents-extension/0.12.0</bundle>
        <feature>cxf-jaxws</feature>
        <feature>cxf-http-async</feature>
        <feature>cxf-ws-addr</feature>
    </feature>

    <feature name="brooklyn-policy"  version="0.12.0" description="Brooklyn Policies">
        <bundle>mvn:org.apache.brooklyn/brooklyn-policy/0.12.0</bundle>
        <feature>brooklyn-core</feature>
    </feature>

    <feature name="brooklyn-software-base"  version="0.12.0"  description="Brooklyn Software Base">
        <bundle>mvn:org.apache.brooklyn/brooklyn-software-base/0.12.0</bundle>
        <bundle dependency="true">wrap:mvn:org.glassfish.external/opendmk_jmxremote_optional_jar/1.0-b01-ea$Import-Package=javax.management.openmbean,*</bundle>
        <feature>brooklyn-software-winrm</feature>
        <feature>brooklyn-policy</feature>
    </feature>

    <feature name="brooklyn-jmxmp-agent" version="0.12.0" description="Brooklyn Secure JMXMP Agent">
        <bundle>mvn:org.apache.brooklyn/brooklyn-jmxmp-agent/0.12.0</bundle>
        <feature>brooklyn-core</feature>
        <bundle dependency="true">wrap:mvn:org.glassfish.external/opendmk_jmxremote_optional_jar/1.0-b01-ea$Import-Package=javax.management.openmbean,*</bundle>
    </feature>

    <feature name="brooklyn-jmxrmi-agent" version="0.12.0" description="Brooklyn JMX RMI Agent">
        <bundle>mvn:org.apache.brooklyn/brooklyn-jmxrmi-agent/0.12.0</bundle>
    </feature>

    <feature name="brooklyn-locations-jclouds" version="0.12.0" description="Brooklyn Jclouds Location Targets">
        <!--  Override jclouds provided 0.3_1 dependency - jclouds already depends on 1.1, but jclouds-karaf is not updated yet. -->
        <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.java-xmlbuilder/1.1_1</bundle>

        <!--
            OkHttp had OSGi support shortly in 3.0.0, but was immediately reverted in 3.0.1
            https://github.com/square/okhttp/pull/2192
            https://github.com/square/okhttp/issues/2243
            https://github.com/square/okhttp/pull/2246
        -->
        <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.okhttp/2.2.0_2</bundle>
        <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.okio/1.2.0_1</bundle>
        <bundle dependency="true">mvn:org.apache.jclouds.driver/jclouds-okhttp/2.0.2</bundle>

        <bundle dependency="true">mvn:org.apache.jclouds.driver/jclouds-sshj/2.0.2</bundle>
        <!--<bundle dependency="true">mvn:org.apache.jclouds.labs/abiquo/2.0.2</bundle>--> <!-- jclouds abstraction not implemented -->
        <bundle dependency="true">mvn:org.apache.jclouds.api/docker/2.0.2</bundle>

        <bundle>mvn:org.apache.jclouds/jclouds-loadbalancer/2.0.2</bundle>
        <feature>jclouds-services</feature>
        <bundle dependency="true">wrap:mvn:com.jcraft/jsch.agentproxy.sshj/0.0.9$Bundle-Name=wrap%20%3A%3A%20jsch.agentproxy.sshj</bundle>

        <!-- Same as allcompute -->
        <feature>jclouds-aws-ec2</feature>
        <feature>jclouds-api-openstack-nova</feature>
        <feature>jclouds-api-byon</feature>
        <feature>jclouds-api-ec2</feature>
        <feature>jclouds-digitalocean2</feature>
        <feature>jclouds-gogrid</feature>
        <feature>jclouds-elastichosts-lon-b</feature>
        <feature>jclouds-elastichosts-lon-p</feature>
        <feature>jclouds-elastichosts-sat-p</feature>
        <feature>jclouds-openhosting-east1</feature>
        <feature>jclouds-serverlove-z1-man</feature>
        <feature>jclouds-skalicloud-sdg-my</feature>
        <feature>jclouds-go2cloud-jhb1</feature>
        <feature>jclouds-softlayer</feature>
        <feature>jclouds-api-cloudstack</feature>
        <feature>jclouds-profitbricks</feature>
        <!-- feature>hpcloud</feature-->
        <feature>jclouds-rackspace-cloudservers-us</feature>
        <feature>jclouds-rackspace-cloudservers-uk</feature>

        <!-- Same as allblobstore -->
        <feature>jclouds-aws-s3</feature>
        <feature>jclouds-azureblob</feature>
        <feature>jclouds-api-atmos</feature>
        <feature>jclouds-api-openstack-swift</feature>
        <feature>jclouds-rackspace-cloudfiles-uk</feature>
        <feature>jclouds-rackspace-cloudfiles-us</feature>
        <!-- feature>hpcloud</feature -->
        <feature>jclouds-api-filesystem</feature>

        <bundle start-level="85">mvn:org.apache.brooklyn/brooklyn-locations-jclouds/0.12.0</bundle>
        <feature>brooklyn-software-winrm</feature>
        <feature>brooklyn-locations-jclouds-labs</feature>
    </feature>

    <feature name="brooklyn-locations-jclouds-labs" version="0.12.0" description="Brooklyn JClouds Labs Location Targets">
        <bundle>mvn:org.apache.jclouds.labs/azurecompute/2.0.2</bundle>
        <bundle>mvn:org.apache.jclouds.labs/azurecompute-arm/2.0.2</bundle>
        <bundle>mvn:org.apache.jclouds.api/oauth/2.0.2</bundle>
        <bundle>mvn:org.apache.jclouds.common/googlecloud/2.0.2</bundle>
        <bundle>mvn:org.apache.jclouds.provider/google-compute-engine/2.0.2</bundle>
    </feature>

    <feature name="brooklyn-container-service" version="0.12.0" description="Brooklyn Container Service and Location Targets">
        <bundle start-level="85">mvn:org.apache.brooklyn/brooklyn-locations-container/0.12.0</bundle>

        <feature>kubernetes-client</feature>
        <feature>openshift-client</feature>
    </feature>

    <feature name="brooklyn-test-framework" version="0.12.0" description="Brooklyn Test Framework" >
        <bundle>mvn:org.apache.brooklyn/brooklyn-test-framework/0.12.0</bundle>
    </feature>

    <feature name="brooklyn-server-software-all" version="0.12.0" description="Brooklyn All Core Entities">
        <feature>brooklyn-software-base</feature>
        <feature>brooklyn-jmxmp-agent</feature>
        <feature>brooklyn-jmxrmi-agent</feature>
        <feature>brooklyn-test-framework</feature>
    </feature>

    <feature name="brooklyn-osgi-launcher" version="0.12.0" description="Brooklyn init">
        <feature>brooklyn-core</feature>
        <feature>brooklyn-server-software-all</feature>
        <feature>brooklyn-locations-jclouds</feature>
        <feature>brooklyn-container-service</feature>
        <bundle dependency="true">mvn:org.apache.brooklyn/brooklyn-launcher-common/0.12.0</bundle>
        <bundle start-level="90">mvn:org.apache.brooklyn/brooklyn-karaf-init/0.12.0</bundle>
        <bundle start-level="90">mvn:org.apache.brooklyn/brooklyn-karaf-start/0.12.0</bundle>
    </feature>

</features>
