/*
 * 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 'org.apache.beam.module'
}

applyJavaNature(
        automaticModuleName: 'org.apache.beam.sdk.extensions.schemaio.expansion',
        validateShadowJar: false,
        shadowClosure: {
            manifest {
                attributes "Main-Class": "org.apache.beam.sdk.expansion.service.ExpansionService"
            }
        }
)

configurations.runtimeClasspath {
  // Pin avro to 1.11.4 due to https://github.com/apache/beam/issues/34968
  // cannot upgrade this to the latest version due to https://github.com/apache/beam/issues/34993
  resolutionStrategy.force 'org.apache.avro:avro:1.11.4'
}

dependencies {
    implementation project(path: ":sdks:java:expansion-service")
    permitUnusedDeclared project(path: ":sdks:java:expansion-service") // BEAM-11761
    implementation project(":sdks:java:extensions:google-cloud-platform-core")
    permitUnusedDeclared project(path: ":sdks:java:extensions:google-cloud-platform-core") // BEAM-11761
    implementation project(":sdks:java:io:csv")
    permitUnusedDeclared project(path: ":sdks:java:io:csv") // BEAM-11761
    implementation project(":sdks:java:io:jdbc")
    permitUnusedDeclared project(":sdks:java:io:jdbc") // BEAM-11761
    implementation project(":sdks:java:io:json")
    permitUnusedDeclared project(path: ":sdks:java:io:json") // BEAM-11761
    runtimeOnly library.java.everit_json_schema
    implementation library.java.postgres
    permitUnusedDeclared library.java.postgres // BEAM-11761
    implementation project(path: ":model:pipeline", configuration: "shadow")
    implementation project(path: ":sdks:java:core", configuration: "shadow")
    implementation library.java.vendored_grpc_1_69_0
    implementation library.java.vendored_guava_32_1_2_jre
    // Stage default drivers for JdbcIO schema transforms
    implementation 'mysql:mysql-connector-java:8.0.22'
    permitUnusedDeclared 'mysql:mysql-connector-java:8.0.22' // BEAM-11761
    implementation 'com.oracle.database.jdbc:ojdbc8:23.2.0.0'
    permitUnusedDeclared 'com.oracle.database.jdbc:ojdbc8:23.2.0.0' // BEAM-11761
    implementation 'com.microsoft.sqlserver:mssql-jdbc:12.2.0.jre11'
    permitUnusedDeclared 'com.microsoft.sqlserver:mssql-jdbc:12.2.0.jre11' // BEAM-11761
    implementation 'com.google.cloud:alloydb-jdbc-connector:1.2.0'
    permitUnusedDeclared 'com.google.cloud:alloydb-jdbc-connector:1.2.0'
    implementation 'com.google.cloud.sql:postgres-socket-factory:1.25.0'
    permitUnusedDeclared 'com.google.cloud.sql:postgres-socket-factory:1.25.0'
    implementation 'com.google.cloud.sql:mysql-socket-factory-connector-j-8:1.25.0'
    permitUnusedDeclared 'com.google.cloud.sql:mysql-socket-factory-connector-j-8:1.25.0'
    testImplementation library.java.junit
    testImplementation library.java.mockito_core
    runtimeOnly ("org.xerial:sqlite-jdbc:3.49.1.0")
}

task runExpansionService (type: JavaExec) {
    mainClass = "org.apache.beam.sdk.expansion.service.ExpansionService"
    classpath = sourceSets.test.runtimeClasspath
    args = [project.findProperty("constructionService.port") ?: "8097"]
}

shadowJar {
    manifest {
        attributes(["Multi-Release": true])
    }
}