<?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
  ~
  ~   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.
  -->

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <artifactId>apache-streams</artifactId>
        <groupId>org.apache.streams</groupId>
        <version>0.6.2-SNAPSHOT</version>
    </parent>

    <artifactId>streams-contrib</artifactId>

    <packaging>pom</packaging>
    <name>streams-contrib</name>

    <description>Contributed modules for communicating with services using non-Streams protocols and/or non-Activity data formats.</description>

    <properties>

    </properties>

    <modules>
        <module>streams-amazon-aws</module>
        <module>streams-persist-cassandra</module>
        <module>streams-persist-console</module>
        <module>streams-persist-elasticsearch</module>
        <module>streams-persist-filebuffer</module>
        <module>streams-persist-hbase</module>
        <module>streams-persist-hdfs</module>
        <module>streams-persist-graph</module>
        <module>streams-persist-kafka</module>
        <module>streams-persist-mongo</module>
        <module>streams-persist-neo4j</module>
        <module>streams-persist-riak</module>
        <module>streams-processor-fullcontact</module>
        <module>streams-processor-jackson</module>
        <module>streams-processor-json</module>
        <module>streams-processor-peopledatalabs</module>
        <module>streams-processor-peoplepattern</module>
        <module>streams-processor-pipl</module>
        <module>streams-processor-regex</module>
        <module>streams-processor-thedatagroup</module>
        <module>streams-processor-urls</module>
        <module>streams-provider-facebook</module>
        <module>streams-provider-google</module>
        <module>streams-provider-instagram</module>
        <module>streams-provider-linkedin</module>
        <module>streams-provider-moreover</module>
        <module>streams-provider-sprinklr</module>
        <module>streams-provider-sysomos</module>
        <module>streams-provider-twitter</module>
        <module>streams-provider-rss</module>
        <module>streams-provider-youtube</module>
    </modules>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.apache.streams</groupId>
                <artifactId>streams-config</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.streams</groupId>
                <artifactId>streams-core</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.streams</groupId>
                <artifactId>streams-pojo</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.streams</groupId>
                <artifactId>streams-pojo-extensions</artifactId>
                <version>${project.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>
