<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>no.ks.fiks.pom</groupId>
    <artifactId>fiks-ekstern-super-pom</artifactId>
    <version>1.2.8</version>
  </parent>
  <groupId>no.ks.fiks</groupId>
  <artifactId>fiks-io-klient-java</artifactId>
  <version>3.4.1</version>
  <name>FIKS IO Java-klient</name>
  <description>Klient for integrasjoner mot Fiks IO. Håndterer sending, mottak, kryptering, dekryptering og signering</description>
  <url>https://github.com/ks-no/fiks-io-klient-java</url>
  <scm>
    <connection>scm:git:git@github.com:ks-no/fiks-io-klient-java.git</connection>
    <developerConnection>scm:git:git@github.com:ks-no/fiks-io-klient-java.git</developerConnection>
    <url>https://github.com/ks-no/fiks-io-klient-java</url>
  </scm>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <spec.location>https://ks-no.github.io/api/</spec.location>
    <spec.name>fiksio-katalog-api-v1</spec.name>
    <java.version>17</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>

    <commons-io.version>2.18.0</commons-io.version>
    <download-maven-plugin.version>1.13.0</download-maven-plugin.version>
    <feign-form-version>3.8.0</feign-form-version>
    <feign-version>13.5</feign-version>
    <fiks-dokumentlager-klient.version>3.0.3</fiks-dokumentlager-klient.version>
    <fiks-feign-interceptors.version>1.1.5</fiks-feign-interceptors.version>
    <fiks-io-asice-handler.version>2.2.0</fiks-io-asice-handler.version>
    <fiks-io-commons.version>2.0.3</fiks-io-commons.version>
    <fiks-io-send-klient.version>3.3.0</fiks-io-send-klient.version>
    <fiks-maskinporten-client.version>3.3.2</fiks-maskinporten-client.version>
    <guava.version>33.4.0-jre</guava.version>
    <jackson-databind-nullable.version>0.2.6</jackson-databind-nullable.version>
    <jackson.version>2.18.2</jackson.version>
    <jacoco-maven-plugin.version>0.8.12</jacoco-maven-plugin.version>
    <jakarta.annotation-api.version>3.0.0</jakarta.annotation-api.version>
    <junit-jupiter.version>5.11.4</junit-jupiter.version>
    <kryptering.version>2.0.7</kryptering.version>
    <ks-commons-asic.version>1.0.2</ks-commons-asic.version>
    <logback.version>1.5.16</logback.version>
    <lombok.version>1.18.36</lombok.version>
    <maven-surefire-plugin.version>3.0.0</maven-surefire-plugin.version>
    <mockito.version>5.15.2</mockito.version>
    <openapi-generator-maven-plugin.version>7.10.0</openapi-generator-maven-plugin.version>
    <rabbitmq-amqp-client.version>5.24.0</rabbitmq-amqp-client.version>
    <scribejava.version>8.3.3</scribejava.version>
    <slf4j.version>2.0.7</slf4j.version>
    <spec.postfix>json</spec.postfix>
    <swagger-core-version>1.6.14</swagger-core-version>
  </properties>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>${guava.version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson</groupId>
        <artifactId>jackson-bom</artifactId>
        <version>${jackson.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.junit</groupId>
        <artifactId>junit-bom</artifactId>
        <version>${junit-jupiter.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>${logback.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>${slf4j.version}</version>
    </dependency>
    <dependency>
      <groupId>no.ks.fiks</groupId>
      <artifactId>maskinporten-client</artifactId>
      <version>${fiks-maskinporten-client.version}</version>
    </dependency>
    <dependency>
      <groupId>no.ks.fiks</groupId>
      <artifactId>feign-interceptors</artifactId>
      <version>${fiks-feign-interceptors.version}</version>
    </dependency>
    <dependency>
      <groupId>no.ks.fiks</groupId>
      <artifactId>commons-asic</artifactId>
      <version>${ks-commons-asic.version}</version>
      <exclusions>
        <exclusion>
          <groupId>org.bouncycastle</groupId>
          <artifactId>bcpkix-jdk15on</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>no.ks.fiks</groupId>
      <artifactId>kryptering</artifactId>
      <version>${kryptering.version}</version>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>${lombok.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>no.ks.fiks</groupId>
      <artifactId>dokumentlager-klient</artifactId>
      <version>${fiks-dokumentlager-klient.version}</version>
    </dependency>
    <dependency>
      <groupId>no.ks.fiks</groupId>
      <artifactId>fiks-io-commons</artifactId>
      <version>${fiks-io-commons.version}</version>
    </dependency>
    <dependency>
      <groupId>no.ks.fiks</groupId>
      <artifactId>fiks-io-asice-handler</artifactId>
      <version>${fiks-io-asice-handler.version}</version>
    </dependency>
    <dependency>
      <groupId>no.ks.fiks</groupId>
      <artifactId>fiks-io-send-klient</artifactId>
      <version>${fiks-io-send-klient.version}</version>
    </dependency>
    <dependency>
      <groupId>com.rabbitmq</groupId>
      <artifactId>amqp-client</artifactId>
      <version>${rabbitmq-amqp-client.version}</version>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>${commons-io.version}</version>
    </dependency>
    <dependency>
      <groupId>io.swagger</groupId>
      <artifactId>swagger-annotations</artifactId>
      <version>${swagger-core-version}</version>
    </dependency>
    <!-- Feign deps -->
    <dependency>
      <groupId>io.github.openfeign</groupId>
      <artifactId>feign-core</artifactId>
      <version>${feign-version}</version>
    </dependency>
    <dependency>
      <groupId>io.github.openfeign</groupId>
      <artifactId>feign-jackson</artifactId>
      <version>${feign-version}</version>
    </dependency>
    <dependency>
      <groupId>io.github.openfeign</groupId>
      <artifactId>feign-slf4j</artifactId>
      <version>${feign-version}</version>
    </dependency>
    <dependency>
      <groupId>io.github.openfeign.form</groupId>
      <artifactId>feign-form</artifactId>
      <version>${feign-form-version}</version>
    </dependency>
    <dependency>
      <groupId>io.github.openfeign</groupId>
      <artifactId>feign-okhttp</artifactId>
      <version>${feign-version}</version>
      <scope>provided</scope>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>io.github.openfeign</groupId>
      <artifactId>feign-hc5</artifactId>
      <version>${feign-version}</version>
    </dependency>
    <!-- /Feign deps -->
    <dependency>
      <groupId>com.fasterxml.jackson.datatype</groupId>
      <artifactId>jackson-datatype-jdk8</artifactId>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.datatype</groupId>
      <artifactId>jackson-datatype-jsr310</artifactId>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
    </dependency>
    <dependency>
      <groupId>org.openapitools</groupId>
      <artifactId>jackson-databind-nullable</artifactId>
      <version>${jackson-databind-nullable.version}</version>
    </dependency>
    <dependency>
      <groupId>jakarta.annotation</groupId>
      <artifactId>jakarta.annotation-api</artifactId>
      <version>${jakarta.annotation-api.version}</version>
    </dependency>
    <dependency>
      <groupId>com.github.scribejava</groupId>
      <artifactId>scribejava-core</artifactId>
      <version>${scribejava.version}</version>
    </dependency>
    <dependency>
      <groupId>org.junit.platform</groupId>
      <artifactId>junit-platform-commons</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-core</artifactId>
      <version>${mockito.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-junit-jupiter</artifactId>
      <version>${mockito.version}</version>
      <scope>test</scope>
    </dependency>

  </dependencies>
  <build>
    <resources>
      <resource>
        <filtering>true</filtering>
        <directory>${basedir}/src/main/resources</directory>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>com.googlecode.maven-download-plugin</groupId>
        <artifactId>download-maven-plugin</artifactId>
        <version>${download-maven-plugin.version}</version>
        <executions>
          <execution>
            <phase>generate-sources</phase>
            <goals>
              <goal>wget</goal>
            </goals>
            <configuration>
              <uri>${spec.location}${spec.name}.${spec.postfix}</uri>
              <outputDirectory>${project.build.directory}</outputDirectory>
              <skipCache>true</skipCache>
              <overwrite>true</overwrite>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.openapitools</groupId>
        <artifactId>openapi-generator-maven-plugin</artifactId>
        <version>${openapi-generator-maven-plugin.version}</version>
        <executions>
          <execution>
            <phase>generate-sources</phase>
            <goals>
              <goal>generate</goal>
            </goals>
            <configuration>
              <inputSpec>${project.build.directory}/${spec.name}.${spec.postfix}</inputSpec>
              <generatorName>java</generatorName>
              <configOptions>
                <dateLibrary>java8</dateLibrary>
                <feignVersion>10.x</feignVersion>
                <java8>true</java8>
                <useJakartaEe>true</useJakartaEe>
              </configOptions>
              <modelPackage>${project.groupId}.fiksio.client.api.katalog.model</modelPackage>
              <apiPackage>${project.groupId}.fiksio.client.api.katalog.api</apiPackage>
              <invokerPackage>${project.groupId}.fiksio.client.api.katalog.invoker</invokerPackage>
              <generateApiTests>false</generateApiTests>
              <generateModelTests>false</generateModelTests>
              <generateSupportingFiles>true</generateSupportingFiles>
              <library>feign</library>
              <addCompileSourceRoot>true</addCompileSourceRoot>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>${jacoco-maven-plugin.version}</version>
        <configuration>
          <excludes>
            <exclude>**/katalog/*/*</exclude>
          </excludes>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <profiles>
    <profile>
      <id>useLocalSpec</id>
      <activation>
        <property>
          <name>useLocalSpec</name>
        </property>
      </activation>
      <properties>
        <spec.location>/tmp/api-specs/</spec.location>
      </properties>
    </profile>
  </profiles>
</project>
