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 d996764044 Add 10.0.0 release note for BasicResource CRTP conversion 
(TODO-274)
d996764044 is described below

commit d996764044746fe5e69c47dd40a566b68f6620d8
Author: James Bognar <[email protected]>
AuthorDate: Tue Jul 21 10:37:09 2026 -0400

    Add 10.0.0 release note for BasicResource CRTP conversion (TODO-274)
    
    Co-authored-by: Cursor <[email protected]>
---
 pages/release-notes/10.0.0.md | 1 +
 1 file changed, 1 insertion(+)

diff --git a/pages/release-notes/10.0.0.md b/pages/release-notes/10.0.0.md
index 7211ba67b5..61ce798df7 100644
--- a/pages/release-notes/10.0.0.md
+++ b/pages/release-notes/10.0.0.md
@@ -765,6 +765,7 @@ _TBD — to be filled in as development continues._
   - **`ControlledArrayList` is removed.** `HeaderList` / `PartList` are 
reparented directly onto `ArrayList`, with a nested `Unmodifiable` subclass 
overriding the full collection-mutator set 
(`add`/`remove`/`set`/`clear`/`addAll`/… plus iterator mutation) to throw. List 
`equals()`/`hashCode()` are now content-only, ignoring mutability.
   - **Two bug fixes bundled with this migration:** the `Thrown` response 
header now reports the *logical* (declared) exception type rather than a frozen 
`INSTANCE` snapshot's synthetic `$Unmodifiable` subclass name, so client-side 
exception reconstruction from a frozen shared instance (e.g. 
`BadRequest.INSTANCE`) no longer breaks; and `BasicStatusLine`'s copy 
constructor now faithfully copies `reasonPhraseCatalog` (previously dropped on 
copy).
   - **Migration:** replace every `x.setUnmodifiable()` call with `x = 
x.unmodifiable()` (or use the returned snapshot directly), and audit any direct 
`new BasicHttpResponse(...)` / `new BasicHttpEntity(...)` construction to 
instantiate a concrete leaf instead.
+  - **`BasicResource` becomes an abstract self-typed (CRTP) root (TODO-274).** 
`BasicResource` is now `BasicResource<SELF extends BasicResource<SELF>>` 
(mirroring `BasicHttpEntity`/`BasicHttpResponse`) and can no longer be 
instantiated directly — use a concrete leaf (`StreamResource`, 
`ByteArrayResource`, `StringResource`, `FileResource`, `ReaderResource`). The 
breaking surface is narrow: `.as(BasicResource.class)` and `@Remote` methods 
declared to return `BasicResource`/`HttpResource` s [...]
 
 _Other entries TBD — to be filled in before release. See also the major 
version bump note above._
 

Reply via email to