Merge 'origin/2.x' into 'origin/3.0'

Signed-off-by: Maxim Nesen <maxim.nesen@oracle.com>
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index 7a3a052..7763e3e 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2022, 2023 Contributors to the Eclipse Foundation
+# Copyright (c) 2022, 2024 Contributors to the Eclipse Foundation
 #
 # This program and the accompanying materials are made available under the
 # terms of the Eclipse Public License v. 2.0 which is available at
@@ -10,7 +10,7 @@
 # SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
 #
 
-name: Jersey
+name: Eclipse Required License Check
 
 on: [push, pull_request]
 
@@ -29,11 +29,11 @@
 
     steps:
     - name: Checkout for build
-      uses: actions/checkout@v3
+      uses: actions/checkout@v4
       with:
         fetch-depth: 0
     - name: Set up JDK
-      uses: actions/setup-java@v3
+      uses: actions/setup-java@v4.1.0
       with:
         distribution: 'zulu'
         java-version: ${{ matrix.java_version }}
@@ -44,7 +44,7 @@
     - name: Build
       run: mvn -V -U -B ${{matrix.verify_profiles}} org.eclipse.dash:license-tool-plugin:license-check -DexcludeArtifactIds=bsh,jmh-core,jmh-generator-annprocess,swing-layout -pl '!:version-agnostic'
     - name: Upload license-check info
-      uses: actions/upload-artifact@v3
+      uses: actions/upload-artifact@v4
       with:
         name: license-summary.txt
         path: target/dash/summary
diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml
new file mode 100644
index 0000000..5748a52
--- /dev/null
+++ b/.github/workflows/validate.yml
@@ -0,0 +1,99 @@
+#
+# Copyright (c) 2024 Contributors to the Eclipse Foundation
+#
+# 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,
+# or the Eclipse Distribution License v. 1.0 which is available at
+# http://www.eclipse.org/org/documents/edl-v10.php.
+#
+# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
+#
+
+name: "Validate"
+
+on: [pull_request, push]
+
+env:
+  JAVA_VERSION: '8'
+  JAVA_DISTRO: 'temurin'
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  copyright:
+    timeout-minutes: 10
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+        with:
+          fetch-depth: 0
+      - name: Set up JDK ${{ env.JAVA_VERSION }}
+        uses: actions/setup-java@v4.1.0
+        with:
+          distribution: ${{ env.JAVA_DISTRO }}
+          java-version: ${{ env.JAVA_VERSION }}
+          cache: maven
+      - name: Copyright
+        run: etc/scripts/copyright.sh
+      - name: Upload copyright info
+        uses: actions/upload-artifact@v4
+        with:
+          name: copyright_results
+          path: copyright.log
+          retention-days: 5
+  checkstyle:
+    timeout-minutes: 10
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+      - name: Set up JDK ${{ env.JAVA_VERSION }}
+        uses: actions/setup-java@v4.1.0
+        with:
+          distribution: ${{ env.JAVA_DISTRO }}
+          java-version: ${{ env.JAVA_VERSION }}
+          cache: maven
+      - name: Checkstyle
+        run: etc/scripts/checkstyle.sh
+      - name: Upload checkstyle info
+        uses: actions/upload-artifact@v4
+        with:
+          name: checkstyle_results
+          path: target/checkstyle/checkstyle-result.xml
+          retention-days: 5
+  apidocs:
+    timeout-minutes: 30
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+      - name: Set up JDK 17
+        uses: actions/setup-java@v4.1.0
+        with:
+          distribution: ${{ env.JAVA_DISTRO }}
+          java-version: 17
+          cache: maven
+      - name: Build JDK17+ required modules
+        run: mvn -B -U -V clean install -DskipTests -pl :jersey-helidon-connector -am
+      - name: Set up JDK ${{ env.JAVA_VERSION }}
+        uses: actions/setup-java@v4.1.0
+        with:
+          distribution: ${{ env.JAVA_DISTRO }}
+          java-version: ${{ env.JAVA_VERSION }}
+          cache: maven
+      - name: Build ApiDocs
+        run: etc/scripts/apidocs.sh
+  archetypes:
+    timeout-minutes: 45
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+      - name: Set up JDK ${{ env.JAVA_VERSION }}
+        uses: actions/setup-java@v4.1.0
+        with:
+          distribution: ${{ env.JAVA_DISTRO }}
+          java-version: ${{ env.JAVA_VERSION }}
+          cache: maven
+      - name: Test archetypes
+        run: etc/scripts/test-archetypes.sh
\ No newline at end of file
diff --git a/NOTICE.md b/NOTICE.md
index 56c82ad..862a799 100644
--- a/NOTICE.md
+++ b/NOTICE.md
@@ -73,7 +73,7 @@
 Jackson JAX-RS Providers Version 2.16.2

 * License: Apache License, 2.0

 * Project: https://github.com/FasterXML/jackson-jaxrs-providers

-* Copyright: (c) 2009-2023 FasterXML, LLC. All rights reserved unless otherwise indicated.

+* Copyright: (c) 2009-2024 FasterXML, LLC. All rights reserved unless otherwise indicated.

 

 jQuery v1.12.4

 * License: jquery.org/license

diff --git a/etc/config/checkstyle.xml b/etc/config/checkstyle.xml
index 36a7def..52d0455 100644
--- a/etc/config/checkstyle.xml
+++ b/etc/config/checkstyle.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-    Copyright (c) 2010, 2020 Oracle and/or its affiliates. All rights reserved.
+    Copyright (c) 2010, 2024 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
@@ -88,7 +88,7 @@
         <!-- Checks for Javadoc comments.                     -->
         <!-- See http://checkstyle.sf.net/config_javadoc.html -->
         <module name="JavadocMethod">
-            <property name="scope" value="protected"/>
+            <property name="accessModifiers" value="protected"/>
         <!-- <property name="allowUndeclaredRTE" value="true"/>-->
         </module>
         <module name="JavadocType">
diff --git a/etc/scripts/apidocs.sh b/etc/scripts/apidocs.sh
new file mode 100755
index 0000000..12b2364
--- /dev/null
+++ b/etc/scripts/apidocs.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+mvn -U -V -B clean install -Ppre-release -pl :apidocs -am -DskipTests
\ No newline at end of file
diff --git a/etc/scripts/checkstyle.sh b/etc/scripts/checkstyle.sh
new file mode 100755
index 0000000..ad36942
--- /dev/null
+++ b/etc/scripts/checkstyle.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+mvn -V -U -B  checkstyle:checkstyle-aggregate -Dcheckstyle.output.format="plain" -Dcheckstyle.output.file=checkstyle.log
\ No newline at end of file
diff --git a/etc/scripts/copyright.sh b/etc/scripts/copyright.sh
new file mode 100755
index 0000000..a874923
--- /dev/null
+++ b/etc/scripts/copyright.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+readonly CP_PATTERN='Copyright year is wrong'
+
+
+[[ -n ${1} ]] && readonly LOG_FILE=${1} || readonly LOG_FILE='copyright.log'
+
+
+echo ${LOG_FILE}
+
+mvn -U -B  glassfish-copyright:copyright -Dcopyright.quiet=false | grep "${CP_PATTERN}" | tee ${LOG_FILE}
+
+grep "${CP_PATTERN}"  ${LOG_FILE} || exit 0 && exit 1
\ No newline at end of file
diff --git a/etc/scripts/test-archetypes.sh b/etc/scripts/test-archetypes.sh
new file mode 100755
index 0000000..8ac27e3
--- /dev/null
+++ b/etc/scripts/test-archetypes.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+mvn -U -V -B clean install -pl org.glassfish.jersey.archetypes:project
\ No newline at end of file
diff --git a/examples/helloworld-spring-webapp/pom.xml b/examples/helloworld-spring-webapp/pom.xml
index 0f3b2df..81d3514 100644
--- a/examples/helloworld-spring-webapp/pom.xml
+++ b/examples/helloworld-spring-webapp/pom.xml
@@ -93,7 +93,7 @@
         <dependency>
             <groupId>commons-logging</groupId>
             <artifactId>commons-logging</artifactId>
-            <version>1.2</version>
+            <version>${commons.logging.version}</version>
             <exclusions>
                 <exclusion>
                     <groupId>jakarta.servlet</groupId>
diff --git a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/PackageVersion.java b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/PackageVersion.java
index 61edeb7..347b54b 100644
--- a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/PackageVersion.java
+++ b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/PackageVersion.java
@@ -11,7 +11,7 @@
  */
 public final class PackageVersion implements Versioned {
     public final static Version VERSION = VersionUtil.parseVersion(
-        "2.16.1", "com.fasterxml.jackson.jaxrs", "jackson-jaxrs-json-provider");
+        "2.16.2", "com.fasterxml.jackson.jaxrs", "jackson-jaxrs-json-provider");
 
     @Override
     public Version version() {
diff --git a/pom.xml b/pom.xml
index bac66c0..8069240 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2236,26 +2236,26 @@
 
         <!-- Dependency versions -->
         <jersey.version>${project.version}</jersey.version>
-        <arquillian.version>1.7.1.Final</arquillian.version>
+        <arquillian.version>1.8.0.Final</arquillian.version>
         <arquillian.weld.version>3.0.1.Final</arquillian.weld.version> <!-- 3.0.2.Final fails microprofile TCK tests -->
         <!-- asm is now source integrated - keeping this property to see the version -->
         <!-- see core-server/src/main/java/jersey/repackaged/asm/.. -->
         <asm.version>9.6</asm.version>
         <!--required for spring (ext) modules integration -->
-        <aspectj.weaver.version>1.9.20.1</aspectj.weaver.version>
+        <aspectj.weaver.version>1.9.21.1</aspectj.weaver.version>
 <!--        <bnd.plugin.version>2.3.6</bnd.plugin.version>-->
         <bouncycastle.version>1.70</bouncycastle.version>
-        <commons.io.version>2.15.0</commons.io.version>
+        <commons.io.version>2.15.1</commons.io.version>
         <commons.codec.version>1.16.1</commons.codec.version>
 <!--        <commons-lang3.version>3.3.2</commons-lang3.version>-->
-        <commons.logging.version>1.2</commons.logging.version>
-        <fasterxml.classmate.version>1.6.0</fasterxml.classmate.version>
+        <commons.logging.version>1.3.0</commons.logging.version>
+        <fasterxml.classmate.version>1.7.0</fasterxml.classmate.version>
         <felix.eventadmin.version>1.6.4</felix.eventadmin.version>
         <felix.framework.security.version>2.8.4</felix.framework.security.version>
         <felix.framework.version>7.0.5</felix.framework.version>
         <findbugs.glassfish.version>1.7</findbugs.glassfish.version>
         <freemarker.version>2.3.32</freemarker.version>
-        <gae.version>2.0.21</gae.version>
+        <gae.version>2.0.25</gae.version>
         <groovy.version>4.0.20</groovy.version>
         <gson.version>2.10.1</gson.version>
 
@@ -2273,11 +2273,12 @@
         <microprofile.config.version>3.0.3</microprofile.config.version>
         <microprofile.rest.client.version>3.0.1</microprofile.rest.client.version>
         <helidon.config.version>3.2.6</helidon.config.version>
-        <helidon.config.11.version>1.4.13</helidon.config.11.version> <!-- JDK 11- support -->
+        <helidon.config.11.version>1.4.14</helidon.config.11.version> <!-- JDK 11- support -->
         <smallrye.config.version>3.0.0</smallrye.config.version>
 
         <guava.version>31.1-jre</guava.version>
         <hamcrest.version>2.2</hamcrest.version>
+        <helidon.version>1.4.14</helidon.version>
         <helidon.jersey.connector.version>3.0.2</helidon.jersey.connector.version>
         <xmlunit.version>2.9.1</xmlunit.version>
         <hk2.osgi.version>org.glassfish.hk2.*;version="[2.5,4)"</hk2.osgi.version>
@@ -2296,10 +2297,10 @@
         <junit4.version>4.13.2</junit4.version>
         <junit5.version>5.10.2</junit5.version>
         <junit-platform-suite.version>1.10.0</junit-platform-suite.version>
-        <kryo.version>4.0.2</kryo.version>
+        <kryo.version>4.0.3</kryo.version>
         <mockito.version>3.12.4</mockito.version> <!-- CQ 17673 -->
-        <mustache.version>0.9.10</mustache.version>
-        <netty.version>4.1.100.Final</netty.version>
+        <mustache.version>0.9.11</mustache.version>
+        <netty.version>4.1.107.Final</netty.version>
         <opentracing.version>0.33.0</opentracing.version>
         <osgi.version>6.0.0</osgi.version>
         <osgi.framework.version>1.10.0</osgi.framework.version>
@@ -2311,9 +2312,9 @@
         <rxjava.version>1.3.8</rxjava.version>
         <rxjava2.version>2.2.21</rxjava2.version>
         <simple.version>6.0.1</simple.version>
-        <slf4j.version>2.0.9</slf4j.version>
+        <slf4j.version>2.0.12</slf4j.version>
         <spring6.version>6.0.13</spring6.version>
-        <testng.version>7.8.0</testng.version>
+        <testng.version>7.9.0</testng.version>
         <testng6.version>6.9.13.6</testng6.version>
         <!-- Jakartified, eligible for CQ -->
         <weld.version>4.0.3.Final</weld.version>
@@ -2324,7 +2325,7 @@
         <xerces.version>2.12.2</xerces.version>
 
         <!-- Graal VM       -->
-        <graalvm.version>20.3.12</graalvm.version>
+        <graalvm.version>20.3.13</graalvm.version>
 
         <!-- do not need CQs (below this line till the end of version properties)-->
         <gf.impl.version>6.2.5</gf.impl.version>
@@ -2361,8 +2362,8 @@
         <jetty.osgi.version>org.eclipse.jetty.*;version="[11,15)"</jetty.osgi.version>
         <jetty.version>11.0.20</jetty.version>
         <jetty.tracing.version>11.0.15</jetty.tracing.version> <!-- special version for tracing support tests-->
-        <jetty9.version>9.4.53.v20231009</jetty9.version>
-        <jetty.plugin.version>11.0.18</jetty.plugin.version>
+        <jetty9.version>9.4.54.v20240208</jetty9.version>
+        <jetty.plugin.version>11.0.20</jetty.plugin.version>
         <jetty.servlet.api.25.version>6.1.14</jetty.servlet.api.25.version>
         <jsonb.api.version>2.0.0</jsonb.api.version>
         <jsonp.ri.version>1.0.5</jsonp.ri.version>
diff --git a/tests/osgi/functional/pom.xml b/tests/osgi/functional/pom.xml
index 8b1abdb..4e6e564 100644
--- a/tests/osgi/functional/pom.xml
+++ b/tests/osgi/functional/pom.xml
@@ -151,6 +151,12 @@
             <groupId>org.ops4j.pax.exam</groupId>
             <artifactId>pax-exam-container-forked</artifactId>
             <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>slf4j-api</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <dependency>
             <groupId>org.ops4j.pax.exam</groupId>
@@ -170,7 +176,13 @@
         <dependency>
             <groupId>org.ops4j.pax.url</groupId>
             <artifactId>pax-url-aether</artifactId>
-            <version>2.6.2</version>
+            <version>2.6.14</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>jcl-over-slf4j</artifactId>
+                </exclusion>
+            </exclusions>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -372,6 +384,12 @@
             <scope>test</scope>
         </dependency>
 
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <version>${slf4j.version}</version>
+        </dependency>
+
     </dependencies>
 
     <profiles>