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

dependencies {
    modules {
        module("io.swagger.core.v3:swagger-annotations") {
            replacedBy("io.swagger.core.v3:swagger-annotations-jakarta")
        }
    }

    implementation(project(path: ':fineract-core'))
    implementation(project(path: ':fineract-accounting'))
    implementation(project(path: ':fineract-investor'))
    implementation(project(path: ':fineract-loan'))
    implementation(project(path: ':fineract-savings'))
    implementation(project(path: ':fineract-branch'))
    providedRuntime("org.springframework.boot:spring-boot-starter-tomcat")

    // Never use "compile" scope, but make all dependencies either 'implementation', 'runtimeOnly' or 'testCompile'.
    // Note that we never use 'api', because Fineract at least currently is a simple monolithic application ("WAR"), not a library.
    // We also (normally should have) no need to ever use 'compileOnly'.

    // implementation dependencies are directly used (compiled against) in src/main (and src/test)
    //
    implementation(
            project(path: ':fineract-avro-schemas')
            )
    implementation(
            'org.springframework.boot:spring-boot-starter-web',
            'org.springframework.boot:spring-boot-starter-security',
            'org.springframework.boot:spring-boot-starter-cache',
            'org.springframework.boot:spring-boot-starter-oauth2-resource-server',
            'org.springframework.boot:spring-boot-starter-actuator',
            'org.springframework.boot:spring-boot-starter-batch',
            'org.springframework.batch:spring-batch-integration',
            'org.springframework.boot:spring-boot-starter-integration',
            'org.springframework.integration:spring-integration-event',
            'org.springframework.integration:spring-integration-jms',
            'org.springframework.integration:spring-integration-kafka',
            'org.springframework.kafka:spring-kafka',

            'io.micrometer:micrometer-registry-prometheus',
            'io.micrometer:micrometer-registry-otlp',
            'io.micrometer:micrometer-registry-cloudwatch2',

            'io.awspring.cloud:spring-cloud-aws-starter',

            'org.apache.avro:avro',
            'jakarta.ws.rs:jakarta.ws.rs-api',
            'org.glassfish.jersey.media:jersey-media-multipart',

            'org.springframework:spring-jms',
            'org.springframework:spring-context-support',

            'com.google.guava:guava',
            'com.google.code.gson:gson',

            'jakarta.jms:jakarta.jms-api',
            'jakarta.management.j2ee:jakarta.management.j2ee-api',

            'com.squareup.retrofit2:retrofit',
            'com.squareup.okhttp3:okhttp',
            'com.squareup.okhttp3:okhttp-urlconnection',

            'org.apache.commons:commons-lang3',
            'commons-io:commons-io',
            'org.apache.poi:poi',
            'org.apache.poi:poi-ooxml',
            'org.apache.tika:tika-core',
            'org.apache.tika:tika-parser-microsoft-module',
            'org.apache.tika:tika-parser-miscoffice-module',

            'org.liquibase:liquibase-core',

            'com.github.librepdf:openpdf',
            'com.github.spullara.mustache.java:compiler',
            'com.jayway.jsonpath:json-path',

            'javax.cache:cache-api',

            'com.github.spotbugs:spotbugs-annotations',
            'io.swagger.core.v3:swagger-annotations-jakarta',

            'com.google.cloud.sql:mysql-socket-factory-connector-j-8',
            'com.squareup.retrofit2:converter-gson',
            'com.sun.activation:jakarta.activation',
            'com.sun.mail:jakarta.mail',

            'org.springdoc:springdoc-openapi-starter-webmvc-ui',
            'org.mapstruct:mapstruct',

            'io.github.resilience4j:resilience4j-spring-boot3',
            )

    implementation ('software.amazon.msk:aws-msk-iam-auth:2.0.3') {
        exclude group: 'commons-logging'
    }

    implementation 'io.swagger.core.v3:swagger-jaxrs2-jakarta:2.2.19'

    implementation ('org.apache.commons:commons-email') {
        exclude group: 'com.sun.mail', module: 'javax.mail'
        exclude group: 'javax.activation', module: 'activation'
    }

    implementation('org.springframework.boot:spring-boot-starter-jersey') {
        exclude group: 'org.glassfish.hk2.external', module: 'aopalliance-repackaged'
        exclude group: 'org.glassfish.hk2', module: 'hk2-runlevel'
        exclude group: 'org.hibernate.validator', module: 'hibernate-validator'
        exclude group: 'jakarta.activation', module: 'jakarta.activation-api'
    }
    implementation('org.dom4j:dom4j') {
        exclude group: 'javax.xml.bind'
    }
    implementation ('jakarta.xml.bind:jakarta.xml.bind-api') {
        exclude group: 'jakarta.activation'
    }
    implementation ('org.apache.activemq:activemq-client-jakarta') {
        exclude group: 'org.apache.geronimo.specs'
        exclude group: 'javax.annotation', module: 'javax.annotation-api'
    }
    implementation ('org.springframework.boot:spring-boot-starter-data-jpa') {
        exclude group: 'org.hibernate'
    }
    implementation('org.eclipse.persistence:org.eclipse.persistence.jpa') {
        exclude group: 'org.eclipse.persistence', module: 'jakarta.persistence'
    }
    implementation ('org.quartz-scheduler:quartz') {
        exclude group: 'com.zaxxer', module: 'HikariCP-java7'
    }
    implementation('org.apache.commons:commons-csv'){}
    implementation ('software.amazon.awssdk:s3') {
    }
    implementation ('software.amazon.awssdk:auth') {
    }

    implementation ('org.mnode.ical4j:ical4j') {
        exclude group: 'commons-logging'
        exclude group: 'javax.activation'
        exclude group: 'com.sun.mail', module: 'javax.mail'
    }

    implementation ('org.ehcache:ehcache') {
        exclude group: 'com.sun.activation'
    }

    implementation('org.owasp.esapi:esapi') {
        exclude group: 'org.slf4j'
        exclude group: 'log4j'
        exclude group: 'commons-logging'
        exclude group: 'commons-collections'
        exclude group: 'commons-lang'
        exclude group: 'spotbugs-annotations'
        exclude group: 'xml-apis'
    }

    runtimeOnly('org.glassfish.jaxb:jaxb-runtime') {
        exclude group: 'com.sun.activation'
    }

    // runtimeOnly dependencies are things that Fineract code has no direct compile time dependency on, but which must be present at run-time
    runtimeOnly(
            'org.apache.bval:org.apache.bval.bundle',

            // Although fineract (at the time of writing) doesn't have any compile time dep. on httpclient,
            // it's useful to have this for the Spring Boot TestRestTemplate http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-rest-templates-test-utility
            'org.apache.httpcomponents:httpclient'
            )

    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    annotationProcessor 'org.mapstruct:mapstruct-processor'

    implementation 'ch.qos.logback.contrib:logback-json-classic'
    implementation 'ch.qos.logback.contrib:logback-jackson'
    implementation 'org.codehaus.janino:janino'

    implementation 'org.apache.commons:commons-math3'

    implementation 'io.github.classgraph:classgraph'

    // testCompile dependencies are ONLY used in src/test, not src/main.
    // Do NOT repeat dependencies which are ALREADY in implementation or runtimeOnly!
    //
    testImplementation( 'io.cucumber:cucumber-spring',
            'io.github.classgraph:classgraph',
            'io.cucumber:cucumber-core',
            'io.cucumber:cucumber-java',
            'io.cucumber:cucumber-java8',
            'io.cucumber:cucumber-junit-platform-engine',
            )
    testImplementation ('org.springframework.boot:spring-boot-starter-test') {
        exclude group: 'com.jayway.jsonpath', module: 'json-path'
        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
        exclude group: 'jakarta.activation'
        exclude group: 'javax.activation'
        exclude group: 'org.skyscreamer'
    }
    testImplementation ('org.mockito:mockito-inline')
}
