<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>br.com.seedgrid</groupId>
        <artifactId>seedgrid-parent</artifactId>
        <version>2026.07.02</version>
        <relativePath>../seedgrid-parent/pom.xml</relativePath>
    </parent>

    <artifactId>seedgrid-privacy</artifactId>
    <version>2026.07.08</version>
    <packaging>jar</packaging>

    <name>SeedGrid Privacy</name>
    <description>Criptografia reversivel (AES-256-GCM) e busca exata por hash (HMAC-SHA256) de campos sensiveis em entidades JPA, para conformidade LGPD</description>
    <url>https://seedgrid.com.br</url>

    <licenses>
        <license>
            <name>Commercial License</name>
            <url>https://seedgrid.com.br/license</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <developers>
        <developer>
            <name>Luciano D. Silva</name>
            <email>seedgrid@seedgrid.com.br</email>
            <organization>SeedGrid</organization>
            <organizationUrl>https://seedgrid.com.br</organizationUrl>
        </developer>
    </developers>

    <scm>
        <connection>scm:git:https://github.com/SeedGrid/seedgrid-quarkus-lib-privacy.git</connection>
        <developerConnection>scm:git:ssh://git@github.com:SeedGrid/seedgrid-quarkus-lib-privacy.git</developerConnection>
        <url>https://github.com/SeedGrid/seedgrid-quarkus-lib-privacy</url>
    </scm>

    <properties>
        <assertj.version>3.27.6</assertj.version>
        <mockito.version>5.18.0</mockito.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>${quarkus.platform.group-id}</groupId>
                <artifactId>${quarkus.platform.artifact-id}</artifactId>
                <version>${quarkus.platform.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.testcontainers</groupId>
                <artifactId>testcontainers-bom</artifactId>
                <version>1.21.3</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>

        <!-- CDI + MP Config (bootstrap @Startup/@Singleton, leitura das chaves) -->
        <dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-arc</artifactId>
        </dependency>

        <!-- JPA: AttributeConverter + EntityListener (@PrePersist/@PreUpdate) -->
        <dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-hibernate-orm</artifactId>
        </dependency>

        <!-- Jackson: ObjectMapper/ObjectNode para o mascaramento objeto->JSON -->
        <dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-jackson</artifactId>
        </dependency>

        <!-- Test -->
        <dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-junit5</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.assertj</groupId>
            <artifactId>assertj-core</artifactId>
            <version>${assertj.version}</version>
            <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>

        <!-- Postgres + Hibernate reais (Testcontainers) para provar @EncryptedField em @Embeddable
             de ponta a ponta, sem H2. -->
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.testcontainers</groupId>
            <artifactId>postgresql</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.testcontainers</groupId>
            <artifactId>junit-jupiter</artifactId>
            <scope>test</scope>
        </dependency>

    </dependencies>

    <build>
        <plugins>

            <!-- Jandex: indice para descoberta de beans/entities pelo Quarkus -->
            <plugin>
                <groupId>io.smallrye</groupId>
                <artifactId>jandex-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>make-index</id>
                        <goals>
                            <goal>jandex</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <!-- Mockito agent (inline mocking) -->
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <argLine>-javaagent:${settings.localRepository}/org/mockito/mockito-core/${mockito.version}/mockito-core-${mockito.version}.jar</argLine>
                    <useModulePath>false</useModulePath>
                </configuration>
            </plugin>

        </plugins>
    </build>

</project>
