/*
 * 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 {
    depVersions = null
    depLibs = null
}

depVersions = [
    arquillianCubeDocker: "1.18.2",
    arquillianJunit: "1.6.0.Final",
    bcFips: "1.0.2",
    bouncycastle: "1.69",
    commonsCli: "1.4",
    commonsCodec: "1.14",
    commonsCollections4: "4.1",
    commonsCompress: "1.19",
    commonsConfiguration: "1.10",
    commonsIO: "2.7",
    commonsLang2: "2.6",
    commonsLang3: "3.6",
    commonsBeanutils: "1.9.3",
    curator: "5.1.0",
    dockerJava: "3.2.5",
    dropwizard: "3.2.5",
    errorprone: "2.4.0",
    etcd: "0.5.11",
    freebuilder: "2.7.0",
    gradleTooling: "4.0.1",
    grpc: "1.42.1",
    groovy: "2.5.8",
    guava: "30.1-jre",
    hamcrest: "1.3",
    hdrhistogram: "2.1.4",
    httpclient: "4.5.13",
    jackson: "2.11.1",
    jcommander: "1.78",
    jctools: "2.1.2",
    jetty: "9.4.43.v20210629",
    jmh: "1.19",
    jmock: "2.8.2",
    jna: "3.2.7",
    jsr305: "3.0.2",
    junit: "4.12",
    junitFoundation: "11.0.0",
    kerby: "1.1.1",
    log4j: "1.2.27",
    lombok: "1.18.20",
    lz4: "1.3.0",
    mockito: "3.0.0",
    netty: "4.1.72.Final",
    nettyTcnativeBoringSsl: "2.0.46.Final",
    powermock: "2.0.2",
    prometheus: "0.0.21",
    protobuf: "3.14.0",
    reflections: "0.9.11",
    rocksDb: "6.13.3",
    slf4j: "1.7.25",
    snakeyaml: "1.19",
    spotbugsAnnotations: "3.1.8",
    protocGenGrpcJava: "1.12.0",
    shrinkwrap:"3.1.4",
    snappy: "1.1.7.7",
    thrift: "0.14.2",
    testcontainers: "1.15.1",
    vertx: "3.9.2",
    yahooDatasketches: "0.8.3",
    zookeeper: "3.6.2",
]

depLibs = [
    bcpkixJdk15on: "org.bouncycastle:bcpkix-jdk15on:${depVersions.bouncycastle}",
    bcproveExtJdk15on: "org.bouncycastle:bcprov-ext-jdk15on:${depVersions.bouncycastle}",
    bcFips: "org.bouncycastle:bc-fips:${depVersions.bcFips}",
    commonsCli: "commons-cli:commons-cli:${depVersions.commonsCli}",
    arquillianCubeDocker: "org.arquillian.cube:arquillian-cube-docker:${depVersions.arquillianCubeDocker}",
    arquillianJunitContainer: "org.jboss.arquillian.junit:arquillian-junit-container:${depVersions.arquillianJunit}",
    arquillianJunitStandalone: "org.jboss.arquillian.junit:arquillian-junit-standalone:${depVersions.arquillianJunit}",
    commonsCodec: "commons-codec:commons-codec:${depVersions.commonsCodec}",
    commonsCollections4: "org.apache.commons:commons-collections4:${depVersions.commonsCollections4}",
    commonsCompress: "org.apache.commons:commons-compress:${depVersions.commonsCompress}",
    commonsConfiguration: "commons-configuration:commons-configuration:${depVersions.commonsConfiguration}",
    commonsIO: "commons-io:commons-io:${depVersions.commonsIO}",
    commonsLang2: "commons-lang:commons-lang:${depVersions.commonsLang2}",
    commonsLang3: "org.apache.commons:commons-lang3:${depVersions.commonsLang3}",
    commonsBeanutils: "commons-beanutils:commons-beanutils:${depVersions.commonsBeanutils}",
    curatorFramework: "org.apache.curator:curator-framework:${depVersions.curator}",
    curatorRecipes: "org.apache.curator:curator-recipes:${depVersions.curator}",
    dockerJava: "com.github.docker-java:docker-java:${depVersions.dockerJava}",
    errorprone: "com.google.errorprone:error_prone_annotations:${depVersions.errorprone}",
    freebuilder: "org.inferred:freebuilder:${depVersions.freebuilder}",
    gradleTooling: "org.gradle:gradle-tooling-api:${depVersions.gradleTooling}",
    grpc: "io.grpc:grpc-all:${depVersions.grpc}",
    groovy: "org.codehaus.groovy:groovy-all:${depVersions.groovy}",
    guava: "com.google.guava:guava:${depVersions.guava}",
    hdrHistogram: "org.hdrhistogram:HdrHistogram:${depVersions.hdrhistogram}",
    hamcrest: "org.hamcrest:hamcrest-all:${depVersions.hamcrest}",
    httpclient: "org.apache.httpcomponents:httpclient:${depVersions.httpclient}",
    jacksonAnnotations: "com.fasterxml.jackson.core:jackson-annotations:${depVersions.jackson}",
    jacksonCore: "com.fasterxml.jackson.core:jackson-core:${depVersions.jackson}",
    jacksonDatabind: "com.fasterxml.jackson.core:jackson-databind:${depVersions.jackson}",
    jcommander: "com.beust:jcommander:${depVersions.jcommander}",
    jctools: "org.jctools:jctools-core:${depVersions.jctools}",
    jettyServlet: "org.eclipse.jetty:jetty-servlet:${depVersions.jetty}",
    jmock: "org.jmock:jmock:${depVersions.jmock}",
    jmhCore: "org.openjdk.jmh:jmh-core:${depVersions.jmh}",
    jmhGeneratorAnnprocess: "org.openjdk.jmh:jmh-generator-annprocess:${depVersions.jmh}",
    jna: "net.java.dev.jna:jna:${depVersions.jna}",
    jsr305: "com.google.code.findbugs:jsr305:${depVersions.jsr305}",
    junit: "junit:junit:${depVersions.junit}",
    junitFoundation: "com.nordstrom.tools:junit-foundation:${depVersions.junitFoundation}",
    kerbySimpleKdc: "org.apache.kerby:kerb-simplekdc:${depVersions.kerby}",
    log4j: "log4j:log4j:${depVersions.log4j}",
    lombok: "org.projectlombok:lombok:${depVersions.lombok}",
    lz4: "net.jpountz.lz4:lz4:${depVersions.lz4}",
    metricsCore: "io.dropwizard.metrics:metrics-core:${depVersions.dropwizard}",
    metricsJvm: "io.dropwizard.metrics:metrics-jvm:${depVersions.dropwizard}",
    metricsGraphite: "io.dropwizard.metrics:metrics-graphite:${depVersions.dropwizard}",
    mockito: "org.mockito:mockito-core:${depVersions.mockito}",
    nettyBuffer: "io.netty:netty-buffer:${depVersions.netty}",
    nettyCommon: "io.netty:netty-common:${depVersions.netty}",
    nettyHandler: "io.netty:netty-handler:${depVersions.netty}",
    nettyTcnativeBoringSsl: "io.netty:netty-tcnative-boringssl-static:${depVersions.nettyTcnativeBoringSsl}",
    nettyTransport: "io.netty:netty-transport:${depVersions.netty}",
    nettyTransportNativeEpoll: "io.netty:netty-transport-native-epoll:${depVersions.netty}",
    powermockJunit: "org.powermock:powermock-module-junit4:${depVersions.powermock}",
    powermockMockito: "org.powermock:powermock-api-mockito2:${depVersions.powermock}",
    prometheusSimpleClient: "io.prometheus:simpleclient:${depVersions.prometheus}",
    prometheusSimpleClientHotspot: "io.prometheus:simpleclient_hotspot:${depVersions.prometheus}",
    prometheusSimpleClientServlet: "io.prometheus:simpleclient_servlet:${depVersions.prometheus}",
    protobuf: "com.google.protobuf:protobuf-java:${depVersions.protobuf}",
    protocGenGrpcJava: "io.grpc:protoc-gen-grpc-java:${depVersions.protocGenGrpcJava}",
    protoc: "com.google.protobuf:protoc:${depVersions.protobuf}",
    reflections: "org.reflections:reflections:${depVersions.reflections}",
    rocksDb: "org.rocksdb:rocksdbjni:${depVersions.rocksDb}",
    slf4j: "org.slf4j:slf4j-api:${depVersions.slf4j}",
    slf4jSimple: "org.slf4j:slf4j-simple:${depVersions.slf4j}",
    slf4jLog4j: "org.slf4j:slf4j-log4j12:${depVersions.slf4j}",
    shrinkwrapImpl: "org.jboss.shrinkwrap.resolver:shrinkwrap-resolver-impl-maven:${depVersions.shrinkwrap}",
    shrinkwrapApi: "org.jboss.shrinkwrap.resolver:shrinkwrap-resolver-api:${depVersions.shrinkwrap}",
    snappy: "org.xerial.snappy:snappy-java:${depVersions.snappy}",
    snakeyaml: "org.yaml:snakeyaml:${depVersions.snakeyaml}",
    spotbugsAnnotations: "com.github.spotbugs:spotbugs-annotations:${depVersions.spotbugsAnnotations}",
    thrift: dependencies.create("org.apache.thrift:libthrift:${depVersions.thrift}") {
        exclude group: 'org.apache.tomcat.embed', module: 'tomcat-embed-core'
        exclude group: 'javax.annotation', module: 'javax.annotation-api'
    },
    testcontainers: "org.testcontainers:testcontainers:${depVersions.testcontainers}",
    vertxCore: "io.vertx:vertx-core:${depVersions.vertx}",
    vertxWeb: "io.vertx:vertx-web:${depVersions.vertx}",
    yahooDatasketches: "com.yahoo.datasketches:sketches-core:${depVersions.yahooDatasketches}",
    zookeeper: "org.apache.zookeeper:zookeeper:${depVersions.zookeeper}",
    zookeeperTest: "org.apache.zookeeper:zookeeper:${depVersions.zookeeper}:tests"
]
