/*
 * 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 = [:]
}

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

/* Resolve base Scala version according to these patterns:
 1. generally available Scala versions (such as: 2.13.z) corresponding base versions will be: 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.80",
  caffeine: "3.2.0",
  bndlib: "7.1.0",
  checkstyle: project.hasProperty('checkstyleVersion') ? checkstyleVersion : "10.20.2",
  commonsLang: "3.18.0",
  commonsValidator: "1.10.0",
  classgraph: "4.8.179",
  gradle: "9.1.0",
  grgit: "4.1.1",
  httpclient: "4.5.14",
  jackson: "2.19.0",
  jacoco: "0.8.13",
  javassist: "3.30.2-GA",
  jetty: "12.0.22",
  jersey: "3.1.10",
  jline: "3.30.4",
  jmh: "1.37",
  hamcrest: "3.0",
  scalaLogging: "3.9.5",
  jaxAnnotation: "1.3.2",
  jaxb: "2.3.1",
  jakartaRs: "3.1.0",
  jakartaServletApi: "6.1.0",
  jfreechart: "1.5.6",
  jopt: "5.0.4",
  jose4j: "0.9.6",
  junit: "5.13.1",
  jqwik: "1.9.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.3",
  kafka_27: "2.7.2",
  kafka_28: "2.8.2",
  kafka_30: "3.0.2",
  kafka_31: "3.1.2",
  kafka_32: "3.2.3",
  kafka_33: "3.3.2",
  kafka_34: "3.4.1",
  kafka_35: "3.5.2",
  kafka_36: "3.6.2",
  kafka_37: "3.7.2",
  kafka_38: "3.8.1",
  kafka_39: "3.9.1",
  kafka_40: "4.0.0",
  kafka_41: "4.1.0",
  log4j2: "2.25.1",
  // When updating lz4 make sure the compression levels in org.apache.kafka.common.record.CompressionType are still valid
  lz4: "1.8.0",
  mavenArtifact: "3.9.6",
  metrics: "2.2.0",
  mockito: "5.20.0",
  opentelemetryProto: "1.3.2-alpha",
  protobuf: "3.25.5", // a dependency of opentelemetryProto
  pcollections: "4.0.2",
  re2j: "1.8",
  rocksDB: "10.1.3",
  // 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.7.14",
  scoverage: "2.0.11",
  slf4j: "1.7.36",
  snappy: "1.1.10.7",
  spotbugs: "4.9.4",
  mockOAuth2Server: "2.2.1",
  zinc: "1.11.0",
  // When updating the zstd version, please do as well in docker/native/native-image-configs/resource-config.json
  // Also make sure the compression levels in org.apache.kafka.common.record.CompressionType are still valid
  zstd: "1.5.6-10",
  junitPlatform: "1.13.1",
  hdrHistogram: "2.2.2",
  hash4j: "0.22.0"
]

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",
  bndlib:"biz.aQute.bnd:biz.aQute.bndlib:$versions.bndlib",
  caffeine: "com.github.ben-manes.caffeine:caffeine:$versions.caffeine",
  classgraph: "io.github.classgraph:classgraph:$versions.classgraph",
  commonsLang: "org.apache.commons:commons-lang3:$versions.commonsLang",
  commonsValidator: "commons-validator:commons-validator:$versions.commonsValidator",
  jacksonAnnotations: "com.fasterxml.jackson.core:jackson-annotations:$versions.jackson",
  jacksonDatabind: "com.fasterxml.jackson.core:jackson-databind:$versions.jackson",
  jacksonDatabindYaml: "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:$versions.jackson",
  jacksonDataformatCsv: "com.fasterxml.jackson.dataformat:jackson-dataformat-csv:$versions.jackson",
  jacksonJDK8Datatypes: "com.fasterxml.jackson.datatype:jackson-datatype-jdk8:$versions.jackson",
  jacksonBlackbird: "com.fasterxml.jackson.module:jackson-module-blackbird:$versions.jackson",
  jacksonJakartarsJsonProvider: "com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-json-provider:$versions.jackson",
  jaxAnnotationApi: "javax.annotation:javax.annotation-api:$versions.jaxAnnotation",
  jaxbApi: "javax.xml.bind:jaxb-api:$versions.jaxb",
  jakartaRsApi: "jakarta.ws.rs:jakarta.ws.rs-api:$versions.jakartaRs",
  jakartaServletApi: "jakarta.servlet:jakarta.servlet-api:$versions.jakartaServletApi",
  jaxrs2Jakarta: "io.swagger.core.v3:swagger-jaxrs2-jakarta:$swaggerVersion",
  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.ee10:jetty-ee10-servlet:$versions.jetty",
  jettyServlets: "org.eclipse.jetty.ee10:jetty-ee10-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",
  junitPlatformSuiteEngine: "org.junit.platform:junit-platform-suite-engine:$versions.junitPlatform",
  junitPlatformLanucher: "org.junit.platform:junit-platform-launcher:$versions.junitPlatform",
  jqwik: "net.jqwik:jqwik:$versions.jqwik",
  hamcrest: "org.hamcrest:hamcrest:$versions.hamcrest",
  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",
  kafkaStreams_34: "org.apache.kafka:kafka-streams:$versions.kafka_34",
  kafkaStreams_35: "org.apache.kafka:kafka-streams:$versions.kafka_35",
  kafkaStreams_36: "org.apache.kafka:kafka-streams:$versions.kafka_36",
  kafkaStreams_37: "org.apache.kafka:kafka-streams:$versions.kafka_37",
  kafkaStreams_38: "org.apache.kafka:kafka-streams:$versions.kafka_38",
  kafkaStreams_39: "org.apache.kafka:kafka-streams:$versions.kafka_39",
  kafkaStreams_40: "org.apache.kafka:kafka-streams:$versions.kafka_40",
  kafkaStreams_41: "org.apache.kafka:kafka-streams:$versions.kafka_41",
  log4j1Bridge2Api: "org.apache.logging.log4j:log4j-1.2-api:$versions.log4j2",
  log4j2Api: "org.apache.logging.log4j:log4j-api:$versions.log4j2",
  log4j2Core: "org.apache.logging.log4j:log4j-core:$versions.log4j2",
  lz4: "org.lz4:lz4-java:$versions.lz4",
  metrics: "com.yammer.metrics:metrics-core:$versions.metrics",
  mockitoCore: "org.mockito:mockito-core:$versions.mockito",
  mockitoJunitJupiter: "org.mockito:mockito-junit-jupiter:$versions.mockito",
  pcollections: "org.pcollections:pcollections:$versions.pcollections",
  opentelemetryProto: "io.opentelemetry.proto:opentelemetry-proto:$versions.opentelemetryProto",
  protobuf: "com.google.protobuf:protobuf-java:$versions.protobuf",
  re2j: "com.google.re2j:re2j:$versions.re2j",
  rocksDBJni: "org.rocksdb:rocksdbjni:$versions.rocksDB",
  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",
  slf4jLog4j2: "org.apache.logging.log4j:log4j-slf4j-impl:$versions.log4j2",
  snappy: "org.xerial.snappy:snappy-java:$versions.snappy",
  spotbugs: "com.github.spotbugs:spotbugs-annotations:$versions.spotbugs",
  swaggerAnnotations: "io.swagger.core.v3:swagger-annotations:$swaggerVersion",
  mockOAuth2Server: "no.nav.security:mock-oauth2-server:$versions.mockOAuth2Server",
  jfreechart: "org.jfree: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",
  hdrHistogram: "org.hdrhistogram:HdrHistogram:$versions.hdrHistogram",
  hash4j: "com.dynatrace.hash4j:hash4j:$versions.hash4j",
]
