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
commit 0b47f0358c603bd7f0db8cb3ee2d7261b95818c0 Author: James Bognar <[email protected]> AuthorDate: Fri May 8 15:21:10 2026 -0400 docs(todo): TODO-15 — record batches 8-12 progress Co-authored-by: Cursor <[email protected]> --- todo/TODO-15-replace-basicbeanstore-with-v2.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/todo/TODO-15-replace-basicbeanstore-with-v2.md b/todo/TODO-15-replace-basicbeanstore-with-v2.md index c58b0202a7..337f1095c9 100644 --- a/todo/TODO-15-replace-basicbeanstore-with-v2.md +++ b/todo/TODO-15-replace-basicbeanstore-with-v2.md @@ -18,6 +18,11 @@ Eliminate the legacy injection stack in `org.apache.juneau.cp` (`BasicBeanStore` - ~~Phase 3 batch-5: flip framework-default ctors + `init()` template methods to `BeanStore`; widen `BeanBuilder<T>` to `BeanStore`; unlock `RestContext.java:1199`~~ — **DONE (2026-05-08).** Constructor signatures and `init(...)` template method parameters of all framework defaults (`CallLogger`, `DebugEnablement`, `BasicCallLogger`, `BasicDebugEnablement`, `BasicTestCallLogger`, `BasicTestCaptureCallLogger`, `BasicDisabledCallLogger`, `BasicStaticFiles`, `BasicSwaggerProvider`) flipped [...] - ~~Phase 3 batch-6: drop `@Rest(beanStore=X.class)` annotation, migrate Spring integration to v2, lock in `@RestInject > Spring > defaults` precedence~~ — **DONE (2026-05-08).** `SpringRestServlet.createBeanStore()` now returns `WritableBeanStore` and instantiates `SpringBeanStore2`. `RestContext.createBeanStore()` simplified to `new BasicBeanStore2(parentBs)` with optional `@RestInject WritableBeanStore` override (drops legacy `BasicBeanStore.create().overridingParent(...).build()` cha [...] - ~~Phase 3 batch-7: port `BasicBeanStore.INSTANCE` to v2 + migrate consumers~~ — **DONE (2026-05-08).** Added `BasicBeanStore2.INSTANCE` static field (typed as the concrete class for compatibility with `WritableBeanStore`-typed Builder ctors; documented as "treat as read-only"). Migrated 13 consumer references from `BasicBeanStore.INSTANCE` to `BasicBeanStore2.INSTANCE`: `BasicTestCaptureCallLogger`, `BasicCallLogger`, `CallLogger.DEFAULT_RULE`, `ThrownStore.create()` + parent-less ctor [...] +- ~~Phase 3 batch-8: retire legacy `SpringBeanStore`~~ — **DONE (2026-05-08).** Deleted legacy `SpringBeanStore` and its test after `SpringBeanStore2` (v2) coverage was confirmed complete. Javadoc/`@see` references updated repo-wide. +- ~~Phase 3 batch-9: marshall internal `BeanCreator` → `BeanInstantiator` migration~~ — **DONE (2026-05-08).** Migrated 8 marshall call sites: `BeanContext.java:3743` (ObjectSwap subtype), `BeanMeta.java:976` (BeanFactory), `BeanPropertyMeta.java:171/187` (ObjectSwap), `ClassMeta.java:1419` (ObjectSwap), `EncoderSet.java:291` (Encoder), `HtmlBeanPropertyMeta.java` (HtmlRender, abstract type — relies on the new abstract-class fallback fix), `ParserSession.java:326` / `SerializerSession.ja [...] +- ~~Phase 3 batch-10: cascade list helpers `BeanCreator` → `BeanInstantiator`~~ — **DONE (2026-05-08).** Migrated `RestConverterList`, `RestGuardList`, `RestMatcherList`, `ResponseProcessorList`. Per-entry storage retyped to `BeanInstantiator<T>`; `type(v)` -> `beanSubType(v)`; `impl(v)` -> `implementation(v)`; `BeanCreator::run` -> `BeanInstantiator::run` in stream pipelines. The cascade Builders still extend the legacy `BeanBuilder<T>` (its `beanStore()` already returns the v2 `BeanSto [...] +- ~~Phase 3 batch-11: rest-common / rest-client http-part creators~~ — **DONE (2026-05-08).** Migrated `RequestBeanMeta` (Builder fields), `RequestBeanPropertyMeta` (per-property override), `ResponseBeanPropertyMeta` (added null-guard on `schema.getSerializer()`/`getParser()` since v2 `beanSubType(null)` throws), `RestClient.getPartParser/getPartSerializer(Class)` (simple per-class instantiation), `RemoteOperationArg` (both ctors). `BeanCreator.execute()` calls rewritten as `asOptional() [...] +- ~~Phase 3 batch-12: `RestOpContext.createPartSerializer` + `RestContext` child resource~~ — **DONE (2026-05-08).** `RestOpContext.createPartSerializer(Class<? extends HttpPartSerializer>, HttpPartSerializer)` migrated with null short-circuit (legacy `.type(null)` was tolerant, v2 throws); `cp.*` import dropped. `RestContext.java:1131` (child-resource path) `BeanCreator.of(rc2, bs).run()` -> `BeanInstantiator.of(rc2, bs).run()`. **Attempted + reverted:** `RestContext.findRestOperationAr [...] ### Deeper blocker discovered (2026-05-08, batch 4)
