<?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>
    <name>as2-support-parent</name>
    <groupId>com.mulesoft.connectors</groupId>
    <artifactId>as2-support-parent</artifactId>
    <version>3.0.0</version>
    <packaging>pom</packaging>

    <properties>
        <jacoco.version>0.8.13</jacoco.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <jdk.version>1.8</jdk.version>
        <mockito.version>3.0.0</mockito.version>
        <sonar.coverage.jacoco.xmlReportPaths>${project.basedir}/target/site/jacoco/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>
        <!-- Exclude FIPS impl modules from CPD: BC1 and BC2 are intentionally parallel implementations -->
        <sonar.cpd.exclusions>**/as2-bc1-fips-impl/**/*.java,**/as2-bc2-fips-impl/**/*.java</sonar.cpd.exclusions>
    </properties>

    <!-- Dependency versions are managed per security profile to avoid cross-profile conflicts -->
    <profiles>
        <profile>
            <id>non-fips</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <bouncy.castle.version>1.82</bouncy.castle.version>
            </properties>
            <dependencyManagement>
                <dependencies>
                    <dependency>
                        <groupId>org.bouncycastle</groupId>
                        <artifactId>bcpkix-jdk18on</artifactId>
                        <version>${bouncy.castle.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.bouncycastle</groupId>
                        <artifactId>bcprov-jdk18on</artifactId>
                        <version>${bouncy.castle.version}</version>
                    </dependency>
                </dependencies>
            </dependencyManagement>
        </profile>
        <profile>
            <id>fips140-2</id>
            <properties>
                <bouncy.castle.fips.version>1.0.2.4</bouncy.castle.fips.version>
                <bouncy.castle.kix.fips.version>1.0.7</bouncy.castle.kix.fips.version>
                <bouncy.castle.tls.fips.version>1.0.17</bouncy.castle.tls.fips.version>            </properties>
            <dependencyManagement>
                <dependencies>
                    <dependency>
                        <groupId>org.bouncycastle</groupId>
                        <artifactId>bc-fips</artifactId>
                        <version>${bouncy.castle.fips.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.bouncycastle</groupId>
                        <artifactId>bcpkix-fips</artifactId>
                        <version>${bouncy.castle.kix.fips.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.bouncycastle</groupId>
                        <artifactId>bctls-fips</artifactId>
                        <version>${bouncy.castle.tls.fips.version}</version>
                    </dependency>
                </dependencies>
            </dependencyManagement>
        </profile>
        <!-- Placeholder for future FIPS 140-3 (BC 2.x) alignment -->
        <profile>
            <id>fips140-3</id>
            <properties>
                <bouncy.castle.version>2.0.0</bouncy.castle.version>
                <bouncy.castle.util.version>2.0.3</bouncy.castle.util.version>
                <bouncy.castle.bcpkix.version>2.0.7</bouncy.castle.bcpkix.version>
                <bouncy.castle.tls.version>2.0.19</bouncy.castle.tls.version>
            </properties>
            <dependencyManagement>
                <dependencies>
                    <dependency>
                        <groupId>org.bouncycastle</groupId>
                        <artifactId>bc-fips</artifactId>
                        <version>${bouncy.castle.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.bouncycastle</groupId>
                        <artifactId>bcpkix-fips</artifactId>
                        <version>${bouncy.castle.bcpkix.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.bouncycastle</groupId>
                        <artifactId>bcutil-fips</artifactId>
                        <version>${bouncy.castle.util.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.bouncycastle</groupId>
                        <artifactId>bctls-fips</artifactId>
                        <version>${bouncy.castle.tls.version}</version>
                    </dependency>
                </dependencies>
            </dependencyManagement>
        </profile>
    </profiles>

    <modules>
        <module>as2-bc-facade</module>
        <module>as2-utils</module>
        <module>as2-bc-non-fips-impl</module>
        <module>as2-bc1-fips-impl</module>
        <module>as2-bc2-fips-impl</module>
    </modules>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <plugin>
                    <groupId>org.jacoco</groupId>
                    <artifactId>jacoco-maven-plugin</artifactId>
                    <version>${jacoco.version}</version>
                    <executions>
                        <execution>
                            <id>prepare-agent</id>
                            <phase>initialize</phase>
                            <goals>
                                <goal>prepare-agent</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>report</id>
                            <goals>
                                <goal>report</goal>
                            </goals>
                            <phase>verify</phase>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

    <repositories>
        <repository>
            <id>mule-releases</id>
            <name>Mule  Releases Repository</name>
            <url>https://repository.mulesoft.org/nexus/content/repositories/releases/</url>
        </repository>
        <repository>
            <id>mule-ee-releases</id>
            <name>MuleEE Releases Repository</name>
            <url>https://repository-master.mulesoft.org/nexus/content/repositories/releases-ee/</url>
        </repository>
        <repository>
            <id>mule-snapshots</id>
            <name>Mule  Snapshots Repository</name>
            <layout>default</layout>
            <url>https://repository.mulesoft.org/nexus/content/repositories/snapshots/</url>
        </repository>
        <repository>
            <id>mule-ci-releases</id>
            <name>Mule EE Releases Repository</name>
            <url>https://repository-master.mulesoft.org/nexus/content/repositories/ci-releases/</url>
        </repository>
        <repository>
            <id>mule-ci-snapshots</id>
            <name>Mule EE Snapshots Repository</name>
            <layout>default</layout>
            <url>https://repository-master.mulesoft.org/nexus/content/repositories/ci-snapshots/</url>
        </repository>
    </repositories>

</project>
