<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>no.ks.fiks.pom</groupId>
        <artifactId>fiks-ekstern-kotlin-superpom</artifactId>
        <version>1.9.0</version>
    </parent>

    <groupId>no.ks.fiks</groupId>
    <artifactId>altinn-klient</artifactId>
    <version>3.2.2</version>
    <name>${project.artifactId}</name>
    <description>${project.artifactId}</description>
    <url>https://github.com/ks-no/altinn-klient</url>

    <properties>
        <caffeine.version>3.2.3</caffeine.version>
        <kotlin.compiler.incremental>true</kotlin.compiler.incremental>
        <artifactory.publish.excludePatterns>component-test</artifactory.publish.excludePatterns>
        <java.version>21</java.version>
        <maven.compiler.release>${java.version}</maven.compiler.release>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
        <enforcer.jdk.version>${java.version}</enforcer.jdk.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <fiks-maskinporten-client.version>3.4.2</fiks-maskinporten-client.version>
        <virksomhetssertifikat.version>4.0.6</virksomhetssertifikat.version>
        <spring-commons.version>5.0.13</spring-commons.version>
        <spring-service-configuration.version>5.6.0</spring-service-configuration.version>
        <commons.version>5.0.30</commons.version>
        <jackson-module-kotlin.version>2.20.1</jackson-module-kotlin.version>
        <!-- Test-->
        <junit.version>6.0.2</junit.version>
        <test-commons.version>5.0.16</test-commons.version>
        <test-support.version>9.0.0</test-support.version>
        <service-mocks.version>1.3.0</service-mocks.version>
        <io-mock.version>1.14.2</io-mock.version>

        <basePackage>no.ks.fiks.altinn.klient</basePackage>
        <kotlin.version>2.3.10</kotlin.version>
        <spec-folder>${project.basedir}/specs</spec-folder>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.junit</groupId>
                <artifactId>junit-bom</artifactId>
                <version>${junit.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>no.ks.fiks</groupId>
            <artifactId>maskinporten-client</artifactId>
            <version>${fiks-maskinporten-client.version}</version>
        </dependency>
        <dependency>
            <groupId>no.ks.fiks</groupId>
            <artifactId>maskinporten-spring-boot-client</artifactId>
            <version>${fiks-maskinporten-client.version}</version>
        </dependency>
        <dependency>
            <groupId>no.ks.fiks</groupId>
            <artifactId>virksomhetssertifikat</artifactId>
            <version>${virksomhetssertifikat.version}</version>
        </dependency>

        <!-- Spring -->
        <dependency>
            <groupId>no.ks.fiks</groupId>
            <artifactId>commons</artifactId>
            <version>${commons.version}</version>
        </dependency>
        <dependency>
            <groupId>no.ks.fiks</groupId>
            <artifactId>spring-commons</artifactId>
            <version>${spring-commons.version}</version>
        </dependency>
        <dependency>
            <groupId>no.ks.fiks</groupId>
            <artifactId>spring-service-configuration</artifactId>
            <version>${spring-service-configuration.version}</version>
        </dependency>
        <!-- Test-->
        <dependency>
            <groupId>no.ks.fiks</groupId>
            <artifactId>test-support</artifactId>
            <version>${test-support.version}</version>
        </dependency>
        <dependency>
            <groupId>no.ks.fiks</groupId>
            <artifactId>ktest-support</artifactId>
            <version>${test-support.version}</version>
        </dependency>
        <dependency>
            <groupId>no.ks.fiks</groupId>
            <artifactId>test-commons</artifactId>
            <version>${test-commons.version}</version>
        </dependency>
        <dependency>
            <groupId>io.mockk</groupId>
            <artifactId>mockk-jvm</artifactId>
            <version>${io-mock.version}</version>
        </dependency>
        <dependency>
            <groupId>no.ks.fiks</groupId>
            <artifactId>service-fiks-authentication-test-support</artifactId>
            <version>${spring-service-configuration.version}</version>
        </dependency>
        <dependency>
            <groupId>no.ks.fiks</groupId>
            <artifactId>service-mocks</artifactId>
            <version>${service-mocks.version}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.module</groupId>
            <artifactId>jackson-module-kotlin</artifactId>
            <version>${jackson-module-kotlin.version}</version>
        </dependency>

        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-commons</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-engine</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-launcher</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.kotest</groupId>
            <artifactId>kotest-runner-junit5-jvm</artifactId>
            <version>${kotest.version}</version>
        </dependency>
        <dependency>
            <groupId>io.kotest</groupId>
            <artifactId>kotest-assertions-core-jvm</artifactId>
            <version>${kotest.version}</version>
        </dependency>
        <dependency>
            <groupId>com.github.ben-manes.caffeine</groupId>
            <artifactId>caffeine</artifactId>
            <version>${caffeine.version}</version>
        </dependency>
    </dependencies>

    <build>
        <sourceDirectory>src/main/kotlin</sourceDirectory>
        <testSourceDirectory>src/test/kotlin</testSourceDirectory>
        <plugins>
            <plugin>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-maven-plugin</artifactId>
                <version>${kotlin.version}</version>
                <configuration>
                    <jvmTarget>${java.version}</jvmTarget>
                </configuration>
                <executions>
                    <execution>
                        <id>compile</id>
                        <phase>process-sources</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>test-compile</id>
                        <phase>test-compile</phase>
                        <goals>
                            <goal>test-compile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.openapitools</groupId>
                <artifactId>openapi-generator-maven-plugin</artifactId>
                <version>6.6.0</version>
                <executions>
                    <execution>
                        <id>altinn-platform-authorization-v1</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <inputSpec>
                                ${spec-folder}/altinn-platform-authorization-v1.json
                            </inputSpec>
                            <generatorName>java</generatorName>
                            <modelPackage>no.ks.fiks.altinn.klient.authorization.model.v1</modelPackage>
                            <apiPackage>no.ks.fiks.altinn.klient.authorization.api.v1</apiPackage>
                            <invokerPackage>no.ks.fiks.altinn.klient.authorization.invoker.v1</invokerPackage>
                            <output>${project.build.directory}/generated-sources/openapi</output>
                            <typeMappings>
                                <typeMapping>binary=InputStream</typeMapping>
                                <typeMapping>file=InputStream</typeMapping>
                            </typeMappings>
                            <importMappings>
                                <importMapping>InputStream=java.io.InputStream</importMapping>
                            </importMappings>
                            <configOptions>
                                <library>feign</library>
                                <dateLibrary>java8</dateLibrary>
                                <feignVersion>10.x</feignVersion>
                                <java8>true</java8>
                                <useJakartaEe>true</useJakartaEe>
                                <openApiNullable>false</openApiNullable>
                            </configOptions>
                            <generateApiTests>false</generateApiTests>
                            <generateModelTests>false</generateModelTests>
                            <ignoreFileOverride>${project.basedir}/.openapi-generator-ignore</ignoreFileOverride>
                        </configuration>
                    </execution>
                    <execution>
                        <id>altinn-platform-accessmanager-v1-resourceowner</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <inputSpec>
                                ${spec-folder}/altinn-platform-accessmanager-v1-resourceowner.json
                            </inputSpec>
                            <generatorName>java</generatorName>
                            <modelPackage>no.ks.fiks.altinn.klient.authorization.model.v1</modelPackage>
                            <apiPackage>no.ks.fiks.altinn.klient.authorization.api.v1</apiPackage>
                            <invokerPackage>no.ks.fiks.altinn.klient.authorization.invoker.v1</invokerPackage>
                            <output>${project.build.directory}/generated-sources/openapi</output>
                            <typeMappings>
                                <typeMapping>binary=InputStream</typeMapping>
                                <typeMapping>file=InputStream</typeMapping>
                            </typeMappings>
                            <importMappings>
                                <importMapping>InputStream=java.io.InputStream</importMapping>
                            </importMappings>
                            <configOptions>
                                <library>feign</library>
                                <dateLibrary>java8</dateLibrary>
                                <feignVersion>10.x</feignVersion>
                                <java8>true</java8>
                                <useJakartaEe>true</useJakartaEe>
                                <openApiNullable>false</openApiNullable>
                            </configOptions>
                            <generateApiTests>false</generateApiTests>
                            <generateModelTests>false</generateModelTests>
                            <ignoreFileOverride>${project.basedir}/.openapi-generator-ignore</ignoreFileOverride>
                        </configuration>
                    </execution>
                    <execution>
                        <id>altinn-resource-registry-v1</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <inputSpec>
                                ${spec-folder}/altinn-resource-registry-v1.json
                            </inputSpec>
                            <generatorName>java</generatorName>
                            <modelPackage>no.ks.fiks.altinn.klient.authorization.model.v1</modelPackage>
                            <apiPackage>no.ks.fiks.altinn.klient.authorization.api.v1</apiPackage>
                            <invokerPackage>no.ks.fiks.altinn.klient.authorization.invoker.v1</invokerPackage>
                            <output>${project.build.directory}/generated-sources/openapi</output>
                            <typeMappings>
                                <typeMapping>binary=InputStream</typeMapping>
                                <typeMapping>file=InputStream</typeMapping>
                            </typeMappings>
                            <importMappings>
                                <importMapping>InputStream=java.io.InputStream</importMapping>
                            </importMappings>
                            <configOptions>
                                <library>feign</library>
                                <dateLibrary>java8</dateLibrary>
                                <feignVersion>10.x</feignVersion>
                                <java8>true</java8>
                                <useJakartaEe>true</useJakartaEe>
                                <openApiNullable>false</openApiNullable>
                            </configOptions>
                            <generateApiTests>false</generateApiTests>
                            <generateModelTests>false</generateModelTests>
                            <ignoreFileOverride>${project.basedir}/.openapi-generator-ignore</ignoreFileOverride>
                        </configuration>
                    </execution>
                    <execution>
                        <id>altinn-platform-authentication-v1</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <inputSpec>
                                ${spec-folder}/altinn-platform-authentication-v1.json
                            </inputSpec>
                            <generatorName>java</generatorName>
                            <modelPackage>no.ks.fiks.altinn.klient.authentication.model.v1</modelPackage>
                            <apiPackage>no.ks.fiks.altinn.klient.authentication.api.authentication.v1</apiPackage>
                            <invokerPackage>no.ks.fiks.altinn.klient.authentication.invoker.v1</invokerPackage>
                            <output>${project.build.directory}/generated-sources/openapi</output>
                            <typeMappings>
                                <typeMapping>binary=InputStream</typeMapping>
                                <typeMapping>file=InputStream</typeMapping>
                            </typeMappings>
                            <importMappings>
                                <importMapping>InputStream=java.io.InputStream</importMapping>
                            </importMappings>
                            <configOptions>
                                <library>feign</library>
                                <dateLibrary>java8</dateLibrary>
                                <feignVersion>10.x</feignVersion>
                                <java8>true</java8>
                                <useJakartaEe>true</useJakartaEe>
                                <openApiNullable>false</openApiNullable>
                            </configOptions>
                            <generateApiTests>false</generateApiTests>
                            <generateModelTests>false</generateModelTests>
                            <ignoreFileOverride>${project.basedir}/.openapi-generator-ignore</ignoreFileOverride>
                        </configuration>
                    </execution>
                    <execution>
                        <id>altinn-platform-storage-v1</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <inputSpec>
                                ${spec-folder}/altinn-platform-storage-v1.json
                            </inputSpec>
                            <generatorName>java</generatorName>
                            <modelPackage>no.ks.fiks.altinn.klient.instances.model.v1</modelPackage>
                            <apiPackage>no.ks.fiks.altinn.klient.instances.api.v1</apiPackage>
                            <invokerPackage>no.ks.fiks.altinn.klient.instances.invoker.v1</invokerPackage>
                            <output>${project.build.directory}/generated-sources/openapi</output>
                            <typeMappings>
                                <typeMapping>binary=InputStream</typeMapping>
                                <typeMapping>file=InputStream</typeMapping>
                            </typeMappings>
                            <importMappings>
                                <importMapping>InputStream=java.io.InputStream</importMapping>
                            </importMappings>
                            <configOptions>
                                <library>feign</library>
                                <dateLibrary>java8</dateLibrary>
                                <feignVersion>10.x</feignVersion>
                                <java8>true</java8>
                                <useJakartaEe>true</useJakartaEe>
                                <openApiNullable>false</openApiNullable>
                                <useAbstractionForFiles>true</useAbstractionForFiles>
                            </configOptions>
                            <generateApiTests>false</generateApiTests>
                            <generateModelTests>false</generateModelTests>
                            <ignoreFileOverride>${project.basedir}/.openapi-generator-ignore</ignoreFileOverride>
                        </configuration>
                    </execution>
                    <execution>
                        <id>altinn-correspondence-v1</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <inputSpec>
                                ${project.basedir}/specs/altinn-correspondence-v1.json
                            </inputSpec>
                            <generatorName>java</generatorName>
                            <modelPackage>no.ks.fiks.altinn.klient.correspondence.model.v1</modelPackage>
                            <apiPackage>no.ks.fiks.altinn.klient.correspondence.api.v1</apiPackage>
                            <invokerPackage>no.ks.fiks.altinn.klient.correspondence.invoker.v1</invokerPackage>
                            <output>${project.build.directory}/generated-sources/openapi</output>
                            <typeMappings>
                                <typeMapping>binary=InputStream</typeMapping>
                                <typeMapping>file=InputStream</typeMapping>
                            </typeMappings>
                            <importMappings>
                                <importMapping>InputStream=java.io.InputStream</importMapping>
                            </importMappings>
                            <configOptions>
                                <library>feign</library>
                                <dateLibrary>java8</dateLibrary>
                                <feignVersion>10.x</feignVersion>
                                <java8>true</java8>
                                <useJakartaEe>true</useJakartaEe>
                                <openApiNullable>false</openApiNullable>
                            </configOptions>
                            <generateApiTests>false</generateApiTests>
                            <generateModelTests>false</generateModelTests>
                            <ignoreFileOverride>${project.basedir}/.openapi-generator-ignore</ignoreFileOverride>
                        </configuration>
                    </execution>
                    <execution>
                        <id>altinn-platform-events-v1</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <inputSpec>
                                ${project.basedir}/specs/altinn-platform-events-v1.json
                            </inputSpec>
                            <generatorName>java</generatorName>
                            <modelPackage>no.ks.fiks.altinn.klient.events.model.v1</modelPackage>
                            <apiPackage>no.ks.fiks.altinn.klient.events.api.v1</apiPackage>
                            <invokerPackage>no.ks.fiks.altinn.klient.events.invoker.v1</invokerPackage>
                            <output>${project.build.directory}/generated-sources/openapi</output>
                            <configOptions>
                                <library>feign</library>
                                <dateLibrary>java8</dateLibrary>
                                <feignVersion>10.x</feignVersion>
                                <java8>true</java8>
                                <useJakartaEe>true</useJakartaEe>
                                <openApiNullable>false</openApiNullable>
                            </configOptions>
                            <generateApiTests>false</generateApiTests>
                            <generateModelTests>false</generateModelTests>
                            <ignoreFileOverride>${project.basedir}/.openapi-generator-ignore</ignoreFileOverride>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
