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

plugins {
    id 'java'
    id 'org.apache.beam.module'
}

applyJavaNature(
        automaticModuleName: 'org.apache.beam.sdk.io.cdap',
)
provideIntegrationTestingDependencies()
enableJavaPerformanceTesting()

description = "Apache Beam :: CDAP :: Java"
ext.summary = """Apache Beam SDK provides a simple, Java-based
interface for integration with CDAP plugins."""

/** Define the list of runners which execute a precommit test.
 * Some runners are run from separate projects, see the preCommit task below
 * for details.
 */

dependencies {
    implementation library.java.cdap_api
    implementation library.java.cdap_api_commons
    implementation (library.java.cdap_common) {
        exclude module: 'log4j-over-slf4j'
    }
    implementation library.java.cdap_etl_api
    implementation library.java.cdap_etl_api_spark
    implementation library.java.cdap_hydrator_common
    implementation (library.java.cdap_plugin_hubspot) {
        // Excluding the module for scala 2.11, because Spark 3.x uses scala
        // 2.12 instead.
        exclude group: "com.fasterxml.jackson.module", module: "jackson-module-scala_2.11"
    }
    implementation library.java.cdap_plugin_salesforce
    implementation library.java.cdap_plugin_service_now
    implementation library.java.cdap_plugin_zendesk
    implementation library.java.commons_lang3
    implementation library.java.guava
    implementation library.java.hadoop_common
    implementation library.java.hadoop_mapreduce_client_core
    implementation library.java.jackson_core
    implementation library.java.jackson_databind
    implementation library.java.slf4j_api
    implementation (library.java.spark3_streaming) {
        // Excluding `org.slf4j:jul-to-slf4j` which was introduced as a
        // transitive dependency in Spark 3.5.0 (particularly from
        // spark-common-utils_2.12) and would cause stack overflow together with
        // `org.slf4j:slf4j-jdk14`.
        exclude group: "org.slf4j", module: "jul-to-slf4j"
    }
    implementation library.java.tephra
    implementation library.java.vendored_guava_32_1_2_jre
    implementation project(path: ":sdks:java:core", configuration: "shadow")
    implementation project(":sdks:java:io:sparkreceiver:3")
    implementation project(":sdks:java:io:hadoop-format")
    testImplementation library.java.cdap_plugin_service_now
    testImplementation library.java.cdap_etl_api
    testImplementation library.java.hadoop_common
    testImplementation library.java.vendored_guava_32_1_2_jre
    testImplementation library.java.junit
    testImplementation library.java.mockito_core
    testImplementation library.java.postgres
    testImplementation library.java.testcontainers_postgresql
    testImplementation project(path: ":sdks:java:extensions:avro", configuration: "testRuntimeMigration")
    testImplementation project(path: ":sdks:java:testing:test-utils")
    testImplementation project(path: ":runners:direct-java", configuration: "shadow")
    testImplementation project(path: ":sdks:java:io:common")
}
