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

<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/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>net.microfalx.bom</groupId>
    <artifactId>bom-frameworks</artifactId>
    <version>1.0.11</version>
    <packaging>pom</packaging>

    <parent>
        <groupId>net.microfalx.bom</groupId>
        <artifactId>bom</artifactId>
        <version>1.0.11</version>
    </parent>

    <name>BOM :: Frameworks</name>

    <properties>

        <!-- Runtime -->

        <apache.lucene.version>10.1.0</apache.lucene.version>
        <apache.tika.version>3.1.0</apache.tika.version>
        <apache.pulsar.version>4.0.3</apache.pulsar.version>
        <apache.kafka.version>3.9.0</apache.kafka.version>
        <apache.activemq.version>2.39.0</apache.activemq.version>
        <apache.groovy.version>4.0.26</apache.groovy.version>

        <opentelemetry.version>1.48.0</opentelemetry.version>
        <prometheus.metrics.version>1.3.6</prometheus.metrics.version>
        <rest-assured.version>5.5.1</rest-assured.version>
        <rsocket.version>1.1.5</rsocket.version>
        <jetty.version>12.0.17</jetty.version>
        <jetty-ee10.version>12.0.17</jetty-ee10.version>
        <jersey.version>3.1.10</jersey.version>
        <hibernate.version>6.6.11.Final</hibernate.version>
        <zipkin.brave.version>6.1.0</zipkin.brave.version>
        <zipkin.reporter.version>3.5.0</zipkin.reporter.version>
        <infinispan.version>15.1.7.Final</infinispan.version>
        <kotlin.version>2.1.10</kotlin.version>
        <kotlin.coroutines.version>1.10.1</kotlin.coroutines.version>
        <kotlin.serialization.version>1.8.0</kotlin.serialization.version>
        <graphql-java.version>22.3</graphql-java.version>
        <caffeine.version>3.2.0</caffeine.version>

        <byte-buddy.version>1.17.2</byte-buddy.version>

    </properties>

    <dependencyManagement>
        <dependencies>

            <!-- Internal BOMs -->

            <dependency>
                <groupId>net.microfalx.bom</groupId>
                <artifactId>bom-base</artifactId>
                <version>${project.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- 3rd party BOMs -->

            <dependency>
                <groupId>io.zipkin.brave</groupId>
                <artifactId>brave-bom</artifactId>
                <version>${zipkin.brave.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>io.zipkin.reporter2</groupId>
                <artifactId>zipkin-reporter-bom</artifactId>
                <version>${zipkin.reporter.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.apache.groovy</groupId>
                <artifactId>groovy-bom</artifactId>
                <version>${apache.groovy.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.hibernate.orm</groupId>
                <artifactId>hibernate-platform</artifactId>
                <version>${hibernate.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>io.rest-assured</groupId>
                <artifactId>rest-assured-bom</artifactId>
                <version>${rest-assured.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>io.opentelemetry</groupId>
                <artifactId>opentelemetry-bom</artifactId>
                <version>${opentelemetry.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>io.prometheus</groupId>
                <artifactId>prometheus-metrics-bom</artifactId>
                <version>${prometheus.metrics.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.apache.pulsar</groupId>
                <artifactId>pulsar-bom</artifactId>
                <version>${apache.pulsar.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.apache.activemq</groupId>
                <artifactId>artemis-bom</artifactId>
                <version>${apache.activemq.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-bom</artifactId>
                <version>${jetty.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.eclipse.jetty.ee10</groupId>
                <artifactId>jetty-ee10-bom</artifactId>
                <version>${jetty-ee10.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.glassfish.jersey</groupId>
                <artifactId>jersey-bom</artifactId>
                <version>${jersey.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.infinispan</groupId>
                <artifactId>infinispan-bom</artifactId>
                <version>${infinispan.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-bom</artifactId>
                <version>${kotlin.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.jetbrains.kotlinx</groupId>
                <artifactId>kotlinx-coroutines-bom</artifactId>
                <version>${kotlin.coroutines.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.jetbrains.kotlinx</groupId>
                <artifactId>kotlinx-serialization-bom</artifactId>
                <version>${kotlin.serialization.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>io.rsocket</groupId>
                <artifactId>rsocket-bom</artifactId>
                <version>${rsocket.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- Frameworks without BOM -->

            <!-- Apache Lucene -->

            <dependency>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-core</artifactId>
                <version>${apache.lucene.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-queries</artifactId>
                <version>${apache.lucene.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-codecs</artifactId>
                <version>${apache.lucene.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-queryparser</artifactId>
                <version>${apache.lucene.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-suggest</artifactId>
                <version>${apache.lucene.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-facet</artifactId>
                <version>${apache.lucene.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-highlighter</artifactId>
                <version>${apache.lucene.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-misc</artifactId>
                <version>${apache.lucene.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-backward-codecs</artifactId>
                <version>${apache.lucene.version}</version>
            </dependency>

            <!-- Apache Tika -->

            <dependency>
                <groupId>org.apache.tika</groupId>
                <artifactId>tika-core</artifactId>
                <version>${apache.tika.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.tika</groupId>
                <artifactId>tika-parser-code-module</artifactId>
                <version>${apache.tika.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.tika</groupId>
                <artifactId>tika-parser-digest-commons</artifactId>
                <version>${apache.tika.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.tika</groupId>
                <artifactId>tika-parser-pdf-module</artifactId>
                <version>${apache.tika.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.tika</groupId>
                <artifactId>tika-parser-xml-module</artifactId>
                <version>${apache.tika.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.tika</groupId>
                <artifactId>tika-parser-xmp-commons</artifactId>
                <version>${apache.tika.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.tika</groupId>
                <artifactId>tika-parser-html-module</artifactId>
                <version>${apache.tika.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.tika</groupId>
                <artifactId>tika-parser-text-module</artifactId>
                <version>${apache.tika.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.tika</groupId>
                <artifactId>tika-langdetect-optimaize</artifactId>
                <version>${apache.tika.version}</version>
            </dependency>

            <!-- Apache Kafka -->

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>connect</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>connect-api</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>connect-basic-auth-extension</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>connect-file</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>connect-json</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>connect-mirror</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>connect-mirror-client</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>connect-runtime</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>connect-transforms</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>generator</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-clients</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-clients</artifactId>
                <version>${apache.kafka.version}</version>
                <classifier>test</classifier>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-log4j-appender</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-metadata</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-raft</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-server</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-server-common</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-server-common</artifactId>
                <version>${apache.kafka.version}</version>
                <classifier>test</classifier>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-shell</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-storage</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-storage-api</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-streams</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-streams-scala_2.12</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-streams-scala_2.13</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-streams-test-utils</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka-tools</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka_2.12</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka_2.12</artifactId>
                <version>${apache.kafka.version}</version>
                <classifier>test</classifier>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka_2.13</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka_2.13</artifactId>
                <version>${apache.kafka.version}</version>
                <classifier>test</classifier>
            </dependency>

            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>trogdor</artifactId>
                <version>${apache.kafka.version}</version>
            </dependency>

            <!-- Caffeine -->

            <dependency>
                <groupId>com.github.ben-manes.caffeine</groupId>
                <artifactId>caffeine</artifactId>
                <version>${caffeine.version}</version>
            </dependency>

            <dependency>
                <groupId>com.github.ben-manes.caffeine</groupId>
                <artifactId>guava</artifactId>
                <version>${caffeine.version}</version>
            </dependency>

            <dependency>
                <groupId>com.github.ben-manes.caffeine</groupId>
                <artifactId>jcache</artifactId>
                <version>${caffeine.version}</version>
            </dependency>

            <dependency>
                <groupId>com.github.ben-manes.caffeine</groupId>
                <artifactId>simulator</artifactId>
                <version>${caffeine.version}</version>
            </dependency>

            <!-- Other -->

            <dependency>
                <groupId>net.bytebuddy</groupId>
                <artifactId>byte-buddy</artifactId>
                <version>${byte-buddy.version}</version>
            </dependency>

            <dependency>
                <groupId>net.bytebuddy</groupId>
                <artifactId>byte-buddy-agent</artifactId>
                <version>${byte-buddy.version}</version>
            </dependency>

            <!-- Selenium Grid needs an older version -->

            <dependency>
                <groupId>com.graphql-java</groupId>
                <artifactId>graphql-java</artifactId>
                <version>${graphql-java.version}</version>
            </dependency>

        </dependencies>
    </dependencyManagement>

</project>
