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

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


The following commit(s) were added to refs/heads/master by this push:
     new 89e593d875 Archive TODO-17 migration guide audit completion
89e593d875 is described below

commit 89e593d875e54f8917156c7f698935812874aacf
Author: James Bognar <[email protected]>
AuthorDate: Fri May 22 14:09:05 2026 -0400

    Archive TODO-17 migration guide audit completion
---
 ...INISHED-17-9.2.x-9.5.0-migration-guide-audit.md | 193 +++++++++++++++++++++
 todo/TODO.md                                       |   8 +-
 2 files changed, 199 insertions(+), 2 deletions(-)

diff --git a/todo/FINISHED-17-9.2.x-9.5.0-migration-guide-audit.md 
b/todo/FINISHED-17-9.2.x-9.5.0-migration-guide-audit.md
new file mode 100644
index 0000000000..c5f9e77096
--- /dev/null
+++ b/todo/FINISHED-17-9.2.x-9.5.0-migration-guide-audit.md
@@ -0,0 +1,193 @@
+# FINISHED-17: 9.2.x → 9.5.0 Migration Guide Audit
+
+## Scope
+
+Audited every breaking change between Apache Juneau 9.1.0 (Jakarta EE jump) 
and 9.5.0
+to ensure the v9.5 Migration Guide
+(`juneau-docs/pages/topics/23.01.V9.5-migration-guide.md`) contains an 
actionable
+Old → New row for each end-user-visible change. Coverage axes: removed APIs, 
renamed
+public types/members, changed default behaviors, annotation-attribute semantics
+changes.
+
+## Sources read
+
+- `juneau-docs/pages/topics/23.01.V9.5-migration-guide.md` — existing baseline.
+- `juneau-docs/pages/release-notes/9.1.0.md` — start point (Jakarta EE 
migration).
+- `juneau-docs/pages/release-notes/9.2.0.md` — covered multi-key cache rename,
+  `juneau-all` → `juneau-shaded-all`, `@Schema` Draft 2020-12.
+- `juneau-docs/pages/release-notes/9.5.0.md` — the bulk of the audit (read in
+  chunks; ~200K characters).
+- `git log juneau-9.1.0..HEAD --no-merges --first-parent --pretty=format:'%h 
%s'`
+  in `/Users/james.bognar/git/apache/juneau`, filtered for
+  `BREAKING|remove|delete|rename|move|feat` subjects.
+- Targeted reads of `todo/FINISHED-*.md` archives for context:
+  TODO-4, TODO-10, TODO-13, TODO-21, TODO-22, TODO-26, TODO-29, TODO-34, 
TODO-49,
+  TODO-50, TODO-51, TODO-52, TODO-54, TODO-57.
+
+No 9.2.x sibling release-notes files exist (the next file after `9.2.0.md` is
+`9.5.0.md`), so the audit window is effectively `9.1.0 → 9.2.0 → 9.5.0`.
+
+## Existing-coverage baseline (before this run)
+
+The guide already documented (15 H2 sections):
+
+- REST builder + injection removals (initial unlabeled table).
+- SVL + runtime input types moved to `juneau-commons` (TODO-14).
+- `MarshalledMap` / `MarshalledList` + `Json5Map` / `Json5List` (TODO-34).
+- Bean → Marshalled annotation/engine renames.
+- Bean-modeling layer split (package + type/method renames).
+- JSR-330 alignment + Spring-lite (TODO-24).
+- Microservice + Jetty refactor (TODO-36).
+- REST client + HTTP stack promotion (TODO-38).
+- `juneau-rest-common` module split (TODO-42).
+- `juneau-rest-server` decoupled from HC 4.5 (TODO-40).
+- Format-control round-trip hardening (TODO-57): `TemporalAccessor` widening,
+  Parquet/RdfThrift/RdfProto byte[] wire-shape change, `Float` → `Double`.
+
+## New rows added (16 new H2 sections + 2 H3 sub-sections inside the existing
+   Bean → Marshalled section; 74 new Old → New rows total)
+
+### Format-control program (4 sections — fills gaps the existing
+TODO-57 section did not cover)
+
+- `## Format-Control: Duration / Period Defaults (TODO-4)` — 3 rows.
+  Default `Duration` flips to `ISO_8601_WITH_DAYS`; new `DurationFormat` /
+  `PeriodFormat` enums; binary serializers can emit native numeric wire types.
+- `## Format-Control: Calendar / Date / Temporal / TimeZone / Locale Swap
+  Deletions (TODO-51)` — 6 rows. Removes the `Temporal*Swap` family +
+  `LocaleSwap` / `TimeZoneSwap` / `ZoneIdSwap` direct usage; introduces
+  `CalendarFormat`, `DateFormat`, `TemporalFormat`, `TimeZoneFormat`,
+  `LocaleFormat`.
+- `## Format-Control: Binary + Enum Swap and Builder Deletions (TODO-52)` — 7
+  rows. Removes `ByteArraySwap`, the `OutputStreamSerializer.Builder` /
+  `InputStreamParser.Builder` `binaryFormat(...)` setters, and
+  `useEnumNames(boolean)`. Renames `csv.ByteArrayFormat` to
+  `CsvByteArrayCellFormat`.
+- `## Format-Control: ClassSwap Deletion + Boolean / Float / Currency / Class
+  Settings (TODO-54)` — 3 rows. `ClassSwap` deleted; new `BooleanFormat`,
+  `FloatFormat`, `CurrencyFormat`, `ClassFormat` enums and setters; default
+  `Currency` round-trip support.
+
+### Marshalling defaults / parser behavior
+
+- `## JSON Strict-Mode Separation` — 6 rows. `JsonParser` / `JsonSerializer`
+  enforce strict RFC 8259; JSON5 input/output requires `Json5Parser` /
+  `Json5Serializer`; `JsonSerializer.json5()` builder method removed;
+  `JsonParser.Strict` removed.
+- `## Sorted Bean Properties by Default` — 7 rows. `sortProperties()` API gone
+  across the builder hierarchy (~55 overrides); `@Bean(sort=true)` →
+  `@Bean(unsorted=true)` with inverted semantics; default is now sorted.
+- `## Native Iterator / Iterable / Stream / Enumeration Serialization` — 5 
rows.
+  `IteratorSwap` / `EnumerationSwap` removed; lazy native serialization;
+  `Supplier<T>` transparently unwrapped; new `ClassMeta` predicates and
+  `Category` enum values.
+
+### REST / HTTP layer
+
+- `## HTTP Annotation Moves and Attribute Removals` — 6 rows. HTTP parameter
+  annotations moved from `juneau-marshall` into `juneau-rest-common` (package
+  unchanged); `serializer()` / `parser()` attributes replaced by
+  `@HttpPartMarshalling`; `@Repeatable` / `on()` / `onClass()` /
+  `@ContextApply` gone; 10 `XAnnotation` companions deleted; NG snapshot
+  annotations deleted.
+- `## Request Attributes vs Session Properties Separation` — 3 rows.
+  `defaultRequestAttributes` no longer auto-merge into session properties; new
+  `RestRequest.setSerializerSessionProperty(...)` / 
`setParserSessionProperty(...)`
+  API.
+- `## REST Session-Option Allowlist Refactor` — 8 rows. `@NoInherit` removed in
+  favor of `noInherit` attribute on `@Rest` / `@RestOp` siblings; legacy
+  programmatic builder allowlist setters gone; helper-class renames
+  (`RestSessionOptionWire` → `RestSharedConstants`).
+
+### Bean-store / DI consolidation
+
+- `## Legacy cp Bean-Store Classes Removed (TODO-26)` — 9 rows. 
`BasicBeanStore`,
+  `BeanCreator`, `BeanBuilder`, `BeanCreateMethodFinder` removed from
+  `org.apache.juneau.cp`; canonical replacements live in
+  `org.apache.juneau.commons.inject` (`BeanInstantiator` is the new name for
+  `BeanCreator`). `CreatableBeanStore` removed.
+- `## Bean-Store Convenience Renames` — 3 rows. `BasicBeanStore2` /
+  `SpringBeanStore2` promoted to canonical names; `WritableBeanStore` narrowed
+  to `BeanStore` on several builders (source-compatible).
+
+### Misc renames + cleanups
+
+- `## Swagger v2: ParamInfo → ParameterInfo` — 1 row.
+- `## Multi-Key Cache and ConcurrentHashMapXKey Refactor (9.2.0)` — 6 rows.
+  `Concurrent[2-5]KeyHashMap` → `ConcurrentHashMap[2-5]Key`; constructors no
+  longer carry caching state; new `CacheX` family for caching; null keys throw.
+- `## Module Rename: juneau-all → juneau-shaded-all (9.2.0)` — 1 row.
+- `## Miscellaneous Utility Removals` — 5 rows. `TupleXFunction` → `FunctionX`;
+  `Console.format` → `Utils.f`; `BasicRuntimeException` retired;
+  `ArrayUtils` deprecated in favor of `CollectionUtils`; `ResettableSupplier`
+  → `OptionalSupplier`.
+- `## BCT: AssertionArgs Removed` — 1 row. Replaced by thread-local converter
+  + leading `Supplier<String>` message parameter on assertion methods.
+
+### Bean → Marshalled section additions (2 new H3 sub-sections inside
+existing H2)
+
+- `### Removed @MarshalledProp(properties) Attribute` — 3 rows. Plus removed
+  internal `BeanMetaFiltered`, `BeanPropertyMeta.getProperties()`,
+  `applyChildPropertiesFilter(...)`.
+- `### @Beanp("*") on Non-Map Fields` — 1 row. `*` is now a no-op on non-Map
+  fields and the namer-derived field name wins.
+
+## Intentionally skipped
+
+- **TODO-13 (system-property → `Settings` conversion)**: internal refactor;
+  consumer-visible property names + behavior preserved.
+- **TODO-22 (SVL DotenvVar / EnvFileVar additions)**: additive only.
+- **TODO-49 (SchemaUtils empty-collection returns)**: per the FINISHED archive,
+  caller analysis confirms no external code observes the change.
+- **TODO-9 (MarkdownParserSession map-branch outer pass-through)**: behavior-
+  preserving internal refactor.
+- **TODO-56 (dispatch-chain reorder)**: behavior-preserving internal refactor.
+- **TODO-10 (HTTP annotations moved to rest-common)**: only the *Maven
+  coordinate* shifted — package names are unchanged. Covered briefly in the
+  new "HTTP Annotation Moves and Attribute Removals" section as a one-line
+  note (no separate row per annotation since import statements do not need
+  updating).
+- 9.5.x feature additions that are purely additive (Hjson / TOML / JSONL / SSE
+  / BSON / CBOR / Protobuf Text / JCS marshallers, dynamic child REST
+  resources, YAML format strategy, AI-friendly summary field, schema-
+  validation mode, dotenv / env-file SVL variables, etc.): no migration step
+  needed.
+
+## TODO file state
+
+- `[TODO-17]` removed from 
`/Users/james.bognar/git/apache/juneau/todo/TODO.md`.
+- Archive file created: this file
+  (`todo/FINISHED-17-9.2.x-9.5.0-migration-guide-audit.md`) — captures the
+  audit narrative since it was a multi-day cross-repo sweep and the
+  per-section breakdown is useful institutional memory for the 9.6 audit.
+
+## Working tree state
+
+- `juneau` repo: `M todo/TODO.md`, `?? 
todo/FINISHED-17-9.2.x-9.5.0-migration-guide-audit.md`.
+  **No Java files modified.**
+- `juneau-docs` repo: `M pages/topics/23.01.V9.5-migration-guide.md` only.
+  +219 / −2 lines, 74 new Old → New rows across 16 new H2 sections and 2 new
+  H3 sub-sections.
+
+Neither repo has been committed or pushed.
+
+## Anything unexpected
+
+- **No 9.2.x point-release notes exist** — the next file after `9.2.0.md` is
+  `9.5.0.md`. So "9.2.x changes" effectively means "everything between 9.2.0
+  and 9.5.0 GA," all rolled into the `9.5.0.md` release notes. The audit
+  scope was widened accordingly.
+- **All breaking changes I identified are already documented in the release
+  notes** — the migration guide was simply missing the actionable Old → New
+  rows. No new release-notes entries were needed.
+- The existing migration-guide rows for the format-control program (TODO-57)
+  cover only the *round-trip hardening* fixes (`TemporalAccessor` widening,
+  Parquet / RDF byte[] wire-shape change, `Float` → `Double`). The four
+  upstream format-control TODOs (TODO-4 / 51 / 52 / 54) that introduced the
+  new enums and deleted the swap families were missing from the guide entirely
+  — they account for ~20 of the 74 new rows.
+- The `JsonParser.Strict` removal + JSON5 separation is a *hard runtime
+  break* for any caller passing single-quoted / unquoted-key JSON to
+  `JsonParser.DEFAULT` — flagged prominently in the new "JSON Strict-Mode
+  Separation" section.
diff --git a/todo/TODO.md b/todo/TODO.md
index 4177ca3170..aa19c00ae2 100644
--- a/todo/TODO.md
+++ b/todo/TODO.md
@@ -1,5 +1,9 @@
 # TODO
 
-- [TODO-17] Audit 9.2.x changes (juneau-docs release notes 9.2.0 / 9.5.0 + git 
history since 9.1.0) for breaking changes and populate the v9.5 Migration Guide 
at juneau-docs/pages/topics/23.01.V9.5-migration-guide.md with Old→New rows for 
each. Focus on removed APIs, renamed annotations/classes/methods, changed 
default behaviors, and any annotation-attribute semantics changes.
-
 - [TODO-18] Investigate possible useful features to add to juneau-rest-server.
+
+- [TODO-20] - Rest debug rethink.
+
+- [TODO-35] - Beanstore test injection.
+
+- [TODO-37] - Agent instruction consolidation.
\ No newline at end of file

Reply via email to