<?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/${reactor.version}</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>