repositories {
    maven { url = "https://build.shibboleth.net/maven/releases" }
}

ext {
    jwtVersion = '0.13.0'
}

bootRun {
    enabled = false
}

spotless {
        java {
        target 'src/**/java/**/*.java'
        googleJavaFormat(googleJavaFormatVersion).aosp().reorderImports(false)

        importOrder("java", "javax", "org", "com", "net", "io", "jakarta", "lombok", "me", "stirling")
        toggleOffOn()
        trimTrailingWhitespace()
        leadingTabsToSpaces()
        endWithNewline()
    }
    yaml {
        target '**/*.yml', '**/*.yaml'
        trimTrailingWhitespace()
        leadingTabsToSpaces()
        endWithNewline()
    }
    format 'gradle', {
        target '**/gradle/*.gradle', '**/*.gradle'
        trimTrailingWhitespace()
        leadingTabsToSpaces()
        endWithNewline()
    }
}
dependencies {
    implementation project(':common')

    api 'org.springframework:spring-jdbc'
    api 'org.springframework:spring-webmvc'
    api 'org.springframework.session:spring-session-core'
    api "org.springframework.security:spring-security-core:$springSecuritySamlVersion"
    api "org.springframework.security:spring-security-saml2-service-provider:$springSecuritySamlVersion"
    api 'org.springframework.boot:spring-boot-starter-jetty'
    api 'org.springframework.boot:spring-boot-starter-security'
    api 'org.springframework.boot:spring-boot-starter-data-jpa'
    api 'org.springframework.boot:spring-boot-starter-oauth2-client'
    api 'org.springframework.boot:spring-boot-starter-mail'
    api 'org.springframework.boot:spring-boot-starter-cache'
    api 'com.github.ben-manes.caffeine:caffeine'
    api 'io.swagger.core.v3:swagger-core-jakarta:2.2.41'
    implementation 'com.bucket4j:bucket4j_jdk17-core:8.15.0'

    // https://mvnrepository.com/artifact/com.bucket4j/bucket4j_jdk17
    implementation 'org.bouncycastle:bcprov-jdk18on:1.83'

    implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5:3.1.3.RELEASE'
    api 'io.micrometer:micrometer-registry-prometheus'
    implementation 'com.unboundid.product.scim2:scim2-sdk-client:4.1.0'

    api "io.jsonwebtoken:jjwt-api:$jwtVersion"
    runtimeOnly "io.jsonwebtoken:jjwt-impl:$jwtVersion"
    runtimeOnly "io.jsonwebtoken:jjwt-jackson:$jwtVersion"
    runtimeOnly 'com.h2database:h2:2.3.232' // Don't upgrade h2database
    runtimeOnly 'org.postgresql:postgresql:42.7.8'
    constraints {
        implementation "org.opensaml:opensaml-core:$openSamlVersion"
        implementation "org.opensaml:opensaml-saml-api:$openSamlVersion"
        implementation "org.opensaml:opensaml-saml-impl:$openSamlVersion"
    }
    implementation 'com.coveo:saml-client:5.0.0'
}

tasks.register('prepareKotlinBuildScriptModel') {}

tasks.register('type3SignatureTool', JavaExec) {
    group = 'type3'
    description = 'Dump Type3 font signatures and glyph coverage for the Type3 library'
    classpath = sourceSets.main.runtimeClasspath
    mainClass = 'stirling.software.SPDF.service.pdfjson.type3.tool.Type3SignatureTool'
    standardInput = System.in
}
