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

    <feature name="ignite-all" version="${project.version}" description="Apache Ignite :: All">
        <details>
            <![CDATA[Aggregate feature for installing all Apache Ignite module + their dependencies.
            
            NOTE #1: Due to a bug in Apache Karaf (KARAF-4129), you must install the ignite-log4j feature explicitly and then either:
            - manually refresh the pax-logging-api framework bundle  - or - 
            - restart the Apache Karaf container.
            You may safely ignore the 'Resource has no uri' exception if you follow this method.

            NOTE #2: This feature *does not* include components that depend on LGPL software (e.g. ignite-hibernate).]]>
        </details>
        <feature>ignite-core</feature>
        <feature>ignite-aop</feature>
        <feature>ignite-camel-ext</feature>
        <feature>ignite-flume-ext</feature>
        <feature>ignite-indexing</feature>
        <feature>ignite-jcl</feature>
        <feature>ignite-jms11-ext</feature>
        <feature>ignite-jta</feature>
        <feature>ignite-kafka-ext</feature>
        <feature>ignite-mqtt-ext</feature>
        <!-- KARAF-4129 Karaf feature containing a fragment that attaches to pax-logging-api cannot be installed
        <feature>ignite-log4j</feature>-->
        <feature>ignite-rest-http</feature>
        <feature>ignite-scalar-2.11</feature>
        <feature>ignite-schedule</feature>
        <feature>ignite-slf4j</feature>
        <feature>ignite-spring</feature>
        <feature>ignite-ssh</feature>
        <feature>ignite-twitter-ext</feature>
        <feature>ignite-urideploy</feature>
        <feature>ignite-web</feature>
        <feature>ignite-zookeeper</feature>
    </feature>

    <feature name="ignite-core" version="${project.version}" description="Apache Ignite :: Core">
        <details><![CDATA[The Apache Ignite core module. This feature also installs the JCache 1.0 specification API.]]></details>
        <bundle start="true" dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.javax-cache-api/${javax.cache.bundle.version}</bundle>
        <bundle dependency="true">mvn:org.apache.ignite/ignite-osgi/${project.version}</bundle>
        <bundle start="true">mvn:org.apache.ignite/ignite-core/${project.version}</bundle>
    </feature>

    <feature name="ignite-aop" version="${project.version}" description="Apache Ignite :: AOP">
        <details><![CDATA[The Apache Ignite AOP module + dependencies.]]></details>
        <feature dependency="true" version="[${spring41.osgi.feature.version},4.2)">spring-aspects</feature>
        <bundle start="true" dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.aopalliance/${aopalliance.bundle.version}</bundle>        
        <bundle start="true" dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.aspectj/${aspectj.bundle.version}</bundle>
        <bundle start="true">mvn:org.apache.ignite/ignite-aop/${project.version}</bundle>
    </feature>

    <feature name="ignite-camel-ext" version="${ignite-camel-ext.version}" description="Apache Ignite :: Camel">
        <details>
            <![CDATA[The Apache Ignite Camel module.

            Make sure to install the Apache Camel feature repository before installing this feature.

                mvn:org.apache.camel.karaf/apache-camel/\${camel.version}/xml/features
            
            Installing this feature will trigger the installation of the 'camel-core' feature from the Camel repository.]]>
        </details>
        <feature>camel-core</feature>
        <bundle start="true">mvn:org.apache.ignite/ignite-camel-ext/${ignite-camel-ext.version}</bundle>
    </feature>

    <feature name="ignite-flume-ext" version="${ignite-flume-ext.version}" description="Apache Ignite :: Flume">
        <details>
            <![CDATA[The Apache Ignite Flume module + dependencies.]]>
        </details>
        <feature prerequisite="true">wrap</feature>
        <bundle start="true" dependency="true">wrap:mvn:org.apache.flume/flume-ng-core/${flume.ng.version}$Bundle-SymbolicName=flume-ng-core&amp;Bundle-Version=${flume.ng.version}</bundle>
        <bundle start="true">mvn:org.apache.ignite/ignite-flume-ext/${ignite-flume-ext.version}</bundle>
    </feature>

    <feature name="ignite-hibernate" version="${project.version}" description="Apache Ignite :: Hibernate">
        <details>
            <![CDATA[The Apache Ignite Hibernate module + dependencies. 
            
            Installing this feature will trigger the installation of the 'hibernate' feature from the Apache Karaf distribution.

            NOTE: Take into account that certain parts of Hibernate are offered under the LGPL license.]]>
        </details>
        <feature>hibernate</feature>
        <bundle start="true">mvn:org.apache.ignite/ignite-hibernate_4.2/${project.version}</bundle>
    </feature>

    <feature name="ignite-indexing" version="${project.version}" description="Apache Ignite :: Indexing">
        <details>
            <![CDATA[The Apache Ignite Indexing module + dependencies. This module is a fragment of ignite-core. 
            
            Be sure to refresh ignite-core manually in case it is not refreshed automatically.]]>
        </details>
        <feature prerequisite="true">wrap</feature>
        <bundle start="true" dependency="true">mvn:org.osgi/org.osgi.enterprise/${osgi.enterprise.version}</bundle>
        <bundle start="true" dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.lucene/${lucene.bundle.version}</bundle>
        <bundle start="true" dependency="true">wrap:mvn:com.h2database/h2/${h2.version}$overwrite=merge&amp;Export-Package=*;version=&quot;${h2.version}&quot;</bundle>
        <bundle start="true" dependency="true">wrap:mvn:org.apache.lucene/lucene-analyzers-common/${lucene.version}$Bundle-SymbolicName=lucene-analyzers-common&amp;Bundle-Version=${lucene.version}</bundle>
        <bundle start="true" dependency="true">wrap:mvn:org.apache.lucene/lucene-queryparser/${lucene.version}$Bundle-SymbolicName=lucene-queryparser&amp;Bundle-Version=${lucene.version}</bundle>
        <bundle start="false">mvn:org.apache.ignite/ignite-indexing/${project.version}</bundle>
    </feature>

    <feature name="ignite-jcl" version="${project.version}" description="Apache Ignite :: JCL">
        <details>
            <![CDATA[The Apache Ignite JCL integration module. In Apache Karaf, this module will integrate with Pax Logging.]]>
        </details>
        <bundle start="true">mvn:org.apache.ignite/ignite-jcl/${project.version}</bundle>
    </feature>

    <feature name="ignite-jms11-ext" version="${ignite-jms11-ext.version}" description="Apache Ignite :: JMS 1.1">
        <details>
            <![CDATA[The Apache Ignite JMS 1.1 module. Make sure to install your broker's JMS client bundle as well.]]>
        </details>
        <bundle start="true" dependency="true">mvn:org.apache.geronimo.specs/geronimo-jms_1.1_spec/${jms.spec.version}</bundle>
        <bundle start="true">mvn:org.apache.ignite/ignite-jms11-ext/${ignite-jms11-ext.version}</bundle>
    </feature>

    <feature name="ignite-jta" version="${project.version}" description="Apache Ignite :: JTA">
        <details>
            <![CDATA[The Apache Ignite JTA module + dependencies. This module is a fragment of ignite-core. 
            
            Be sure to refresh ignite-core manually in case it is not refreshed automatically.
            
            Installing this feature will trigger the installation of the 'transaction' feature from the Apache Karaf distribution.]]>
        </details>
        <feature dependency="true">transaction</feature>
        <bundle start="true">mvn:org.apache.ignite/ignite-jta/${project.version}</bundle>
    </feature>

    <feature name="ignite-kafka-ext" version="${ignite-kafka-ext.version}" description="Apache Ignite :: Kafka">
        <details>
            <![CDATA[The Apache Ignite Kafka module + dependencies. This module installs the Scala 2.11 library bundle.]]>
        </details>
        <feature prerequisite="true">wrap</feature>
        <bundle start="true" dependency="true">mvn:org.scala-lang/scala-library/${scala.library.version}</bundle>
        <bundle start="true" dependency="true">wrap:mvn:com.yammer.metrics/metrics-core/${yammer.metrics.core.version}$Bundle-SymbolicName=yammer-metrics-core&amp;Bundle-Version=2.2.0&amp;Export-Package=*;-noimport:=true;version=${yammer.metrics.core.version}</bundle>
        <bundle start="true" dependency="true">wrap:mvn:com.yammer.metrics/metrics-annotation/${yammer.metrics.annotation.version}$Bundle-SymbolicName=yammer-metrics-annotation&amp;Bundle-Version=2.2.0&amp;Export-Package=*;-noimport:=true;version=${yammer.metrics.annotation.version}</bundle>
        <bundle start="true" dependency="true">wrap:mvn:org.apache.kafka/connect-api/${kafka.version}$Bundle-SymbolicName=connect-api&amp;Bundle-Version=${kafka.version}</bundle>
        <bundle start="true" dependency="true">wrap:mvn:org.apache.kafka/kafka_2.11/${kafka.version}$Bundle-SymbolicName=kafka_2.11&amp;Bundle-Version=${kafka.version}</bundle>
        <bundle start="true" dependency="true">wrap:mvn:org.apache.kafka/kafka-clients/${kafka.version}$Bundle-SymbolicName=kafka-clients&amp;Bundle-Version=${kafka.version}</bundle>
        <bundle start="true">mvn:org.apache.ignite/ignite-kafka-ext/${ignite-kafka-ext.version}</bundle>
    </feature>

    <feature name="ignite-log4j" version="${project.version}" description="Apache Ignite :: log4j">
        <details>
            <![CDATA[The Apache Ignite log4j module + dependencies. 
            
            This module installs an OSGi fragment that exposes extra packages from the Pax Logging bundle required by Ignite. 
            
            Be sure to refresh the Pax Logging bundles manually in case this does not happen automatically.]]>
        </details>
        <bundle dependency="true" start-level="8">mvn:org.apache.ignite/ignite-osgi-paxlogging/${project.version}</bundle>
        <bundle start="true">mvn:org.apache.ignite/ignite-log4j/${project.version}</bundle>
    </feature>

    <feature name="ignite-mqtt-ext" version="${ignite-mqtt-ext.version}" description="Apache Ignite :: MQTT">
        <details>
            <![CDATA[The Apache Ignite MQTT module + dependencies.]]>
        </details>
        <feature prerequisite="true">wrap</feature>
        <bundle start="true" dependency="true">mvn:com.google.guava/guava/${guava.version}</bundle>
        <bundle start="true" dependency="true">mvn:org.eclipse.paho/org.eclipse.paho.client.mqttv3/${paho.version}</bundle>
        <bundle start="true" dependency="true">wrap:mvn:com.github.rholder/guava-retrying/${guava.retrying.version}$Bundle-SymbolicName=guava-retrying&amp;Bundle-SymbolicName=guava-retrying&amp;Bundle-Version=${guava.retrying.version}</bundle>
        <bundle start="true">mvn:org.apache.ignite/ignite-mqtt-ext/${ignite-mqtt-ext.version}</bundle>
    </feature>   

    <feature name="ignite-rest-http" version="${project.version}" description="Apache Ignite :: REST HTTP">
         <!-- NOTICE: XOM cannot be included by default due to an incompatible license;
                      please review its license model and install the dependency manually if you agree. -->
        <details>
            <![CDATA[The Apache Ignite REST HTTP module + dependencies.

            Installing this feature will trigger the installation of the 'http' feature from the Apache Karaf distribution.

            NOTE: Before using this feature you must review the license of the XOM bundle and install it manually if you accept it:
            install -s mvn:xom/xom/1.2.5]]>
        </details>
        <feature dependency="true">http</feature>
        <bundle start="true" dependency="true">mvn:com.fasterxml.jackson.core/jackson-core/${jackson.version}</bundle>
        <bundle start="true" dependency="true">mvn:com.fasterxml.jackson.core/jackson-databind/${jackson.version}</bundle>
        <bundle start="true" dependency="true">mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.version}</bundle>
        <bundle start="true" dependency="true">mvn:commons-lang/commons-lang/${commons.lang.version}</bundle>
        <bundle start="true" dependency="true">mvn:commons-collections/commons-collections/${commons.collections.version}</bundle>
        <bundle start="true">mvn:org.apache.ignite/ignite-rest-http/${project.version}</bundle>
    </feature>

    <feature name="ignite-scalar-2.10" version="${project.version}" description="Apache Ignite :: Scala 2.10">
        <details>
            <![CDATA[The Apache Ignite Scala 2.11 integration module + dependencies. This module installs the Scala 2.10 library bundle.]]>
        </details>
        <bundle start="true" dependency="true">mvn:org.scala-lang/scala-library/${scala210.library.version}</bundle>
        <bundle start="true">mvn:org.apache.ignite/ignite-scalar_2.10/${project.version}</bundle>
    </feature>

    <feature name="ignite-scalar-2.11" version="${project.version}" description="Apache Ignite :: Scala 2.11">
        <details>
            <![CDATA[The Apache Ignite Scala 2.11 integration module + dependencies. This module installs the Scala 2.11 library bundle.]]>
        </details>
        <bundle start="true" dependency="true">mvn:org.scala-lang/scala-library/${scala.library.version}</bundle>
        <bundle start="true">mvn:org.apache.ignite/ignite-scalar/${project.version}</bundle>
    </feature>

    <feature name="ignite-schedule" version="${project.version}" description="Apache Ignite :: Schedule">
        <details>
            <![CDATA[The Apache Ignite Schedule module + dependencies. This module is a fragment of ignite-core.]]>
        </details>
        <feature prerequisite="true">wrap</feature>
        <bundle start="true" dependency="true">wrap:mvn:it.sauronsoftware.cron4j/cron4j/${cron4j.version}$Bundle-SymbolicName=cron4j&amp;Bundle-Version=${cron4j.version}</bundle>
        <bundle start="true">mvn:org.apache.ignite/ignite-schedule/${project.version}</bundle>
    </feature>

    <feature name="ignite-slf4j" version="${project.version}" description="Apache Ignite :: slf4j">
        <details>
            <![CDATA[The Apache Ignite slf4j module.]]>
        </details>
        <bundle start="true">mvn:org.apache.ignite/ignite-slf4j/${project.version}</bundle>
    </feature>

    <feature name="ignite-spring" version="${project.version}" description="Apache Ignite :: Spring Support">
        <details>
            <![CDATA[The Apache Ignite Spring integration module + dependencies. This module is a fragment of ignite-core. 
            
            Be sure to refresh ignite-core in case it is not refreshed automatically.
            
            This feature installs the following features from the Apache Karaf distribution:
              - spring
              - spring-aspects
              - spring-tx
              - spring-jdbc
              
            With version range: [${spring41.osgi.feature.version},4.2).]]>
        </details>
        <feature dependency="true" version="[${spring41.osgi.feature.version},4.2)">spring</feature>
        <feature dependency="true" version="[${spring41.osgi.feature.version},4.2)">spring-aspects</feature>
        <feature dependency="true" version="[${spring41.osgi.feature.version},4.2)">spring-tx</feature>
        <feature dependency="true" version="[${spring41.osgi.feature.version},4.2)">spring-jdbc</feature>
        <bundle start="true">mvn:org.apache.ignite/ignite-spring/${project.version}</bundle>
    </feature>

    <feature name="ignite-ssh" version="${project.version}" description="Apache Ignite :: SSH">
        <details>
            <![CDATA[The Apache Ignite SSH module + dependencies.]]>
        </details>
        <bundle start="true" dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jsch/${jsch.bundle.version}</bundle>
        <bundle start="true">mvn:org.apache.ignite/ignite-ssh/${project.version}</bundle>
    </feature>

    <feature name="ignite-twitter-ext" version="${ignite-twitter-ext.version}" description="Apache Ignite :: Twitter">
        <details>
            <![CDATA[The Apache Ignite Twitter module + dependencies.]]>
        </details>
        <feature prerequisite="true">wrap</feature>
        <bundle start="true" dependency="true">mvn:com.google.guava/guava/${guava14.version}</bundle>
        <bundle start="true" dependency="true">wrap:mvn:com.twitter/hbc-core/${twitter.hbc.version}$Bundle-SymbolicName=Hosebird Client Core&amp;Bundle-Version=${twitter.hbc.version}</bundle>
        <bundle start="true" dependency="true">wrap:mvn:com.twitter/hbc-twitter4j/${twitter.hbc.version}$Bundle-SymbolicName=Hosebird Client Twitter4J&amp;Bundle-Version=${twitter.hbc.version}</bundle>
        <bundle start="true">mvn:org.apache.ignite/ignite-twitter-ext/${ignite-twitter-ext.version}</bundle>
    </feature>

    <feature name="ignite-urideploy" version="${project.version}" description="Apache Ignite :: URI Deploy">
        <details>
            <![CDATA[The Apache Ignite URI Deploy module + dependencies.
            
            This feature installs the following features from the Apache Karaf distribution:
              - spring
              - spring-aspects
              - spring-tx
              
            With version range: [${spring41.osgi.feature.version},4.2).]]>
        </details>
        <feature prerequisite="true">wrap</feature>
        <feature dependency="true" version="[${spring41.osgi.feature.version},4.2)">spring</feature>
        <feature dependency="true" version="[${spring41.osgi.feature.version},4.2)">spring-aspects</feature>
        <feature dependency="true" version="[${spring41.osgi.feature.version},4.2)">spring-tx</feature>
        <bundle start="true" dependency="true">wrap:mvn:net.sf.jtidy/jtidy/${jtidy.version}$Bundle-SymbolicName=JTidy&amp;Bundle-Version=938</bundle>
        <bundle start="true" dependency="true">mvn:commons-codec/commons-codec/${commons.codec.version}</bundle>
        <bundle start="true">mvn:org.apache.ignite/ignite-urideploy/${project.version}</bundle>
    </feature>

    <feature name="ignite-web" version="${project.version}" description="Apache Ignite :: Web">
        <details>
            <![CDATA[The Apache Ignite Web module + dependencies.
            
            This feature installs the 'http' feature from the Apache Karaf distribution.]]>
        </details>
        <feature dependency="true">http</feature>
        <bundle start="true">mvn:org.apache.ignite/ignite-web/${project.version}</bundle>
    </feature>

    <feature name="ignite-zookeeper" version="${project.version}" description="Apache Ignite :: ZooKeeper">
        <details>
            <![CDATA[The Apache Ignite ZooKeeper module + dependencies.]]>
        </details>
        <bundle start="true" dependency="true">mvn:org.apache.zookeeper/zookeeper/${zookeeper.version}</bundle>
        <bundle start="true" dependency="true">mvn:com.google.guava/guava/${guava16.version}</bundle>
        <bundle start="true" dependency="true">mvn:com.fasterxml.jackson.core/jackson-core/${jackson.version}</bundle>
        <bundle start="true" dependency="true">mvn:com.fasterxml.jackson.core/jackson-databind/${jackson.version}</bundle>
        <bundle start="true" dependency="true">mvn:org.apache.curator/curator-client/${curator.version}</bundle>
        <bundle start="true" dependency="true">mvn:org.apache.curator/curator-framework/${curator.version}</bundle>
        <bundle start="true" dependency="true">mvn:org.apache.curator/curator-recipes/${curator.version}</bundle>
        <bundle start="true" dependency="true">mvn:org.apache.curator/curator-x-discovery/${curator.version}</bundle>
        <bundle start="true">mvn:org.apache.ignite/ignite-zookeeper/${project.version}</bundle>
    </feature>

</features>
