This is an automated email from the ASF dual-hosted git repository.

jamesbognar pushed a commit to branch docs
in repository https://gitbox.apache.org/repos/asf/juneau.git


The following commit(s) were added to refs/heads/docs by this push:
     new 50578598b8 refactor: merge annotation sub-packages into parent 
packages; fix Eclipse warnings; add V10.0 migration guide
50578598b8 is described below

commit 50578598b8ea4ebbf9ba8c861dd5912bef8f8658
Author: James Bognar <[email protected]>
AuthorDate: Sun Jun 7 10:57:22 2026 -0400

    refactor: merge annotation sub-packages into parent packages; fix Eclipse 
warnings; add V10.0 migration guide
---
 README.md                                          |   4 +-
 pages/release-notes/10.0.0.md                      |   2 +-
 pages/release-notes/9.5.0.md                       |   6 +-
 pages/topics/02.04.09.PojoBuilders.md              |   4 +-
 pages/topics/06.01.JuneauCommonsBasics.md          |   2 +-
 pages/topics/09.01.JuneauRestCommonBasics.md       |   2 +-
 pages/topics/09.03.Annotations.md                  |   2 +-
 pages/topics/10.07a.RestServerComposition.md       |   2 +-
 pages/topics/10.14d.JspViewSupport.md              |   4 +-
 pages/topics/10.14e.ThymeleafViewSupport.md        |   4 +-
 pages/topics/10.14f.MustacheViewSupport.md         |   4 +-
 pages/topics/10.14g.FreemarkerViewSupport.md       |   4 +-
 pages/topics/10a.01.JuneauRestServerMcpBasics.md   |   2 +-
 pages/topics/15.10.HealthProbes.md                 |   2 +-
 pages/topics/19.04.JuneauExamplesRestSpringboot.md |   2 +-
 pages/topics/20.04.JuneauShadedRestServer.md       |   2 +-
 .../20.05.JuneauShadedRestServerSpringboot.md      |   4 +-
 pages/topics/20.06.JuneauShadedAll.md              |   2 +-
 ...ion-guide.md => 24.01.V10.0-migration-guide.md} | 106 +++++++++++++++------
 sidebars.ts                                        |  22 ++---
 20 files changed, 117 insertions(+), 65 deletions(-)

diff --git a/README.md b/README.md
index 5054dee22c..7d6c4a6809 100644
--- a/README.md
+++ b/README.md
@@ -112,7 +112,7 @@ System.out.println(parsed.name); // Output: John
 ### 4. Create a REST API
 
 ```java
-import org.apache.juneau.rest.annotation.*;
+import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.servlet.*;
 
 @Rest(
@@ -216,7 +216,7 @@ boolean enabled = config.get("features.enabled", 
Boolean.class);
 
 ```java
 import org.apache.juneau.rest.client.*;
-import org.apache.juneau.http.annotation.*;
+import org.apache.juneau.http.*;
 
 // Define REST interface
 @Remote("http://api.example.com";)
diff --git a/pages/release-notes/10.0.0.md b/pages/release-notes/10.0.0.md
index 1b6fd4ae0c..355a8e8a7b 100644
--- a/pages/release-notes/10.0.0.md
+++ b/pages/release-notes/10.0.0.md
@@ -12,7 +12,7 @@ Juneau 10.0.0 is a major version release representing a 
significant milestone fo
 
 This is the first release in the 10.x line. The jump from 9.x to 10.0 reflects 
accumulated breaking changes in the API surface and internal architecture that 
warranted a major version boundary, following [Semantic 
Versioning](https://semver.org/) conventions.
 
-Consumers upgrading from 9.5.0 should consult the [V10 Migration 
Guide](/docs/topics/V10MigrationGuide) (link TBD) for a complete list of 
breaking changes.
+Consumers upgrading from 9.5.0 should consult the [V10.0 Migration 
Guide](/docs/topics/V10.0-migration-guide) for a complete list of breaking 
changes.
 
 ### Code quality improvements
 
diff --git a/pages/release-notes/9.5.0.md b/pages/release-notes/9.5.0.md
index cd60d195bb..2d5cfef3a1 100644
--- a/pages/release-notes/9.5.0.md
+++ b/pages/release-notes/9.5.0.md
@@ -281,7 +281,7 @@ neutral, marshaller-agnostic base, with JSON5-flavored 
siblings in `org.apache.j
 [RFC 8259](https://www.rfc-editor.org/rfc/rfc8259) JSON (was JSON5), and their 
`(CharSequence)` /
 `(Reader)` constructors and `ofString(...)` factories (renamed from 
`ofJson(...)`) now default to
 `JsonParser.DEFAULT` (was `Json5Parser.DEFAULT`). See the
-[v9.5 Migration Guide](/docs/topics/V9.5-migration-guide) for the full 
breakdown and the
+[v10.0 Migration Guide](/docs/topics/V10.0-migration-guide) for the full 
breakdown and the
 recommended fix paths.
 
 ##### New neutral base in `org.apache.juneau.collections`
@@ -351,7 +351,7 @@ The SVL-resolving map (which moved into 
`org.apache.juneau.collections` as part
 has been **renamed** to `ResolvingMarshalledMap` and re-parented from 
`JsonMap` to the new neutral
 `MarshalledMap` base. SVL resolution is language-agnostic, so the strict-JSON 
parent was no longer
 the right shape. Hard rename, no deprecation shim. See the SVL "Package Moves" 
table further down
-in this file and the [v9.5 Migration Guide](/docs/topics/V9.5-migration-guide) 
for the import update.
+in this file and the [v10.0 Migration 
Guide](/docs/topics/V10.0-migration-guide) for the import update.
 
 ##### Migration
 
@@ -3606,7 +3606,7 @@ Key changes:
 - **`@RestInit(RestContext.Builder b)`** / **`@RestInit(RestOpContext.Builder 
b)`** injection hooks — removed. The supported `@RestInit` parameter shapes are 
now `ServletConfig`, `ServletContext`, the resource instance, `@Bean`-supplied 
beans, and zero-arg.
 - **Annotation memoizers** — every setting previously set by the builder is 
now computed lazily by a `findXxx()` method on `RestContext` / `RestOpContext` 
that walks the `@Rest` / `@RestOp` annotation chain, system properties, and the 
`@Bean` bean store. Results are cached in a `Memoizer<T>` and invalidated by 
`RestContext.reset()`.
 
-See the [V9.5 Migration Guide](/docs/topics/V9.5-migration-guide) for a 
per-setting replacement table.
+See the [V10.0 Migration Guide](/docs/topics/V10.0-migration-guide) for a 
per-setting replacement table.
 
 #### Bean precedence: Spring > `@Bean` (inject) > default (breaking)
 
diff --git a/pages/topics/02.04.09.PojoBuilders.md 
b/pages/topics/02.04.09.PojoBuilders.md
index 61fb9ea06e..2bc733d155 100644
--- a/pages/topics/02.04.09.PojoBuilders.md
+++ b/pages/topics/02.04.09.PojoBuilders.md
@@ -83,7 +83,7 @@ The first can be accomplished through **any** of the 
following:
   ```java
   public MyBean(Builder builder) {...}
   ```
-- A <a href="/site/apidocs/org/apache/juneau/annotation/Builder.html" 
target="_blank">@Builder</a> annotation on the POJO class to explicitly 
identify it.  
+- A <a href="/site/apidocs/org/apache/juneau/commons/Builder.html" 
target="_blank">@Builder</a> annotation on the POJO class to explicitly 
identify it.  
   The builder class must have a public no-arg constructor.
   ```java
   @Builder(Builder.class) public class MyBean {...}
@@ -103,7 +103,7 @@ The second can be accomplished through **any** of the 
following:
 :::info See Also
 
 <tree>
-<node-0><java-annotation><a 
href="/site/apidocs/org/apache/juneau/annotation/Builder.html" 
target="_blank">org.apache.juneau.annotation.Builder</a></java-annotation></node-0>
+<node-0><java-annotation><a 
href="/site/apidocs/org/apache/juneau/commons/Builder.html" 
target="_blank">org.apache.juneau.commons.Builder</a></java-annotation></node-0>
 <node-0><java-abstract-class><a 
href="/site/apidocs/org/apache/juneau/swap/Builder.html" 
target="_blank">org.apache.juneau.swap.Builder</a></java-abstract-class></node-0>
 </tree>
 
diff --git a/pages/topics/06.01.JuneauCommonsBasics.md 
b/pages/topics/06.01.JuneauCommonsBasics.md
index 21df3dec99..d90d1644b5 100644
--- a/pages/topics/06.01.JuneauCommonsBasics.md
+++ b/pages/topics/06.01.JuneauCommonsBasics.md
@@ -42,7 +42,7 @@ The `juneau-commons` module provides common utilities and 
APIs used across the J
 - **Function** (`org.apache.juneau.commons.function`): Functional programming 
utilities including tuples, throwing functions, and resettable suppliers
 - **Concurrent** (`org.apache.juneau.commons.concurrent`): Concurrency 
utilities including simple locks and read-write locks
 - **Time** (`org.apache.juneau.commons.time`): Time utilities for granular 
date/time handling and time providers
-- **Annotation** (`org.apache.juneau.commons.annotation`): Annotation 
utilities for working with annotation objects and groups
+- **Annotation** (`org.apache.juneau.commons`): Annotation utilities for 
working with annotation objects and groups
 - **Conversion** (`org.apache.juneau.commons.conversion`): Type conversion 
utilities
 
 This module has no external dependencies and serves as the foundation for 
other Juneau modules.
diff --git a/pages/topics/09.01.JuneauRestCommonBasics.md 
b/pages/topics/09.01.JuneauRestCommonBasics.md
index 0acb93a1cd..17629bc528 100644
--- a/pages/topics/09.01.JuneauRestCommonBasics.md
+++ b/pages/topics/09.01.JuneauRestCommonBasics.md
@@ -60,7 +60,7 @@ The transport-neutral packages in `juneau-rest-common`:
 <tree>
 <node-0>Transport-neutral HTTP packages (no Apache HttpClient 4.5 
dependency)</node-0>
 <node-1><java-package><a 
href="/site/apidocs/org/apache/juneau/http/package-summary.html" 
target="_blank">org.apache.juneau.http</a></java-package> - Static 
`HttpHeaders` factory facade and shared utilities.</node-1>
-<node-1><java-package><a 
href="/site/apidocs/org/apache/juneau/http/annotation/package-summary.html" 
target="_blank">org.apache.juneau.http.annotation</a></java-package> - 
Swagger-based annotations used on both server-side APIs and client-side proxy 
interfaces.</node-1>
+<node-1><java-package><a 
href="/site/apidocs/org/apache/juneau/http/package-summary.html" 
target="_blank">org.apache.juneau.http</a></java-package> - Swagger-based 
annotations used on both server-side APIs and client-side proxy 
interfaces.</node-1>
 <node-1><java-package><a 
href="/site/apidocs/org/apache/juneau/http/header/package-summary.html" 
target="_blank">org.apache.juneau.http.header</a></java-package> - 
Lazy-resolved HTTP header beans (no Apache `Header` interface dependency) and 
the `EntityTag` / `EntityTags` value types.</node-1>
 <node-1><java-package><a 
href="/site/apidocs/org/apache/juneau/http/part/package-summary.html" 
target="_blank">org.apache.juneau.http.part</a></java-package> - HTTP 
query/form-data/path classes.</node-1>
 <node-1><java-package><a 
href="/site/apidocs/org/apache/juneau/http/remote/package-summary.html" 
target="_blank">org.apache.juneau.http.remote</a></java-package> - `@Remote` / 
`@RemoteOp` / `@RemoteGet` / etc. proxy-interface annotations.</node-1>
diff --git a/pages/topics/09.03.Annotations.md 
b/pages/topics/09.03.Annotations.md
index 59dc96dbcb..c876377747 100644
--- a/pages/topics/09.03.Annotations.md
+++ b/pages/topics/09.03.Annotations.md
@@ -3,7 +3,7 @@ title: "Annotations"
 slug: Annotations
 ---
 
-The <a 
href="/site/apidocs/org/apache/juneau/http/annotation/package-summary.html" 
target="_blank">org.apache.juneau.http.annotation</a> package contains 
annotations for defining both
+The <a href="/site/apidocs/org/apache/juneau/http/package-summary.html" 
target="_blank">org.apache.juneau.http</a> package contains annotations for 
defining both
 server and client side APIs.
 
 The server-side APIs also use it for producing auto-generated Swagger 
documentation through the REST API itself.
diff --git a/pages/topics/10.07a.RestServerComposition.md 
b/pages/topics/10.07a.RestServerComposition.md
index 18130e229d..f9a962b4b1 100644
--- a/pages/topics/10.07a.RestServerComposition.md
+++ b/pages/topics/10.07a.RestServerComposition.md
@@ -75,7 +75,7 @@ The recommended way to wire Kubernetes probes into an 
existing root servlet:
 
 ```java
 import org.apache.juneau.commons.inject.*;
-import org.apache.juneau.rest.annotation.*;
+import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.health.*;
 import org.apache.juneau.rest.servlet.*;
 
diff --git a/pages/topics/10.14d.JspViewSupport.md 
b/pages/topics/10.14d.JspViewSupport.md
index c41b31f8a0..e317b39626 100644
--- a/pages/topics/10.14d.JspViewSupport.md
+++ b/pages/topics/10.14d.JspViewSupport.md
@@ -100,11 +100,11 @@ Hello, ${name}!
 ### REST resource — `View`-return dispatch
 
 ```java
-import org.apache.juneau.rest.annotation.*;
+import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.servlet.*;
 import org.apache.juneau.rest.view.*;
 import org.apache.juneau.rest.view.jsp.*;
-import org.apache.juneau.http.annotation.*;
+import org.apache.juneau.http.*;
 
 @Rest(path="/app", mixins=BasicJspResource.class)
 public class AppResource extends RestServlet {
diff --git a/pages/topics/10.14e.ThymeleafViewSupport.md 
b/pages/topics/10.14e.ThymeleafViewSupport.md
index f1f1c7b176..766a75c660 100644
--- a/pages/topics/10.14e.ThymeleafViewSupport.md
+++ b/pages/topics/10.14e.ThymeleafViewSupport.md
@@ -105,8 +105,8 @@ src/main/resources/
 ### REST resource — `View`-return dispatch
 
 ```java
-import org.apache.juneau.http.annotation.*;
-import org.apache.juneau.rest.annotation.*;
+import org.apache.juneau.http.*;
+import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.servlet.*;
 import org.apache.juneau.rest.view.*;
 import org.apache.juneau.rest.view.thymeleaf.*;
diff --git a/pages/topics/10.14f.MustacheViewSupport.md 
b/pages/topics/10.14f.MustacheViewSupport.md
index 22b3c4620c..23ec2de93d 100644
--- a/pages/topics/10.14f.MustacheViewSupport.md
+++ b/pages/topics/10.14f.MustacheViewSupport.md
@@ -107,8 +107,8 @@ src/main/resources/
 ### REST resource — `View`-return dispatch
 
 ```java
-import org.apache.juneau.http.annotation.*;
-import org.apache.juneau.rest.annotation.*;
+import org.apache.juneau.http.*;
+import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.servlet.*;
 import org.apache.juneau.rest.view.*;
 import org.apache.juneau.rest.view.mustache.*;
diff --git a/pages/topics/10.14g.FreemarkerViewSupport.md 
b/pages/topics/10.14g.FreemarkerViewSupport.md
index c0a886ebd5..c93d956483 100644
--- a/pages/topics/10.14g.FreemarkerViewSupport.md
+++ b/pages/topics/10.14g.FreemarkerViewSupport.md
@@ -118,8 +118,8 @@ plain-text email bodies or JSON-shaped responses where the 
caller controls escap
 ### REST resource — `View`-return dispatch
 
 ```java
-import org.apache.juneau.http.annotation.*;
-import org.apache.juneau.rest.annotation.*;
+import org.apache.juneau.http.*;
+import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.servlet.*;
 import org.apache.juneau.rest.view.*;
 import org.apache.juneau.rest.view.freemarker.*;
diff --git a/pages/topics/10a.01.JuneauRestServerMcpBasics.md 
b/pages/topics/10a.01.JuneauRestServerMcpBasics.md
index 06e28e705b..0142f28c51 100644
--- a/pages/topics/10a.01.JuneauRestServerMcpBasics.md
+++ b/pages/topics/10a.01.JuneauRestServerMcpBasics.md
@@ -55,7 +55,7 @@ Subclass `McpRestServlet` and supply your config in 
`createMcpConfig()`. The bas
 
 ```java
 import org.apache.juneau.bean.mcp.*;
-import org.apache.juneau.rest.annotation.*;
+import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.mcp.*;
 
 @Rest(path="/mcp")
diff --git a/pages/topics/15.10.HealthProbes.md 
b/pages/topics/15.10.HealthProbes.md
index 79d576ca55..e57799281f 100644
--- a/pages/topics/15.10.HealthProbes.md
+++ b/pages/topics/15.10.HealthProbes.md
@@ -50,7 +50,7 @@ HTTP status is:
 import org.apache.juneau.commons.inject.*;
 import org.apache.juneau.microservice.*;
 import org.apache.juneau.microservice.jetty.*;
-import org.apache.juneau.rest.annotation.*;
+import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.health.*;
 import org.apache.juneau.rest.servlet.*;
 
diff --git a/pages/topics/19.04.JuneauExamplesRestSpringboot.md 
b/pages/topics/19.04.JuneauExamplesRestSpringboot.md
index 205e76c40f..e84d5daa4e 100644
--- a/pages/topics/19.04.JuneauExamplesRestSpringboot.md
+++ b/pages/topics/19.04.JuneauExamplesRestSpringboot.md
@@ -54,7 +54,7 @@ The example demonstrates Spring Boot integration with Juneau 
REST:
 ```java
 package org.apache.juneau.examples.rest.springboot;
 
-import org.apache.juneau.rest.annotation.*;
+import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.springboot.*;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.*;
diff --git a/pages/topics/20.04.JuneauShadedRestServer.md 
b/pages/topics/20.04.JuneauShadedRestServer.md
index 7d8f0efeab..f0c679e8ba 100644
--- a/pages/topics/20.04.JuneauShadedRestServer.md
+++ b/pages/topics/20.04.JuneauShadedRestServer.md
@@ -82,7 +82,7 @@ java_library(
 ### Basic REST Resource
 
 ```java
-import org.apache.juneau.rest.annotation.*;
+import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.servlet.*;
 
 @Rest(
diff --git a/pages/topics/20.05.JuneauShadedRestServerSpringboot.md 
b/pages/topics/20.05.JuneauShadedRestServerSpringboot.md
index 3aa003a080..7404762792 100644
--- a/pages/topics/20.05.JuneauShadedRestServerSpringboot.md
+++ b/pages/topics/20.05.JuneauShadedRestServerSpringboot.md
@@ -88,7 +88,7 @@ public class MyApplication {
 ### REST Resource with Spring Integration
 
 ```java
-import org.apache.juneau.rest.annotation.*;
+import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.springboot.*;
 import org.springframework.beans.factory.annotation.Autowired;
 
@@ -123,7 +123,7 @@ public class PetResource extends SpringRestServlet {
 
 ```java
 import org.springframework.context.annotation.Configuration;
-import org.apache.juneau.rest.annotation.Rest;
+import org.apache.juneau.rest.Rest;
 
 @Rest(
     defaultAccept="application/json",
diff --git a/pages/topics/20.06.JuneauShadedAll.md 
b/pages/topics/20.06.JuneauShadedAll.md
index ec8be18572..5d27641626 100644
--- a/pages/topics/20.06.JuneauShadedAll.md
+++ b/pages/topics/20.06.JuneauShadedAll.md
@@ -111,7 +111,7 @@ java_binary(
 
 ```java
 import org.apache.juneau.microservice.jetty.*;
-import org.apache.juneau.rest.annotation.*;
+import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.servlet.*;
 
 // Main application
diff --git a/pages/topics/23.01.V9.5-migration-guide.md 
b/pages/topics/24.01.V10.0-migration-guide.md
similarity index 93%
rename from pages/topics/23.01.V9.5-migration-guide.md
rename to pages/topics/24.01.V10.0-migration-guide.md
index 63c973e1e6..4101ce341f 100644
--- a/pages/topics/23.01.V9.5-migration-guide.md
+++ b/pages/topics/24.01.V10.0-migration-guide.md
@@ -1,13 +1,71 @@
 ---
-title: "v9.5 Migration Guide"
-slug: V9.5-migration-guide
+title: "v10.0 Migration Guide"
+slug: V10.0-migration-guide
 ---
 
-The following guide can be used to help migrate your code to v9.5.
+The following guide can be used to help migrate your code to v10.0.
 Note that you can also refer to the Release Notes for changes as well.
 
-This guide also captures breaking changes introduced during the 9.2.x line so 
that
-teams jumping from 9.1 (or earlier) directly to 9.5 have a single reference.
+This guide covers all breaking changes introduced since v9.1, including 
changes that were
+originally developed under the v9.5.0 label (a release that was never shipped 
— it was
+renamed to v10.0.0). Teams upgrading from 8.x, 9.1, or any earlier version can 
use this
+as a single authoritative reference.
+
+## Annotation Sub-Package Collapse
+
+All `*.annotation` sub-packages have been merged into their parent packages.
+Classes that were in `org.apache.juneau.foo.annotation` are now in 
`org.apache.juneau.foo`.
+
+| Old package | New package |
+|-------------|-------------|
+| `org.apache.juneau.annotation.*` | `org.apache.juneau.*` |
+| `org.apache.juneau.bson.annotation.*` | `org.apache.juneau.bson.*` |
+| `org.apache.juneau.cbor.annotation.*` | `org.apache.juneau.cbor.*` |
+| `org.apache.juneau.csv.annotation.*` | `org.apache.juneau.csv.*` |
+| `org.apache.juneau.hjson.annotation.*` | `org.apache.juneau.hjson.*` |
+| `org.apache.juneau.hocon.annotation.*` | `org.apache.juneau.hocon.*` |
+| `org.apache.juneau.html.annotation.*` | `org.apache.juneau.html.*` |
+| `org.apache.juneau.ini.annotation.*` | `org.apache.juneau.ini.*` |
+| `org.apache.juneau.jcs.annotation.*` | `org.apache.juneau.jcs.*` |
+| `org.apache.juneau.json.annotation.*` | `org.apache.juneau.json.*` |
+| `org.apache.juneau.jsonl.annotation.*` | `org.apache.juneau.jsonl.*` |
+| `org.apache.juneau.jsonschema.annotation.*` | 
`org.apache.juneau.jsonschema.*` |
+| `org.apache.juneau.markdown.annotation.*` | `org.apache.juneau.markdown.*` |
+| `org.apache.juneau.msgpack.annotation.*` | `org.apache.juneau.msgpack.*` |
+| `org.apache.juneau.oapi.annotation.*` | `org.apache.juneau.oapi.*` |
+| `org.apache.juneau.parquet.annotation.*` | `org.apache.juneau.parquet.*` |
+| `org.apache.juneau.parser.annotation.*` | `org.apache.juneau.parser.*` |
+| `org.apache.juneau.plaintext.annotation.*` | `org.apache.juneau.plaintext.*` 
|
+| `org.apache.juneau.proto.annotation.*` | `org.apache.juneau.proto.*` |
+| `org.apache.juneau.serializer.annotation.*` | 
`org.apache.juneau.serializer.*` |
+| `org.apache.juneau.soap.annotation.*` | `org.apache.juneau.soap.*` |
+| `org.apache.juneau.toml.annotation.*` | `org.apache.juneau.toml.*` |
+| `org.apache.juneau.uon.annotation.*` | `org.apache.juneau.uon.*` |
+| `org.apache.juneau.urlencoding.annotation.*` | 
`org.apache.juneau.urlencoding.*` |
+| `org.apache.juneau.xml.annotation.*` | `org.apache.juneau.xml.*` |
+| `org.apache.juneau.yaml.annotation.*` | `org.apache.juneau.yaml.*` |
+| `org.apache.juneau.commons.annotation.*` | `org.apache.juneau.commons.*` |
+| `org.apache.juneau.jena.annotation.*` | `org.apache.juneau.jena.*` |
+| `org.apache.juneau.http.annotation.*` | `org.apache.juneau.http.*` |
+| `org.apache.juneau.rest.annotation.*` | `org.apache.juneau.rest.*` |
+
+**Migration action required:** Update all `import` statements that reference 
an `*.annotation`
+sub-package. Wildcard imports can simply be collapsed to the parent package — 
for example:
+
+```diff
+-import org.apache.juneau.json.annotation.*;
++import org.apache.juneau.json.*;
+```
+
+If the parent package is already imported, the `*.annotation` import can be 
dropped entirely.
+Single-type imports follow the same rename, e.g.:
+
+```diff
+-import org.apache.juneau.json.annotation.Json;
++import org.apache.juneau.json.Json;
+```
+
+## REST Context Builder and Configuration Refactoring
 
 | Old | New |
 |-----|-----|
@@ -26,7 +84,6 @@ teams jumping from 9.1 (or earlier) directly to 9.5 have a 
single reference.
 | Per-operation `@RestInit public void init(RestOpContext.Builder b) { ... }` 
hook — the framework discovered every `@RestInit` method whose parameter list 
contained `RestOpContext.Builder` and invoked it once per `@RestOp`-annotated 
method, threading the in-flight per-op builder so the hook could imperatively 
customize a single operation's context. | **Removed.** The per-op 
`@RestInit(RestOpContext.Builder)` injection protocol is gone. All 
operation-level configuration is now expressed  [...]
 | `RestOpContext.create(java.lang.reflect.Method, RestContext)` static factory 
+ the fluent `.beanStore(...).type(...).build()` chain — used internally by 
`RestContext` and (rarely) by user code building one-off `RestOpContext` 
instances. | **Removed.** The two internal callers in 
`RestContext.Builder.createRestOperations` migrated to direct constructor 
invocation: `new RestOpContext(method, context)` for the standard path and `new 
RrpcRestOpContext(method, context)` for the RRPC special [...]
 | Class-level `@RestInit public void init(RestContext.Builder b) { ... }` hook 
— the framework added the in-flight `RestContext.Builder` to the resource's 
bean store so any `@RestInit` method that declared a `RestContext.Builder` 
parameter received it and could imperatively configure the resource-level 
context (`builder.path(...)`, `builder.children(...)`, `builder.encoders(...)`, 
etc.). | **Removed.** The class-level Builder-injection protocol is gone — 
`RestContext.Builder` is no longe [...]
-
 | Custom annotation appliers — user code that subclassed the internal 
`AnnotationApplier<Rest, RestContext.Builder>` (or `AnnotationApplier<RestOp, 
RestOpContext.Builder>`) to extend the annotation-processing pass (the 
`apply(AnnotationInfo<A>, B builder)` hook invoked once per annotation during 
context construction). | **Removed.** The builder-based apply-pass is gone; 
`RestAnnotation.Apply` (`RestContextApply`) is now a package-private nested 
class inside `RestContext` and is not exten [...]
 | Custom `RestAnnotation.create(...)` / `RestOpAnnotation.create(...)` 
builder-of-builders patterns — programmatic construction of `@Rest` / `@RestOp` 
annotation proxies used to feed synthetic annotations into the builder 
apply-pass (common in test fixtures and extension libraries). | The annotation 
proxy builders still exist for test use (`RestAnnotation.create()` / 
`RestOpAnnotation.create()` are still available via annotation-test helpers), 
but they no longer feed into a builder apply [...]
 | Debug config attributes on `@Rest` / `@RestOp` (`debug`, `debugDefault`, 
`debugEnablement`, `debugOn`) | A single typed slot: `debug=@Debug(...)` on 
both `@Rest` and `@RestOp`. Use `@Debug("always" | "never" | "conditional")`, 
optional `format`, `level`, and `config` members. | **Hard break.** The old 
attributes are removed with no deprecation shim. Method-level debug 
configuration is now applied only on `@RestOp` methods. Runtime request 
shortcuts (`RestRequest.setDebug()/setDebug(Boo [...]
@@ -71,7 +128,7 @@ flavored maps / lists based on the parser's language, which 
changes the runtime
 | `Json5Map.ofJson5(CharSequence)` / `Json5Map.ofJson5(Reader)` | 
`Json5Map.ofString(CharSequence)` / `Json5Map.ofString(Reader)` (`ofText(...)` 
deprecated alias) | Method naming now aligns with string-based parse factories 
across `MarshalledMap`/`JsonMap`/`Json5Map`. No behavioral change — the 
single-arg form still uses `Json5Parser.DEFAULT`. |
 | `Json5List.ofJson5(CharSequence)` / `Json5List.ofJson5(Reader)` | 
`Json5List.ofString(CharSequence)` / `Json5List.ofString(Reader)` 
(`ofText(...)` deprecated alias) | Method naming now aligns with string-based 
parse factories across `MarshalledList`/`JsonList`/`Json5List`. No behavioral 
change — the single-arg form still uses `Json5Parser.DEFAULT`. (Note: 
`Json5List.ofJson5OrCdl(String)` was NOT renamed.) |
 | `Json5Parser.DEFAULT.parse(s, Object.class)` returned a `JsonMap` (and 
nested objects were `JsonMap` / `JsonList`). | Returns a `Json5Map` (and nested 
objects are `Json5Map` / `Json5List`). | Same change applies to `parse(s, 
Map.class)` / `parse(s, Collection.class)` targets, and to nested maps / lists 
inside the parsed tree. Code that casts the result to `JsonMap` will throw 
`ClassCastException`. Fix options: (1) cast to `Json5Map` / `Json5List` 
instead, (2) cast to the neutral `Marsh [...]
-| Every parser other than `JsonParser` / `Json5Parser` (`XmlParser`, 
`YamlParser`, `UonParser`, `UrlEncodingParser`, `HoconParser`, `MsgPackParser`, 
`CborParser`, `BsonParser`, `HtmlParser`, `JsonlParser`, `HjsonParser`, 
`MarkdownParser`, `CsvParser`, `RdfXmlParser`, etc.) returned `JsonMap` / 
`JsonList` from `parse(s, Object.class)`. | Returns the neutral `MarshalledMap` 
/ `MarshalledList`. | Same fix options as the `Json5Parser` row above. 
Per-language flavored `XMap` / `XList` (e.g. ` [...]
+| Every parser other than `JsonParser` / `Json5Parser` (`XmlParser`, 
`YamlParser`, `UonParser`, `UrlEncodingParser`, `HoconParser`, `MsgPackParser`, 
`CborParser`, `BsonParser`, `HtmlParser`, `JsonlParser`, `HjsonParser`, 
`MarkdownParser`, `CsvParser`, `RdfXmlParser`, etc.) returned `JsonMap` / 
`JsonList` from `parse(s, Object.class)`. | Returns the neutral `MarshalledMap` 
/ `MarshalledList`. | Same fix options as the `Json5Parser` row above. 
Per-language flavored `XMap` / `XList` (e.g. ` [...]
 | `org.apache.juneau.collections.ResolvingJsonMap` | 
`org.apache.juneau.collections.ResolvingMarshalledMap` | Renamed AND 
re-parented from `JsonMap` to the new neutral `MarshalledMap` base — SVL 
resolution is language-agnostic. Hard rename, no deprecation shim. Update the 
import and any `new ResolvingJsonMap(...)` constructor calls. |
 
 ## Bean→Marshalled Renames
@@ -302,7 +359,7 @@ the user adds to 
`Microservice.Builder.configurations(...)`. The Java package
 
 ## REST Client and HTTP Stack Promotion (TODO-38)
 
-Juneau 9.5.0 promotes the next-generation, transport-agnostic REST client to 
the canonical names.
+Juneau v10.0 promotes the next-generation, transport-agnostic REST client to 
the canonical names.
 The pre-existing Apache HttpClient 4.5–based stack moves under `.classic` 
packages and a new
 `juneau-rest-client-classic` Maven module so existing call sites keep working.
 
@@ -311,20 +368,20 @@ The pre-existing Apache HttpClient 4.5–based stack moves 
under `.classic` pack
 | Old | New | Notes |
 |-----|-----|-------|
 | `<artifactId>juneau-rest-client</artifactId>` | 
`<artifactId>juneau-rest-client</artifactId>` *(canonical, NG)* **and/or** 
`<artifactId>juneau-rest-client-classic</artifactId>` *(legacy)* | The 
historical `juneau-rest-client` artifact is now the **transport-agnostic NG** 
client with no `org.apache.http.*` dependency. The legacy HC4.5-based 
`RestClient` moved into the new `juneau-rest-client-classic` sibling artifact. 
Pull in both if you need both flavors; the aggregator artifacts (`jun [...]
-| `<artifactId>juneau-ng-rest-client-apache-httpclient-45</artifactId>` | 
`<artifactId>juneau-rest-client-apache-httpclient-45</artifactId>` | Drop the 
`ng-` prefix. The 9.5 early-snapshot package layout shipped these NG transport 
modules under `juneau-ng-rest-client-*` artifacts; the GA cut renames them. 
Same rename applies to `…-apache-httpclient-50`, `…-java-httpclient`, 
`…-okhttp`, `…-jetty`. |
+| `<artifactId>juneau-ng-rest-client-apache-httpclient-45</artifactId>` | 
`<artifactId>juneau-rest-client-apache-httpclient-45</artifactId>` | Drop the 
`ng-` prefix. The early-snapshot package layout shipped these NG transport 
modules under `juneau-ng-rest-client-*` artifacts; the GA cut renames them. 
Same rename applies to `…-apache-httpclient-50`, `…-java-httpclient`, 
`…-okhttp`, `…-jetty`. |
 
 ### Package renames
 
 | Old | New | Notes |
 |-----|-----|-------|
 | `org.apache.juneau.http.*` *(Apache HttpCore-based types in 
`juneau-rest-common`)* | `org.apache.juneau.http.classic.*` | The historical 
`juneau-rest-common` types (`HttpHeaders` facade, `Authorization`, `Range`, 
`BasicHeader`, `BasicStatusLine`, response/exception classes, etc., ~170 types) 
moved under the `.classic` sub-package. Update `import 
org.apache.juneau.http.*;` to `import org.apache.juneau.http.classic.*;`. |
-| `org.apache.juneau.ng.http.*` *(9.5 early snapshot only)* | 
`org.apache.juneau.http.*` | The new JDK-native types that briefly lived under 
`ng.http.*` graduated to the now-free canonical `org.apache.juneau.http.*` 
namespace. The `@Remote` / `@RemoteGet` / `@RemotePost` / etc. annotations stay 
at `org.apache.juneau.http.remote.*` (unchanged). |
-| `org.apache.juneau.ng.rest.client.*` *(9.5 early snapshot only)* | 
`org.apache.juneau.rest.client.*` | The NG client and HTTP transport SPI are 
now canonical. The legacy `RestClient` (Apache HttpClient 4.5–based) is at 
`org.apache.juneau.rest.client.classic.*` in the new module. |
-| `org.apache.juneau.ng.rest.mock.*` *(9.5 early snapshot only)* | 
`org.apache.juneau.rest.mock.*` | Canonical, paired with the NG `RestClient`. |
+| `org.apache.juneau.ng.http.*` *(early snapshot only)* | 
`org.apache.juneau.http.*` | The new JDK-native types that briefly lived under 
`ng.http.*` graduated to the now-free canonical `org.apache.juneau.http.*` 
namespace. The `@Remote` / `@RemoteGet` / `@RemotePost` / etc. annotations stay 
at `org.apache.juneau.http.remote.*` (unchanged). |
+| `org.apache.juneau.ng.rest.client.*` *(early snapshot only)* | 
`org.apache.juneau.rest.client.*` | The NG client and HTTP transport SPI are 
now canonical. The legacy `RestClient` (Apache HttpClient 4.5–based) is at 
`org.apache.juneau.rest.client.classic.*` in the new module. |
+| `org.apache.juneau.ng.rest.mock.*` *(early snapshot only)* | 
`org.apache.juneau.rest.mock.*` | Canonical, paired with the NG `RestClient`. |
 
 ### Class renames (early-snapshot only)
 
-If you adopted the 9.5 early snapshots that exposed `Ng*` class names, update 
to the canonical names. No alias / deprecation shim is provided.
+If you adopted early snapshots that exposed `Ng*` class names, update to the 
canonical names. No alias / deprecation shim is provided.
 
 | Old | New | Notes |
 |-----|-----|-------|
@@ -372,7 +429,7 @@ Continues the work started in TODO-38: `juneau-rest-common` 
is now split into a
 
 | Old (single artifact) | New (two artifacts) | Notes |
 |-----|-----|-------|
-| `<artifactId>juneau-rest-common</artifactId>` *(carries `httpcore` 
transitively)* | `<artifactId>juneau-rest-common</artifactId>` 
*(transport-neutral, **no** `httpcore`)* **and/or** 
`<artifactId>juneau-rest-common-classic</artifactId>` *(new, depends on 
`httpcore`)* | Code using only `org.apache.juneau.http.*` / 
`org.apache.juneau.http.header.*` / `org.apache.juneau.http.remote.*` / 
`org.apache.juneau.http.part.*` / `org.apache.juneau.http.entity.*` / 
`org.apache.juneau.http.response.* [...]
+| `<artifactId>juneau-rest-common</artifactId>` *(carries `httpcore` 
transitively)* | `<artifactId>juneau-rest-common</artifactId>` 
*(transport-neutral, **no** `httpcore`)* **and/or** 
`<artifactId>juneau-rest-common-classic</artifactId>` *(new, depends on 
`httpcore`)* | Code using only `org.apache.juneau.http.*` / 
`org.apache.juneau.http.header.*` / `org.apache.juneau.http.remote.*` / 
`org.apache.juneau.http.part.*` / `org.apache.juneau.http.entity.*` / 
`org.apache.juneau.http.response.* [...]
 
 ### Class moves (source-incompatible)
 
@@ -403,7 +460,7 @@ Completes the HC 4.5 removal started by TODO-38 / TODO-42. 
`juneau-rest-server`
 
 The Maven coordinate stays the same; the transitive set shrinks:
 
-| Old (9.4) | New (9.5) | Notes |
+| Old (9.4) | New (10.0) | Notes |
 |-----|-----|-------|
 | `juneau-rest-server` pulled `juneau-rest-common-classic` → 
`httpcomponents:httpcore:4.4.16` transitively. | `juneau-rest-server` pulls 
only `juneau-rest-common`. No `org.apache.httpcomponents:*` on the classpath. | 
If your `@Rest` resource still references any 
`org.apache.juneau.http.classic.*` type (e.g. throws 
`org.apache.juneau.http.classic.response.BadRequest`, accepts a 
`org.apache.juneau.http.classic.header.HeaderList`, returns a 
`org.apache.juneau.http.classic.resource.BasicReso [...]
 
@@ -413,7 +470,7 @@ The shaded aggregator artifacts 
(`juneau-shaded-rest-server`, `juneau-shaded-res
 
 The server-side surface that used to expose `org.apache.http.*` types was 
retyped. These signature changes are **source-incompatible**:
 
-| Old (9.4) | New (9.5) | Notes |
+| Old (9.4) | New (10.0) | Notes |
 |-----|-----|-------|
 | `org.apache.http.Header[] hdrs = req.getAllHeaders();` | 
`org.apache.juneau.http.HttpHeader[] hdrs = req.getAllHeaders();` | 
`RestRequest#getAllHeaders()` retyped. The new `HttpHeader` is a JDK-only 
interface; `getName()` / `getValue()` are unchanged. |
 | `org.apache.http.RequestLine rl = req.getRequestLine();` | 
`org.apache.juneau.http.HttpRequestLine rl = req.getRequestLine();` | 
`getMethod()` / `getUri()` are unchanged; `getProtocolVersion()` now returns 
`HttpProtocolVersion` instead of `org.apache.http.ProtocolVersion`. |
@@ -438,7 +495,7 @@ The four request-side part-list classes were renamed for 
consistency with the ne
 
 | Old | New | Notes |
 |-----|-----|-------|
-| `org.apache.juneau.rest.processor.HttpEntityProcessor` | 
`org.apache.juneau.rest.processor.HttpBodyProcessor` | The class was already 
internally rewritten to operate on `org.apache.juneau.http.HttpBody` rather 
than HC 4.5's `org.apache.http.HttpEntity`; the class name was kept for 
compatibility through earlier 9.5 snapshots but is now renamed. The default 
response-processor chain registered by `DefaultConfig` is updated; any custom 
`RestContext.responseProcessors(...)` configuration th [...]
+| `org.apache.juneau.rest.processor.HttpEntityProcessor` | 
`org.apache.juneau.rest.processor.HttpBodyProcessor` | The class was already 
internally rewritten to operate on `org.apache.juneau.http.HttpBody` rather 
than HC 4.5's `org.apache.http.HttpEntity`; the class name was kept for 
compatibility through earlier snapshots but is now renamed. The default 
response-processor chain registered by `DefaultConfig` is updated; any custom 
`RestContext.responseProcessors(...)` configuration that e [...]
 
 ### Legacy return-type handling
 
@@ -473,7 +530,7 @@ Closes out the format-control extension work (TODO-4 / 
TODO-50 / TODO-52 / TODO-
 | `byte[]` bean property on `ParquetSerializer` / `ParquetParser` at 
non-`NOT_SET` `BinaryFormat` → emitted/read as a raw `TYPE_BYTE_ARRAY` Parquet 
column | Emits/reads as a UTF-8 string column containing the configured wire 
form (`BASE64` / `BASE64_URL` / `HEX` / `SPACED_HEX`) | **Wire-format change.** 
At any non-`NOT_SET` `BinaryFormat` value, Parquet now routes `byte[]` through 
the configured text wire form instead of native bytes. Downstream consumers 
that were reading the raw-bytes  [...]
 | `byte[]` bean property on `RdfThriftSerializer` / `RdfThriftParser` / 
`RdfProtoSerializer` / `RdfProtoParser` at non-`NOT_SET` `BinaryFormat` → 
emitted/read as an `xsd:base64Binary` typed RDF literal | Emits/reads as a 
plain RDF string literal containing the configured wire form (`BASE64` / 
`BASE64_URL` / `HEX` / `SPACED_HEX`) | **Wire-format change.** Same shape as 
the Parquet row above — at any non-`NOT_SET` `BinaryFormat`, the binary RDF 
serializers (RDF/Thrift, RDF/Proto) now route [...]
 | `BinaryFormat.BASE64_URL.parse("mQ")` (or any non-3-aligned URL-safe payload 
without `-` / `_` chars) threw `IllegalArgumentException: Invalid BASE64 string 
length` | Decodes correctly via `Base64.getUrlDecoder()` (which accepts missing 
padding) | **Bug fix, not a breaking change.** `BinaryFormat.parse` now honors 
the `BASE64_URL` constant directly before falling through to the 
format-agnostic wire-shape sniff. No source change required. |
-| `JsonParser.DEFAULT.parse("3.14", Object.class)` returned `java.lang.Float` 
*(or any JSON-family parser auto-classifying a bare decimal)* | Returns 
`java.lang.Double` | **Behavioral change (Bug #5 closure)** — see release notes 
for the full rationale. The shared classifier `StringUtils.parseNumber` no 
longer auto-compacts to `Float` when the lossless `Float`/`Double` `toString()` 
representations happen to match. Affects all JSON-family parsers (JSON / JSON5 
/ JSONL / XML / HTML / UON / [...]
+| `JsonParser.DEFAULT.parse("3.14", Object.class)` returned `java.lang.Float` 
*(or any JSON-family parser auto-classifying a bare decimal)* | Returns 
`java.lang.Double` | **Behavioral change** — the shared classifier 
`StringUtils.parseNumber` no longer auto-compacts to `Float` when the lossless 
`Float`/`Double` `toString()` representations happen to match. Affects all 
JSON-family parsers (JSON / JSON5 / JSONL / XML / HTML / UON / UrlEncoding / 
JCS) plus any caller of `StringUtils.parseNu [...]
 
 ## Format-Control: Duration / Period Defaults (TODO-4)
 
@@ -521,7 +578,7 @@ The legacy `ByteArraySwap` family, the 
`OutputStreamSerializer.Builder` / `Input
 |-----|-----|-------|
 | `org.apache.juneau.swaps.ClassSwap` | 
`@MarshalledProp(classFormat=ClassFormat.FQCN)` / 
`@Marshalled(classFormat=...)` / 
`MarshallingContext.Builder.classFormat(ClassFormat)` for bean properties; for 
top-level `Class<?>` values the new `org.apache.juneau.swaps.ClassFormatSwap` 
is registered in `DefaultSwaps` and reads the resolved `ClassFormat` at swap 
time | Hard deletion. Default `ClassFormat.FQCN` (≈ `Class.getCanonicalName()`) 
is functionally compatible with the old `ClassSwap.getN [...]
 | `MarshallingContext` had no top-level `booleanFormat` / `floatFormat` / 
`currencyFormat` / `classFormat` setting | New 
`MarshallingContext.Builder.booleanFormat(BooleanFormat)` / 
`floatFormat(FloatFormat)` / `currencyFormat(CurrencyFormat)` / 
`classFormat(ClassFormat)` settings | Additive. **Defaults:** 
`BooleanFormat.TRUE_FALSE`, `FloatFormat.NaN_AS_NULL` (boxed `Float` / `Double` 
only — primitive `float` / `double` keep the legacy null-to-zero contract), 
`CurrencyFormat.ISO_CODE`, `C [...]
-| `Currency` bean properties at the default `CurrencyFormat` were unrecognized 
(no default swap) | `Currency` round-trips via `DefaultSwaps` registration at 
`CurrencyFormat.ISO_CODE` / `NOT_SET` | Bug #6 closure; source-compatible. |
+| `Currency` bean properties at the default `CurrencyFormat` were unrecognized 
(no default swap) | `Currency` round-trips via `DefaultSwaps` registration at 
`CurrencyFormat.ISO_CODE` / `NOT_SET` | Bug fix, source-compatible. |
 
 ## JSON Strict-Mode Separation (`JsonParser` / `JsonSerializer` vs 
`Json5Parser` / `Json5Serializer`)
 
@@ -576,7 +633,7 @@ Several attributes on these annotations have been **removed 
without deprecation
 | `on()` / `onClass()` attributes on all HTTP annotations | Removed — apply 
the annotation directly to the target rather than via `on()` / `onClass()` 
proxies | Hard removal. |
 | `@ContextApply` on HTTP annotations | Removed — the annotation no longer 
participates in the context-apply pass | Hard removal. |
 | 10 `XAnnotation` companion classes: `ContentAnnotation`, 
`FormDataAnnotation`, `HasFormDataAnnotation`, `HasQueryAnnotation`, 
`HeaderAnnotation`, `PathAnnotation`, `PathRemainderAnnotation`, 
`QueryAnnotation`, `RequestAnnotation`, `StatusCodeAnnotation` | Removed (used 
by the deleted `@ContextApply` plumbing) | Hard removal. `ContactAnnotation`, 
`LicenseAnnotation`, `TagAnnotation`, and `ResponseAnnotation` remain (still 
consumed by Swagger generation utilities). |
-| `org.apache.juneau.ng.http.remote.Body` / `Header` / `Path` / `Query` *(9.5 
early snapshot only)* | `@org.apache.juneau.http.annotation.Content` / `Header` 
/ `Path` / `Query` | The NG duplicate annotations were deleted; the canonical 
`RestClient` (formerly `NgRestClient`) uses the standard annotations. |
+| `org.apache.juneau.ng.http.remote.Body` / `Header` / `Path` / `Query` 
*(early snapshot only)* | `@org.apache.juneau.http.annotation.Content` / 
`Header` / `Path` / `Query` | The NG duplicate annotations were deleted; the 
canonical `RestClient` (formerly `NgRestClient`) uses the standard annotations. 
|
 
 ## Request Attributes vs Session Properties Separation
 
@@ -590,7 +647,7 @@ Request attributes and parser / serializer session 
properties are now completely
 
 ## REST Session-Option Allowlist Refactor
 
-The standalone session-option allowlist machinery has been replaced by a 
`noInherit` attribute on the existing `@Rest` / `@RestOp` group of annotations. 
Programmatic `RestContext.Builder` / `RestOpContext.Builder` allowlist setters 
are gone (the builders themselves are gone — see the top of this file).
+The standalone session-option allowlist machinery has been replaced by a 
`noInherit` attribute on the existing `@Rest` / `@RestOp` group of annotations. 
Programmatic `RestContext.Builder` / `RestOpContext.Builder` allowlist setters 
are gone (the builders themselves are gone — see the REST Configuration section 
above).
 
 | Old | New | Notes |
 |-----|-----|-------|
@@ -676,7 +733,7 @@ The previous `juneau-all` Maven module has been **removed** 
in favor of `juneau-
 
 ## OpenAPI 3.1 Emission + API-docs Mixin Pack (TODO-63 + TODO-74)
 
-OpenAPI 3.1 emission is new in 9.5; existing Swagger v2 emission is unchanged. 
Composition is done by listing api-docs mixins in `@Rest(mixins=...)` rather 
than via a string knob — the `apiFormat` annotation member, system property, 
and `RestContext.getApiFormat()` accessor that briefly existed during the 9.5 
development cycle were removed before release in favor of compose-by-class.
+OpenAPI 3.1 emission is new in v10.0; existing Swagger v2 emission is 
unchanged. Composition is done by listing api-docs mixins in 
`@Rest(mixins=...)` rather than via a string knob — the `apiFormat` annotation 
member, system property, and `RestContext.getApiFormat()` accessor that briefly 
existed during the development cycle were removed before release in favor of 
compose-by-class.
 
 | Old | New | Notes |
 |-----|-----|-------|
@@ -684,8 +741,3 @@ OpenAPI 3.1 emission is new in 9.5; existing Swagger v2 
emission is unchanged. C
 | `BasicRestOperations.getSwagger(RestRequest)` and `getOpenApi(RestRequest)` 
interface methods | Removed. The endpoints are now mounted via the api-docs 
mixin pack on `BasicRestServlet` / `BasicRestObject`. User-written 
`BasicRestOperations` implementers should remove their old `getSwagger` / 
`getOpenApi` overrides — the methods are no longer on the interface. | If you 
need a different api-docs surface, add `@Rest(noInherit={"mixins"}, 
mixins=...)` on your subclass. |
 | `BasicGroupOperations.getChildrenSwagger(RestRequest)` / 
`getChildrenOpenApi(RestRequest)` (the `?Swagger` / `?OpenApi` query mirrors on 
group resources) and the `HasSwaggerQueryParam` / `HasOpenApiQueryParam` 
matcher inner classes | Removed. Hit `/api`, `/swagger`, `/openapi`, or 
`/redoc` directly — they are always mounted on `BasicRestServletGroup` / 
`BasicRestObjectGroup` via the api-docs mixin pack. | External docs that linked 
to `/?Swagger=true` need updating to `/api` (or `/swagger`). |
 | `RestRequest.getSwagger()` was the only way to ask the server for its 
self-described API. | `RestRequest.getOpenApi()` provides the OpenAPI 3.1 
sibling. `RestContext.getOpenApi(Locale)` and 
`RestContext.getOpenApiProvider()` mirror the Swagger getters. | The OpenAPI 
3.1 document is generated by transforming the Swagger 2.0 emission to OpenAPI 
3.1 JSON, so every Swagger-aware annotation (`@Schema`, `@Content`, 
`@StatusCode`, etc.) round-trips with no source changes. |
-
-Reference: see the per-module section in the 9.5 release notes (`### 
juneau-rest-server` → `OpenAPI 3.1 Emission + API-docs Mixin Pack (TODO-63 + 
TODO-74)`).
-
-<!-- Migration guide complete for the 9.1 → 9.5 jump. Add new entries here as 
further 9.5.x
-or 9.6 breaking changes land. -->
diff --git a/sidebars.ts b/sidebars.ts
index 13bd1039d4..6c4b8816e0 100644
--- a/sidebars.ts
+++ b/sidebars.ts
@@ -2148,21 +2148,21 @@ const sidebars: SidebarsConfig = {
                                                },
                                        ],
                                },
+               {
+                       type: 'category',
+                       label: '23. V10.0 Migration Guide',
+                       collapsed: true,
+                       items: [
                                {
-                                       type: 'category',
-                                       label: '23. V9.5 Migration Guide',
-                                       collapsed: true,
-                                       items: [
-                                               {
-                                                       type: 'doc',
-                                                       id: 
'topics/23.01.V9.5-migration-guide',
-                                                       label: '23.1. V9.5 
Migration Guide',
-                                               },
-                                       ],
+                                       type: 'doc',
+                                       id: 
'topics/24.01.V10.0-migration-guide',
+                                       label: '23.1. V10.0 Migration Guide',
                                },
                        ],
                },
-               // Developer Info section
+               ],
+       },
+       // Developer Info section
                {
                        type: 'category',
                        label: 'Developer Info',


Reply via email to