<?xml version="1.0" encoding="UTF-8"?>
<!--
    Copyright (c) 2026 Contributors to the Eclipse Foundation.
    Copyright (c) 2013, 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.glassfish.jersey.tests.integration</groupId>
        <artifactId>project</artifactId>
        <version>3.1.99-SNAPSHOT</version>
    </parent>

    <artifactId>tracing-support</artifactId>
    <packaging>war</packaging>
    <name>jersey-tests-integration-tracing-support</name>

    <description>Tracing support integration test</description>

    <dependencies>
        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet</artifactId>
        </dependency>

        <dependency>
            <groupId>org.glassfish.jersey.test-framework.providers</groupId>
            <artifactId>jersey-test-framework-provider-external</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.glassfish.jersey.test-framework.providers</groupId>
            <artifactId>jersey-test-framework-provider-grizzly2</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <systemPropertyVariables>
                        <java.util.logging.config.file>${project.build.testOutputDirectory}/logging.properties</java.util.logging.config.file>
                    </systemPropertyVariables>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <configuration>
                    <systemPropertyVariables>
                        <!-- client side config works - failsafe plugin forks jvm -->
                        <java.util.logging.config.file>${project.build.testOutputDirectory}/logging.properties
                        </java.util.logging.config.file>
                    </systemPropertyVariables>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.eclipse.jetty.ee10</groupId>
                <artifactId>jetty-ee10-maven-plugin</artifactId>
                <configuration>
                    <httpConnector combine.self="override"/>
                    <jettyXmls>
                        <jettyXml>${basedir}/src/test/resources/jetty.xml</jettyXml>
                    </jettyXmls>
                    <systemProperties>
                        <RESPONSE_HEADER_SIZE>16192</RESPONSE_HEADER_SIZE>
                    </systemProperties>
                    <!-- server side config does not fork with jetty:run goal - it uses same jvm
                         use maven '-D' option instead:
                             mvn _goal_ -Djava.util.logging.config.file=target/test-classes/logging.properties
                    <systemProperties>
                        <systemProperty>
                            <name>java.util.logging.config.file</name>
                            <value>${project.build.testOutputDirectory}/logging.properties</value>
                        </systemProperty>
                    </systemProperties>
                    -->
                </configuration>
            </plugin>
        </plugins>
    </build>
    <profiles>
        <profile>
            <id>jdk11+</id>
            <activation>
                <jdk>[11,)</jdk>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <configuration>
                            <!--
                            Since Jetty 11 for some reason is not possibly to properly set responseHeaderSize property
                            which should be jetty.response.header.size with adjusted value 16192. The property however
                            is never recognized by the plugin so resulting in the
                                            org.eclipse.jetty.http.BadMessageException: 500: Response header too large
                            exception. For this reason the test is being excluded.
                              -->
                            <testExcludes>
                                <testExclude>
                                    org/glassfish/jersey/tests/integration/tracing/AllTracingSupportITCase.java
                                </testExclude>
                            </testExcludes>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
