<?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-${project.version}"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:noNamespaceSchemaLocation="http://karaf.apache.org/xmlns/features/v1.4.0">

    <feature name="brooklyn-software-network" version="${project.version}" description="Brooklyn Network Software Entities">
        <bundle>mvn:org.apache.brooklyn/brooklyn-software-network/${project.version}</bundle>
        <feature>brooklyn-software-base</feature>
    </feature>

    <feature name="brooklyn-software-cm" version="${project.version}" description="Configuration Management modules">
        <bundle>mvn:org.apache.brooklyn/brooklyn-software-cm-chef/${project.version}</bundle>
        <bundle>mvn:org.apache.brooklyn/brooklyn-software-cm-salt/${project.version}</bundle>
        <bundle>mvn:org.apache.brooklyn/brooklyn-software-cm-ansible/${project.version}</bundle>
    </feature>

    <feature name="brooklyn-software-osgi" version="${project.version}" description="Brooklyn OSGi Software Entities">
        <bundle>mvn:org.apache.brooklyn/brooklyn-software-osgi/${project.version}</bundle>
        <feature>brooklyn-core</feature>
        <feature>brooklyn-api</feature>
        <feature>brooklyn-software-base</feature>
        <bundle dependency="true">mvn:com.google.guava/guava/${guava.version}</bundle>
    </feature>

    <feature name="brooklyn-software-database" version="${project.version}" description="Brooklyn Database Software Entities">
        <bundle>mvn:org.apache.brooklyn/brooklyn-software-database/${project.version}</bundle>
        <feature>brooklyn-core</feature>
        <feature>brooklyn-api</feature>
        <feature>brooklyn-software-base</feature>
        <bundle dependency="true">mvn:com.google.guava/guava/${guava.version}</bundle>
    </feature>

    <feature name="brooklyn-software-webapp" version="${project.version}" description="Brooklyn Web App Software Entities">
        <bundle>mvn:org.apache.brooklyn/brooklyn-software-webapp/${project.version}</bundle>
        <feature>brooklyn-software-base</feature>
        <bundle dependency="true">wrap:mvn:org.hibernate/jtidy/${jtidy.version}</bundle>
    </feature>

    <feature name="brooklyn-software-messaging" version="${project.version}" description="Brooklyn Messaging Software Entities">
        <bundle>mvn:org.apache.brooklyn/brooklyn-software-messaging/${project.version}</bundle>
        <feature>brooklyn-software-base</feature>
    </feature>

    <feature name="brooklyn-software-nosql" version="${project.version}" description="Brooklyn NoSQL Data Store Software Entities">
        <bundle>mvn:org.apache.brooklyn/brooklyn-software-nosql/${project.version}</bundle>
        <feature>brooklyn-software-base</feature>
        <feature>brooklyn-software-database</feature>
        <feature>brooklyn-software-webapp</feature>
        <bundle dependency="true">mvn:org.mongodb/mongo-java-driver/3.0.3</bundle>
    </feature>

    <feature name="brooklyn-software-monitoring" version="${project.version}" description="Brooklyn Monitoring Software Entities">
        <bundle>mvn:org.apache.brooklyn/brooklyn-software-monitoring/${project.version}</bundle>
        <feature>brooklyn-core</feature>
        <feature>brooklyn-api</feature>
        <feature>brooklyn-software-base</feature>
        <bundle dependency="true">mvn:com.google.guava/guava/${guava.version}</bundle>
    </feature>

    <feature name="brooklyn-library-catalog" version="${project.version}" description="Brooklyn Library Catalog">
        <bundle>mvn:org.apache.brooklyn/brooklyn-library-catalog/${project.version}</bundle>
    </feature>

    <feature name="brooklyn-library-all" version="${project.version}" description="Brooklyn All Library Entities">
        <feature>brooklyn-software-network</feature>
        <feature>brooklyn-software-cm</feature>
        <feature>brooklyn-software-osgi</feature>
        <feature>brooklyn-software-database</feature>
        <feature>brooklyn-software-webapp</feature>
        <feature>brooklyn-software-messaging</feature>
        <feature>brooklyn-software-nosql</feature>
        <feature>brooklyn-software-monitoring</feature>
        <feature>brooklyn-library-catalog</feature>
    </feature>


</features>
