<?xml version="1.0"?>
<!--

    Copyright (c) 2012, 2023 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

-->

<!DOCTYPE chapter [<!ENTITY % ents SYSTEM "jersey.ent" > %ents;]>
<chapter xmlns="http://docbook.org/ns/docbook"
         version="5.0"
         xml:lang="en"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:xlink="http://www.w3.org/1999/xlink"
         xsi:schemaLocation="http://docbook.org/ns/docbook http://docbook.org/xml/5.0/xsd/docbook.xsd
                             http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd"
         xml:id="migration">
    <title>Migration Guide</title>

    <section xml:id="mig-3.0.0">
        <title>Migrating from Jersey 2.32+ to 3.0.x.</title>
        <section xml:id="mig-3.0.0-breaking-changes">
            <title>Breaking Changes</title>
            <para>
                <itemizedlist>
                    <listitem>
                        <para>
                            The most fundamental change in Jersey 3.0.0 and later is namespace change.
                            Since Jakarta EE 9 the <literal>jakarta.</literal> namespace is introduced as a replacement
                            for javax namespace from Java EE.
                        </para>
                    </listitem>
                    <listitem>
                        <para>
                            Some Jersey modules require higher versions of Java SE. See <xref linkend="se_compatibility"/>.
                        </para>
                    </listitem>
                    <listitem>
                        <para>
                            Examples and tests are reduced in quantity (so you probably will not find all those examples which were available
                            in the 2.32 version).
                        </para>
                    </listitem>
                    <listitem>
                        <para>
                            &jersey.server.ServerProperties.UNWRAP_COMPLETION_STAGE_IN_WRITER_ENABLE; is by default
                            <literal>true</literal>.
                        </para>
                    </listitem>
                </itemizedlist>
            </para>
        </section>
        <section xml:id="mig-3.0.0-removed-deprecated">
            <title>Removed deprecated APIs</title>
            <para>
                <itemizedlist>
                    <listitem>
                        <para>
                            Jackson 1 support was removed.
                        </para>
                    </listitem>
                </itemizedlist>
            </para>
        </section>
        <section xml:id="mig-3.0.0-application-servers">
            <title>Application servers for Jersey</title>
            <para>
                Note that only a few servers support Jakarta EE 9 compatible Servlet API and they are tested with Jersey.
                Those are:
                <literal>GlassFish 6</literal>,
                <literal>Grizzly 3</literal>,
                <literal>Jetty 11 (JDK 11+ required)</literal>,
                <literal>Payara 6</literal>, and
                <literal>Tomcat 10</literal>.
            </para>
        </section>
    </section>
    <section xml:id="mig-3.1.0">
        <title>Migrating from Jersey 3.0.x to &version;.</title>
        <section xml:id="mig-3.1.0-breaking-changes">
            <title>Breaking Changes</title>
            <para>
                <itemizedlist>
                    <listitem>
                        <para>
                            Jersey 3.1.0+ is the implementation of Jakarta RESTful WebServices 3.1, which is part of
                            Jakarta EE 10. Jakarta EE 10 defines the minimum JDK 11 requirement and hence Jersey no longer
                            supports JDK 8.
                        </para>
                        <para>
                            Some Jersey modules require higher versions of Java SE. See <xref linkend="se_compatibility"/>.
                        </para>
                    </listitem>
                    <listitem>
                        <para>
                            Since Jersey 3.1.0+ the <literal>getRequestHeader(String name)</literal> method of the
                            <literal>ClientRequest</literal> class returns NULL (instead of an empty List) in case if
                            the specified header does not exist.
                        </para>
                    </listitem>
                </itemizedlist>
            </para>
        </section>
        <section xml:id="mig-3.1.0-application-path">
            <title>@ApplicationPath Annotation Support</title>
            <para>
                Jersey 3.1 supports <literal>@ApplicationPath</literal> annotation by every container, not only the
                <literal>Servlet</literal> container. This can affect tests, as well as deployments to containers
                where the annotation used to be ignored by previous versions of Jersey.
            </para>
        </section>
        <section xml:id="mig-3.1.4-jetty-modules">
            <title>Jetty Modules</title>
            <itemizedlist>
                <listitem>
                    <para>
                        Jersey 3.0.x, and 3.1.0 - 3.1.3 Jetty modules (jersey-jetty-connector, jersey-container-jetty-http,
                        jersey-container-jetty-servlet, jersey-test-framework-provider-jetty) are based on Jetty 11,
                        which is Jakarta EE 9 related.
                    </para>
                </listitem>
                <listitem>
                    <para>
                        Jersey 3.1.4 modules use Jetty 12 which is Jakarta EE 10 related (as well as Jersey 3.1.x).
                        Jetty 12 dependencies use modules names different from Jetty 11.
                    </para>
                </listitem>
            </itemizedlist>
        </section>
        <section xml:id="mig-3.1.4">
            <title>Migrating from Jersey 3.1.3 to 3.1.4</title>
            <section xml:id="mig-3.1.4-jackson-changes">
                <title>Changes in Jackson</title>
                <para>
                    Jersey 3.1.4 starts to support Jackson 2.15 which comes with default limitations for the length of parsed text,
                    numbers, and nesting depth. Jersey keeps the Jackson default value, but it allows to override the maximum
                    length of parsed text using the &jersey.message.MessageProperties.JSON_MAX_STRING_LENGTH; property if needed.
                </para>
            </section>
        </section>
    </section>

</chapter>
