/*
 * 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.15'
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
}

// When adding, removing or updating dependencies, please also update the LICENSE-binary file accordingly.
// See https://issues.apache.org/jira/browse/KAFKA-12622 for steps to verify the LICENSE-binary file is correct.
versions += [
  activation: "1.1.1",
  apacheda: "1.0.2",
  apacheds: "2.0.0-M24",
  argparse4j: "0.7.0",
  bcpkix: "1.73",
  checkstyle: "8.36.2",
  commonsCli: "1.4",
  commonsValidator: "1.7",
  dropwizardMetrics: "4.1.12.1",
  gradle: "8.1.1",
  grgit: "4.1.1",
  httpclient: "4.5.14",
  easymock: "4.3",
  jackson: "2.13.5",
  jacksonDatabind: "2.13.5",
  jacoco: "0.8.10",
  javassist: "3.29.2-GA",
  jetty: "9.4.51.v20230217",
  jersey: "2.39.1",
  jline: "3.22.0",
  jmh: "1.36",
  hamcrest: "2.2",
  scalaLogging: "3.9.4",
  jaxAnnotation: "1.3.2",
  jaxb: "2.3.1",
  jaxrs: "2.1.1",
  jfreechart: "1.0.0",
  jopt: "5.0.4",
  jose4j: "0.9.3",
  junit: "5.9.3",
  jqwik: "1.7.2",
  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.2",
  kafka_30: "3.0.2",
  kafka_31: "3.1.2",
  kafka_32: "3.2.3",
  kafka_33: "3.3.1",
  lz4: "1.8.0",
  mavenArtifact: "3.8.4",
  metrics: "2.2.0",
  mockito: "4.9.0",
  netty: "4.1.92.Final",
  pcollections: "4.0.1",
  powermock: "2.0.9",
  reflections: "0.9.12",
  reload4j: "1.2.25",
  rocksDB: "7.1.2",
  scalaCollectionCompat: "2.10.0",
  // When updating the scalafmt version please also update the version field in checkstyle/.scalafmt.conf. scalafmt now
  // has the version field as mandatory in its configuration, see
  // https://github.com/scalameta/scalafmt/releases/tag/v3.1.0.
  scalafmt: "3.5.9",
  scalaJava8Compat : "1.0.2",
  scoverage: "1.9.3",
  slf4j: "1.7.36",
  snappy: "1.1.10.0",
  spotbugs: "4.7.3",
  swaggerAnnotations: "2.2.8",
  swaggerJaxrs2: "2.2.8",
  zinc: "1.8.0",
  zookeeper: "3.6.4",
  zstd: "1.5.5-1"
]
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-jdk18on:$versions.bcpkix",
  commonsCli: "commons-cli:commons-cli:$versions.commonsCli",
  commonsValidator: "commons-validator:commons-validator:$versions.commonsValidator",
  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",
  jaxAnnotationApi: "javax.annotation:javax.annotation-api:$versions.jaxAnnotation",
  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",
  jose4j: "org.bitbucket.b_c:jose4j:$versions.jose4j",
  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",
  kafkaStreams_30: "org.apache.kafka:kafka-streams:$versions.kafka_30",
  kafkaStreams_31: "org.apache.kafka:kafka-streams:$versions.kafka_31",
  kafkaStreams_32: "org.apache.kafka:kafka-streams:$versions.kafka_32",
  kafkaStreams_33: "org.apache.kafka:kafka-streams:$versions.kafka_33",
  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",
  pcollections: "org.pcollections:pcollections:$versions.pcollections",
  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",
  slf4jlog4j: "org.slf4j:slf4j-log4j12:$versions.slf4j",
  snappy: "org.xerial.snappy:snappy-java:$versions.snappy",
  swaggerAnnotations: "io.swagger.core.v3:swagger-annotations:$versions.swaggerAnnotations",
  swaggerJaxrs2: "io.swagger.core.v3:swagger-jaxrs2:$versions.swaggerJaxrs2",
  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"
]
