<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright © Microsoft Corporation
  ~
  ~ Licensed 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.
  -->

<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>
    <artifactId>notification-azure</artifactId>
    <version>0.25.0-SNAPSHOT</version>
    <name>notification-azure</name>
    <description>Azure implementation for Notification service</description>
    <packaging>jar</packaging>

  <parent>
    <groupId>org.opengroup.osdu</groupId>
    <artifactId>os-notification</artifactId>
    <version>0.25.0-SNAPSHOT</version>
    <relativePath>../../pom.xml</relativePath>
  </parent>

  <properties>
    <java.version>17</java.version>
    <maven.compiler.target>${java.version}</maven.compiler.target>
    <maven.compiler.source>${java.version}</maven.compiler.source>
    <jacoco-maven-plugin.version>0.8.10</jacoco-maven-plugin.version>
    <osdu.notification-core.version>0.25.0-SNAPSHOT</osdu.notification-core.version>
    <springframework.version>4.3.0.RELEASE</springframework.version>
    <reactor.netty.version>0.11.0.RELEASE</reactor.netty.version>
    <reactor.core.version>3.3.0.RELEASE</reactor.core.version>
    <osdu.corelibazure.version>0.23.2</osdu.corelibazure.version>
    <osdu.oscorecommon.version>0.23.3</osdu.oscorecommon.version>
    <junit.version>5.6.0</junit.version>
    <jjwt.version>3.8.1</jjwt.version>
    <mockito.version>2.23.0</mockito.version>
    <spring-boot.version>2.7.7</spring-boot.version>
    <reactor-core.version>3.4.6</reactor-core.version>
    <reactor-netty.version>1.0.7</reactor-netty.version>
    <oauth2-oidc-sdk.version>6.0</oauth2-oidc-sdk.version>
    <woodstox-core.version>5.4.0</woodstox-core.version>
    <spring-webmvc.version>5.3.22</spring-webmvc.version>
    <undertow.version>2.2.26.Final</undertow.version>
    <spring-boot-maven-plugin.version>2.7.6</spring-boot-maven-plugin.version>
    <xnio-api.version>3.8.8.Final</xnio-api.version>
    <netty.version>4.1.98.Final</netty.version>
  </properties>

  <dependencyManagement>
    <dependencies>
      <!-- netty-bom dependency to be declared before spring-boot-dependencies,
      to pull all netty-transitive dependencies with same version -->
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-bom</artifactId>
        <version>${netty.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <!-- Inherit managed dependencies from core-lib-azure -->
      <dependency>
        <groupId>org.opengroup.osdu</groupId>
        <artifactId>core-lib-azure</artifactId>
        <version>${osdu.corelibazure.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.woodstox</groupId>
        <artifactId>woodstox-core</artifactId>
        <version>${woodstox-core.version}</version>
      </dependency>
      <dependency>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-slf4j-impl</artifactId>
          <version>${log4j2.version}</version>
      </dependency>
      <dependency>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-to-slf4j</artifactId>
          <version>${log4j2.version}</version>
      </dependency>
      <dependency>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-api</artifactId>
          <version>${log4j2.version}</version>
      </dependency>
      <dependency>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-core</artifactId>
          <version>${log4j2.version}</version>
      </dependency>
      <dependency>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-jul</artifactId>
          <version>${log4j2.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
        <version>2.5.12</version>
      </dependency>
      <dependency>
        <groupId>io.undertow</groupId>
        <artifactId>undertow-core</artifactId>
        <version>${undertow.version}</version>
      </dependency>
      <dependency>
        <groupId>io.undertow</groupId>
        <artifactId>undertow-servlet</artifactId>
        <version>${undertow.version}</version>
      </dependency>
      <dependency>
        <groupId>io.undertow</groupId>
        <artifactId>undertow-websockets-jsr</artifactId>
        <version>${undertow.version}</version>
      </dependency>
      <dependency>
        <groupId>org.jboss.xnio</groupId>
        <artifactId>xnio-api</artifactId>
        <version>${xnio-api.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <dependencies>
    <!-- OSDU Dependencies -->
    <dependency>
      <groupId>org.opengroup.osdu</groupId>
      <artifactId>notification-core</artifactId>
      <version>${osdu.notification-core.version}</version>
    </dependency>
    <dependency>
      <groupId>org.opengroup.osdu</groupId>
      <artifactId>os-core-common</artifactId>
      <version>${osdu.oscorecommon.version}</version>
    </dependency>
    <dependency>
      <groupId>org.opengroup.osdu</groupId>
      <artifactId>core-lib-azure</artifactId>
      <version>${osdu.corelibazure.version}</version>
      <exclusions>
        <exclusion>
          <groupId>com.microsoft.azure</groupId>
          <artifactId>documentdb-bulkexecutor</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

    <!-- Spring Dependencies -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-security</artifactId>
      <exclusions>
        <exclusion>
          <groupId>ch.qos.logback</groupId>
          <artifactId>logback-classic</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-to-slf4j</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.dataformat</groupId>
      <artifactId>jackson-dataformat-xml</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
    </dependency>

    <dependency>
      <groupId>io.micrometer</groupId>
      <artifactId>micrometer-registry-prometheus</artifactId>
      <scope>runtime</scope>
    </dependency>

    <dependency>
      <groupId>io.projectreactor.netty</groupId>
      <artifactId>reactor-netty</artifactId>
    </dependency>
    <dependency>
      <groupId>io.projectreactor</groupId>
      <artifactId>reactor-core</artifactId>
    </dependency>
    <dependency>
      <groupId>com.nimbusds</groupId>
      <artifactId>oauth2-oidc-sdk</artifactId>
      <version>${oauth2-oidc-sdk.version}</version>
    </dependency>


    <!-- Azure Dependencies -->
    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>azure-spring-boot-starter-active-directory</artifactId>
    </dependency>
	<dependency>
		<!-- Required for JUnit 4 tests to run -->
		<groupId>org.junit.vintage</groupId>
		<artifactId>junit-vintage-engine</artifactId>
		<scope>test</scope>
	</dependency>

    <!-- Test Dependencies -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter</artifactId>
      <version>${junit.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-junit-jupiter</artifactId>
      <version>${mockito.version}</version>
      <scope>test</scope>
    </dependency>

    <!-- Jackson Dependencies -->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>${jacoco-maven-plugin.version}</version>
        <executions>
          <execution>
            <id>default-prepare-agent</id>
            <goals>
              <goal>prepare-agent</goal>
            </goals>
          </execution>
          <execution>
            <id>report</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>report</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>${spring-boot-maven-plugin.version}</version>
        <executions>
          <execution>
            <goals>
              <goal>repackage</goal>
            </goals>
            <configuration>
              <classifier>spring-boot</classifier>
              <mainClass>org.opengroup.osdu.notification.provider.azure.Application</mainClass>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <useSystemClassLoader>false</useSystemClassLoader>
          <threadCount>1</threadCount>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <reporting>
    <plugins>
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>${jacoco-maven-plugin.version}</version>
        <reportSets>
          <reportSet>
            <reports>
              <!-- select non-aggregate reports -->
              <report>report</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
    </plugins>
  </reporting>
</project>