<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (c) 2011, 2025 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>project</artifactId>
        <version>3.1.10</version>
    </parent>

    <artifactId>jersey-container-grizzly2-http</artifactId>
    <packaging>jar</packaging>
    <name>jersey-container-grizzly2-http</name>

    <description>Grizzly 2 Http Container.</description>

    <properties>
        <!-- alternatives: JerseyHttpClientThread, JettyClientThread in the same package -->
        <client>JdkHttpClientThread</client>
        <clientImplPackage>org.glassfish.jersey.grizzly2.httpserver.test.tools</clientImplPackage>
        <clientImpl>${clientImplPackage}.${client}</clientImpl>
        <testMemory>-Xms160m -Xmx160m -Xss512k</testMemory>
    </properties>

    <dependencies>
        <dependency>
            <groupId>jakarta.inject</groupId>
            <artifactId>jakarta.inject-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.glassfish.grizzly</groupId>
            <artifactId>grizzly-http-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.glassfish.grizzly</groupId>
            <artifactId>grizzly-http2</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.glassfish.grizzly</groupId>
            <artifactId>grizzly-npn-api</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-client</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty.http2</groupId>
            <artifactId>jetty-http2-client-transport</artifactId>
            <version>${jetty.version}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcprov-jdk15on</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcmail-jdk15on</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>com.sun.istack</groupId>
                <artifactId>istack-commons-maven-plugin</artifactId>
                <inherited>true</inherited>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <inherited>true</inherited>
            </plugin>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <inherited>true</inherited>
                <configuration>
                    <instructions>
                        <Import-Package>
                            org.glassfish.grizzly.*;version="[3.0,5.0)",
                            *
                        </Import-Package>
                    </instructions>
                    <unpackBundle>true</unpackBundle>
                </configuration>
            </plugin>

            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <!--
                    memory settings:
                      - to avoid unstable JVM process; fail fast, don't produce dump
                      - memory sizes must reflect count of clients!
                    test time:
                      - must not affect stability of the server; if it does, the test detected a bug
                      - 10 seconds should be enough to process thousands of requests, if there would
                        be some leak, it should be visible
                    client count:
                      - each client is reusable to produce parallel requests, but each also consumes
                        significiant amount of memory, in this case shared with the server.
                    -->
                    <argLine>
                        ${testMemory} -XX:+CrashOnOutOfMemoryError -XX:-HeapDumpOnOutOfMemoryError
                        -DtestTime=10 -DclientCount=30
                        -DclientImpl=${clientImpl}
                    </argLine>
                    <trimStackTrace>false</trimStackTrace>
                    <parallel>methods</parallel>
                    <threadCountMethods>3</threadCountMethods>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>jdk11</id>
            <activation>
                <jdk>[11,17)</jdk>
            </activation>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <artifactId>maven-compiler-plugin</artifactId>
                            <executions>
                                <execution>
                                    <id>default-testCompile</id>
                                    <configuration>
                                        <skip>true</skip>
                                    </configuration>
                                </execution>
                            </executions>
                        </plugin>
                    </plugins>
                </pluginManagement>
            </build>
        </profile>
    </profiles>
</project>
