<?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="rcomp-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.0.0 http://karaf.apache.org/xmlns/features/v1.0.0">
    <repository>mvn:org.apache.karaf.decanter/apache-karaf-decanter/1.3.0/xml/features</repository>

    <feature name="reactor" version="3.0.7">
        <bundle dependency="true">mvn:org.reactivestreams/reactive-streams/1.0.0</bundle>
        <bundle>mvn:io.projectreactor/reactor-core/3.0.7.RELEASE</bundle>
    </feature>

    <feature name="rcomp-api" version="${project.version}">
        <feature>scr</feature>
        <bundle>mvn:org.reactivestreams/reactive-streams/1.0.0</bundle>
        <bundle dependency="true">mvn:org.apache.karaf.rcomp/rcomp-api/${project.version}</bundle>
    </feature>
    
    <feature name="rcomp-kafka" version="${project.version}">
        <feature>rcomp-api</feature>
        <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.kafka-clients/0.11.0.0_1</bundle>
        <bundle>mvn:org.apache.karaf.rcomp/rcomp-kafka/${project.version}</bundle>
        <bundle>mvn:org.apache.karaf.rcomp/kafka-appender/${project.version}</bundle>
        <config name=""></config>
    </feature>
    
    <feature name="rcomp-mqtt" version="${project.version}">
        <feature>rcomp-api</feature>
        <bundle dependency="true">mvn:org.eclipse.paho/org.eclipse.paho.client.mqttv3/1.1.1</bundle>
        <bundle>mvn:org.apache.karaf.rcomp/rcomp-mqtt/${project.version}</bundle>
    </feature>
    
    <feature name="rcomp-eventadmin" version="${project.version}">
        <feature>rcomp-api</feature>
        <feature>eventadmin</feature>
        <bundle>mvn:org.apache.karaf.rcomp/rcomp-eventadmin/${project.version}</bundle>
    </feature>
    
    <feature name="rcomp-mail" version="${project.version}">
        <feature>rcomp-api</feature>
        <bundle dependency="true">mvn:javax.mail/mail/1.5.0-b01</bundle>
        <bundle>mvn:org.apache.karaf.rcomp/rcomp-mail/${project.version}</bundle>
    </feature>
    
    <feature name="rcomp-examples" version="${project.version}">
        <feature>rcomp-eventadmin</feature>
        <feature>rcomp-mqtt</feature>
        <feature>rcomp-mail</feature>
        <feature>reactor</feature>
        <bundle>wrap:mvn:io.projectreactor.addons/reactor-extra/3.0.7.RELEASE</bundle>
        <bundle>mvn:org.apache.karaf.rcomp/rcomp-examples/${project.version}</bundle>
    </feature>

    <!-- Demo decanter kafka appender to show decanter works with rcomp -->
    <feature name="rcomp-decanter-appender-kafka" version="${project.version}">
        <feature>decanter-common</feature>
        <feature>rcomp-eventadmin</feature>
        <feature>rcomp-kafka</feature>
        <feature>reactor</feature>
        <bundle>mvn:org.apache.karaf.rcomp/kafka-appender/${project.version}</bundle>
    </feature>


</features>