plugins {
    id "java-library"
    id "maven-publish"

    id "me.champeau.gradle.japicmp"
    id "me.champeau.jmh"
    id "ru.vyarus.animalsniffer"
}

description = "gRPC: Netty"

configurations {
    alpnagent
}

evaluationDependsOn(project(':grpc-core').path)

dependencies {
    api project(':grpc-core'),
            libraries.netty
    implementation libraries.netty_proxy_handler,
            libraries.guava,
            libraries.errorprone,
            libraries.perfmark

    // Tests depend on base class defined by core module.
    testImplementation project(':grpc-core').sourceSets.test.output,
            project(':grpc-api').sourceSets.test.output,
            project(':grpc-testing'),
            project(':grpc-testing-proto')
    testRuntimeOnly libraries.netty_tcnative,
            libraries.conscrypt,
            libraries.netty_epoll
    signature "org.codehaus.mojo.signature:java17:1.0@signature"
    alpnagent libraries.jetty_alpn_agent
}

import net.ltgt.gradle.errorprone.CheckSeverity

[compileJava, compileTestJava].each() {
    // Netty retuns a lot of futures that we mostly don't care about.
    it.options.errorprone.check("FutureReturnValueIgnored", CheckSeverity.OFF)
}

javadoc {
    options.links 'http://netty.io/4.1/api/'
    exclude 'io/grpc/netty/Internal*'
}

project.sourceSets {
    main { java { srcDir "${projectDir}/third_party/netty/java" } }
}

test {
    // Allow testing Jetty ALPN in TlsTest
    jvmArgs "-javaagent:" + configurations.alpnagent.asPath
}

jmh {
    // Workaround
    // https://github.com/melix/jmh-gradle-plugin/issues/97#issuecomment-316664026
    includeTests = true
}

checkstyleMain {
    source = source.minus(fileTree(dir: "src/main", include: "**/Http2ControlFrameLimitEncoder.java"))
}
