/*
 * 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.
 */

ext {
  versions = [:]
  libs = [:]

  // Available if -PscalaVersion is used. This is useful when we want to support a Scala version that has
  // a higher minimum Java requirement than Kafka. This was previously the case for Scala 2.12 and Java 7.
  availableScalaVersions = [ '2.12', '2.13' ]
}

// Add Scala version
def defaultScala212Version = '2.12.14'
def defaultScala213Version = '2.13.10'
if (hasProperty('scalaVersion')) {
  if (scalaVersion == '2.12') {
    versions["scala"] = defaultScala212Version
  } else if (scalaVersion == '2.13') {
    versions["scala"] = defaultScala213Version
  }  else {
    versions["scala"] = scalaVersion
  }
} else {
  versions["scala"] = defaultScala212Version
}

/* Resolve base Scala version according to these patterns:
 1. generally available Scala versions (such as: 2.12.y and 2.13.z) corresponding base versions will be: 2.12 and 2.13 (respectively)
 2. pre-release Scala versions (i.e. milestone/rc, such as: 2.13.0-M5, 2.13.0-RC1, 2.14.0-M1, etc.) will have identical base versions;
    rationale: pre-release Scala versions are not binary compatible with each other and that's the reason why libraries include the full
    Scala release string in their name for pre-releases (see dependencies below with an artifact name suffix '_$versions.baseScala')
*/
if ( !versions.scala.contains('-') ) {
  versions["baseScala"] = versions.scala.substring(0, versions.scala.lastIndexOf("."))
} else {
  versions["baseScala"] = versions.scala
}

versions += [
  activation: "1.1.1",
  apacheda: "1.0.2",
  apacheds: "2.0.0-M24",
  argparse4j: "0.7.0",
  bcpkix: "1.66",
  checkstyle: "8.36.2",
  commonsCli: "1.4",
  dropwizardMetrics: "4.1.12.1",
  gradle: "7.0.2",
  grgit: "4.1.1",
  httpclient: "4.5.13",
  easymock: "4.3",
  jackson: "2.13.2",
  jacksonDatabind: "2.13.4.2",
  jacoco: "0.8.7",
  javassist: "3.27.0-GA",
  jetty: "9.4.54.v20240208",
  jersey: "2.34",
  jline: "3.12.1",
  jmh: "1.32",
  hamcrest: "2.2",
  reload4j: "1.2.19",
  scalaLogging: "3.9.3",
  jaxb: "2.3.0",
  jaxrs: "2.1.1",
  jfreechart: "1.0.0",
  jopt: "5.0.4",
  junit: "5.7.1",
  jqwik: "1.5.0",
  kafka_0100: "0.10.0.1",
  kafka_0101: "0.10.1.1",
  kafka_0102: "0.10.2.2",
  kafka_0110: "0.11.0.3",
  kafka_10: "1.0.2",
  kafka_11: "1.1.1",
  kafka_20: "2.0.1",
  kafka_21: "2.1.1",
  kafka_22: "2.2.2",
  kafka_23: "2.3.1",
  kafka_24: "2.4.1",
  kafka_25: "2.5.1",
  kafka_26: "2.6.2",
  kafka_27: "2.7.1",
  kafka_28: "2.8.0",
  lz4: "1.7.1",
  mavenArtifact: "3.8.1",
  metrics: "2.2.0",
  mockito: "3.9.0",
  netty: "4.1.108.Final",
  powermock: "2.0.9",
  reflections: "0.9.12",
  rocksDB: "7.1.2",
  scalaCollectionCompat: "2.4.4",
  scalafmt: "1.5.1",
  scalaJava8Compat : "1.0.0",
  scoverage: "1.4.1",
  slf4j: "1.7.36",
  snappy: "1.1.10.5",
  spotbugs: "4.2.2",
  zinc: "1.3.5",
  zookeeper: "3.8.4",
  zstd: "1.5.0-2"
]
libs += [
  activation: "javax.activation:activation:$versions.activation",
  apacheda: "org.apache.directory.api:api-all:$versions.apacheda",
  apachedsCoreApi: "org.apache.directory.server:apacheds-core-api:$versions.apacheds",
  apachedsInterceptorKerberos: "org.apache.directory.server:apacheds-interceptor-kerberos:$versions.apacheds",
  apachedsProtocolShared: "org.apache.directory.server:apacheds-protocol-shared:$versions.apacheds",
  apachedsProtocolKerberos: "org.apache.directory.server:apacheds-protocol-kerberos:$versions.apacheds",
  apachedsProtocolLdap: "org.apache.directory.server:apacheds-protocol-ldap:$versions.apacheds",
  apachedsLdifPartition: "org.apache.directory.server:apacheds-ldif-partition:$versions.apacheds",
  apachedsMavibotPartition: "org.apache.directory.server:apacheds-mavibot-partition:$versions.apacheds",
  apachedsJdbmPartition: "org.apache.directory.server:apacheds-jdbm-partition:$versions.apacheds",
  argparse4j: "net.sourceforge.argparse4j:argparse4j:$versions.argparse4j",
  bcpkix: "org.bouncycastle:bcpkix-jdk15on:$versions.bcpkix",
  commonsCli: "commons-cli:commons-cli:$versions.commonsCli",
  commonsCodec: "commons-codec:commons-codec:$versions.commonsCodec",
  dropwizardMetrics: "io.dropwizard.metrics:metrics-core:$versions.dropwizardMetrics",
  easymock: "org.easymock:easymock:$versions.easymock",
  jacksonAnnotations: "com.fasterxml.jackson.core:jackson-annotations:$versions.jackson",
  jacksonDatabind: "com.fasterxml.jackson.core:jackson-databind:$versions.jacksonDatabind",
  jacksonDataformatCsv: "com.fasterxml.jackson.dataformat:jackson-dataformat-csv:$versions.jackson",
  jacksonModuleScala: "com.fasterxml.jackson.module:jackson-module-scala_$versions.baseScala:$versions.jackson",
  jacksonJDK8Datatypes: "com.fasterxml.jackson.datatype:jackson-datatype-jdk8:$versions.jackson",
  jacksonJaxrsJsonProvider: "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:$versions.jackson",
  jaxbApi: "javax.xml.bind:jaxb-api:$versions.jaxb",
  jaxrsApi: "javax.ws.rs:javax.ws.rs-api:$versions.jaxrs",
  javassist: "org.javassist:javassist:$versions.javassist",
  jettyServer: "org.eclipse.jetty:jetty-server:$versions.jetty",
  jettyClient: "org.eclipse.jetty:jetty-client:$versions.jetty",
  jettyServlet: "org.eclipse.jetty:jetty-servlet:$versions.jetty",
  jettyServlets: "org.eclipse.jetty:jetty-servlets:$versions.jetty",
  jerseyContainerServlet: "org.glassfish.jersey.containers:jersey-container-servlet:$versions.jersey",
  jerseyHk2: "org.glassfish.jersey.inject:jersey-hk2:$versions.jersey",
  jline: "org.jline:jline:$versions.jline",
  jmhCore: "org.openjdk.jmh:jmh-core:$versions.jmh",
  jmhCoreBenchmarks: "org.openjdk.jmh:jmh-core-benchmarks:$versions.jmh",
  jmhGeneratorAnnProcess: "org.openjdk.jmh:jmh-generator-annprocess:$versions.jmh",
  joptSimple: "net.sf.jopt-simple:jopt-simple:$versions.jopt",
  junitJupiter: "org.junit.jupiter:junit-jupiter:$versions.junit",
  junitJupiterApi: "org.junit.jupiter:junit-jupiter-api:$versions.junit",
  junitVintageEngine: "org.junit.vintage:junit-vintage-engine:$versions.junit",
  jqwik: "net.jqwik:jqwik:$versions.jqwik",
  hamcrest: "org.hamcrest:hamcrest:$versions.hamcrest",
  kafkaStreams_0100: "org.apache.kafka:kafka-streams:$versions.kafka_0100",
  kafkaStreams_0101: "org.apache.kafka:kafka-streams:$versions.kafka_0101",
  kafkaStreams_0102: "org.apache.kafka:kafka-streams:$versions.kafka_0102",
  kafkaStreams_0110: "org.apache.kafka:kafka-streams:$versions.kafka_0110",
  kafkaStreams_10: "org.apache.kafka:kafka-streams:$versions.kafka_10",
  kafkaStreams_11: "org.apache.kafka:kafka-streams:$versions.kafka_11",
  kafkaStreams_20: "org.apache.kafka:kafka-streams:$versions.kafka_20",
  kafkaStreams_21: "org.apache.kafka:kafka-streams:$versions.kafka_21",
  kafkaStreams_22: "org.apache.kafka:kafka-streams:$versions.kafka_22",
  kafkaStreams_23: "org.apache.kafka:kafka-streams:$versions.kafka_23",
  kafkaStreams_24: "org.apache.kafka:kafka-streams:$versions.kafka_24",
  kafkaStreams_25: "org.apache.kafka:kafka-streams:$versions.kafka_25",
  kafkaStreams_26: "org.apache.kafka:kafka-streams:$versions.kafka_26",
  kafkaStreams_27: "org.apache.kafka:kafka-streams:$versions.kafka_27",
  kafkaStreams_28: "org.apache.kafka:kafka-streams:$versions.kafka_28",
  log4j: "ch.qos.reload4j:reload4j:$versions.reload4j",
  lz4: "org.lz4:lz4-java:$versions.lz4",
  metrics: "com.yammer.metrics:metrics-core:$versions.metrics",
  dropwizardMetrics: "io.dropwizard.metrics:metrics-core:$versions.dropwizardMetrics",
  mockitoCore: "org.mockito:mockito-core:$versions.mockito",
  mockitoInline: "org.mockito:mockito-inline:$versions.mockito",
  mockitoJunitJupiter: "org.mockito:mockito-junit-jupiter:$versions.mockito",
  nettyHandler: "io.netty:netty-handler:$versions.netty",
  nettyTransportNativeEpoll: "io.netty:netty-transport-native-epoll:$versions.netty",
  powermockJunit4: "org.powermock:powermock-module-junit4:$versions.powermock",
  powermockEasymock: "org.powermock:powermock-api-easymock:$versions.powermock",
  reflections: "org.reflections:reflections:$versions.reflections",
  rocksDBJni: "org.rocksdb:rocksdbjni:$versions.rocksDB",
  scalaCollectionCompat: "org.scala-lang.modules:scala-collection-compat_$versions.baseScala:$versions.scalaCollectionCompat",
  scalaJava8Compat: "org.scala-lang.modules:scala-java8-compat_$versions.baseScala:$versions.scalaJava8Compat",
  scalaLibrary: "org.scala-lang:scala-library:$versions.scala",
  scalaLogging: "com.typesafe.scala-logging:scala-logging_$versions.baseScala:$versions.scalaLogging",
  scalaReflect: "org.scala-lang:scala-reflect:$versions.scala",
  slf4jApi: "org.slf4j:slf4j-api:$versions.slf4j",
  slf4jreload4j: "org.slf4j:slf4j-reload4j:$versions.slf4j",
  snappy: "org.xerial.snappy:snappy-java:$versions.snappy",
  zookeeper: "org.apache.zookeeper:zookeeper:$versions.zookeeper",
  jfreechart: "jfreechart:jfreechart:$versions.jfreechart",
  mavenArtifact: "org.apache.maven:maven-artifact:$versions.mavenArtifact",
  zstd: "com.github.luben:zstd-jni:$versions.zstd",
  httpclient: "org.apache.httpcomponents:httpclient:$versions.httpclient",
]
