)]}'
{
  "log": [
    {
      "commit": "bd1889c1134ac1527956bbbd14702ed61726aa3b",
      "tree": "8cc356f902c4a47d256ee038133f6767104808c4",
      "parents": [
        "595f2273e69b50e511b341c99da68374854b161f"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Tue May 12 10:56:10 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Tue May 12 10:56:10 2026 -0400"
      },
      "message": "docs: simplify annotation links in marshall and rest Javadocs\n"
    },
    {
      "commit": "595f2273e69b50e511b341c99da68374854b161f",
      "tree": "b6595d3fdc452e4b41a5111ab1c7c7288da56414",
      "parents": [
        "6dc9a18ab5eca9c40a2951d9f7ec98c9cde98844"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Tue May 12 10:20:26 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Tue May 12 10:20:26 2026 -0400"
      },
      "message": "refactor: move MarshallingInterceptor to commons.bean.BeanInterceptor (Phase 5a of bean-layer split)\n\nThe bean-interceptor type is a bean-modeling concern (intercepts bean\ngetter/setter calls, no marshalling-specific dependencies), so it belongs\nin the commons.bean package alongside @BeanType, @BeanProp, @BeanIgnore,\n@BeanConfig, BasicPropertyNamer, etc.\n\nReverts the 9.5 BeanInterceptor -\u003e MarshallingInterceptor rename and\nmoves the class from juneau-marshall (org.apache.juneau.swap) into\njuneau-commons (org.apache.juneau.commons.bean) in one step. ~50 files\nupdated to reference the new location; @Marshalled.interceptor() now\ntakes Class\u003c? extends BeanInterceptor\u003c?\u003e\u003e.\n\nThe remainder of Phase 5 -- moving BeanMap, BeanMeta, BeanPropertyMeta,\nBeanMapEntry, BeanPropertyValue, BeanPropertyConsumer,\nBeanProxyInvocationHandler, and BeanMetaFiltered to commons.bean --\nrequires untangling ClassMeta / MarshallingContext / ObjectSwap /\nBeanRegistry dependencies (~140 cross-references across ~4170 lines) and\nis tracked in TODO-5 with a concrete strategy.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "6dc9a18ab5eca9c40a2951d9f7ec98c9cde98844",
      "tree": "07fc8347409b3660ad3ee7e4cc34335b6061467c",
      "parents": [
        "fc54e2a5e5cb877160d5b16134a977ede3b2949b"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Tue May 12 10:05:47 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Tue May 12 10:05:47 2026 -0400"
      },
      "message": "refactor: extract @BeanIgnore from @MarshalledIgnore for bean-detection (Phase 4 of bean-layer split)\n\nSplit @MarshalledIgnore\u0027s mixed semantics into two annotations with cleaner responsibilities:\n\n- @BeanIgnore (new, org.apache.juneau.commons.bean): TYPE/FIELD/METHOD/CONSTRUCTOR.\n  Bean-modeling concern. On TYPE: \"not a bean — marshaller falls through to swaps,\n  @Marshalled(as\u003dSTRING), etc.\". On FIELD/METHOD/CONSTRUCTOR: excludes member from\n  bean property/constructor detection. Lives in juneau-commons so the bean layer\n  doesn\u0027t depend on marshalling.\n\n- @MarshalledIgnore (existing, juneau-marshall): trimmed to @Target({TYPE}) only.\n  Marshalling-layer concern: \"skip this type entirely — serializers output null,\n  parsers return null\". Removed the now-obsolete ignoreAccessors attribute.\n\nMigrated runtime sites in BeanMeta, AutoObjectSwap, AutoMapSwap, AutoListSwap,\nAutoNumberSwap, and SurrogateSwap to check @BeanIgnore for member/class-level\nbean detection. The TYPE-level \"null swap\" path in ClassMeta still checks\n@MarshalledIgnore.\n\nMigrated callsites: member-level @MarshalledIgnore usages (fields/methods/ctors)\nmoved to @BeanIgnore; class-level usages on BasicHttpEntity, BasicResource,\nMediaType, MediaRanges, StringRange, StringRanges, and various test classes\nwhere the intent was \"not a bean (fall through to toString)\" moved to\n@BeanIgnore. Test class-level usages where the intent was \"skip during\nmarshalling, emit null\" remain on @MarshalledIgnore.\n\nAdded new tests: BeanIgnore_Test and BeanIgnoreAnnotation_Test. Trimmed\nMarshalledIgnore_Test to TYPE-level skip behavior only.\n\nDeleted obsolete shadow annotation org.apache.juneau.commons.annotation.MarshalledIgnore.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "fc54e2a5e5cb877160d5b16134a977ede3b2949b",
      "tree": "8592fb213142bc9aef1bae66a3b1e1b551662e1b",
      "parents": [
        "0cdbdd819cebac79b5828787184f35961fcf639d"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Tue May 12 09:35:18 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Tue May 12 09:35:18 2026 -0400"
      },
      "message": "refactor: extract @BeanConfig from @MarshalledConfig (Phase 3 of bean-layer split)\n\nSplits the bean-detection / introspection attributes off of @MarshalledConfig\ninto a new @BeanConfig annotation that lives in juneau-commons (commons.bean),\nleaving @MarshalledConfig with only marshalling-specific knobs (typePropertyName,\ndictionary[/_replace], swaps[/_replace], locale, mediaType, timeZone, debug).\n\n@BeanConfig in commons.bean is a plain annotation without @ContextApply because\ncommons cannot reference marshall-layer types. Context.CONTEXT_APPLY_FILTER and\nAnnotationWorkList.applyAnnotation now special-case @BeanConfig and route it to\na dedicated BeanConfigAnnotation.Applier in juneau-marshall, which knows how to\npush the attributes into MarshallingContext.Builder.\n\nCallsite migrations:\n- BasicBeans_Test: @MarshalledConfig(disableIgnoreTransientFields) -\u003e @BeanConfig\n- DefaultConfig (juneau-rest-server): @MarshalledConfig(ignoreUnknownBeanProperties,\n  ignoreUnknownEnumValues) -\u003e @BeanConfig\n- MarshalledConfig_Swaps_Test, BasicRestOperations: unchanged (swaps-only).\n\nTest files:\n- MarshalledConfigAnnotation_Test.java trimmed to cover only marshalling attrs.\n- New BeanConfigAnnotation_Test.java added covering bean-detection attrs.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "0cdbdd819cebac79b5828787184f35961fcf639d",
      "tree": "96b798257e04ce476be639349cd1b8d12627ec56",
      "parents": [
        "b66b76b180c206a6f2f51e681bf09b14b3bcae78"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Tue May 12 09:07:09 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Tue May 12 09:07:09 2026 -0400"
      },
      "message": "refactor: extract @BeanProp from @MarshalledProp; merge @MarshalledCtor into @BeanCtor (Phase 2 of bean-layer split)\n\nSplit per-property and per-constructor annotations into bean-modeling vs\nmarshalling-only concerns:\n\n@MarshalledProp:\n- Kept marshalling attrs (description, dictionary, format, properties) on\n  @MarshalledProp.\n- Moved bean-modeling attrs (name, value, ro, wo, type, params, elementType,\n  factory) to new @BeanProp in juneau-commons/org.apache.juneau.commons.bean.\n\n@MarshalledCtor:\n- All attrs were bean-modeling, so the annotation was removed entirely and\n  replaced by the new @BeanCtor in commons.bean (description, properties).\n- MarshalledCtorAnnotation/Apply/ApplyAnnotation were deleted.\n\nNew files:\n- commons.bean.BeanProp + BeanPropAnnotation (metadata-only processor).\n- commons.bean.BeanCtor + BeanCtorAnnotation.\n- annotation.BeanPropApply + BeanPropApplyAnnotation.\n- annotation.BeanCtorApply + BeanCtorApplyAnnotation.\n\nUpdated runtime sites (BeanMeta, BeanPropertyMeta, MarshallingContext,\nMarshalledFilter, Context, MarshallingContextable, UriContext, BeanMap)\nto read bean-modeling attrs from @BeanProp/@BeanCtor.\n\nMigrated all callsites across juneau-bean, juneau-utest, and\njuneau-examples; split @MarshalledProp usages that mixed both groups into\nseparate @BeanProp + @MarshalledProp annotations.\n\nRenamed/split test files:\n- MarshalledCtorAnnotation_Test -\u003e BeanCtorAnnotation_Test.\n- MarshalledPropAnnotation_Test split into BeanPropAnnotation_Test (bean-\n  modeling) + slimmer MarshalledPropAnnotation_Test (marshalling-only).\n- MarshalledProp_StarPlainField_Test -\u003e BeanProp_StarPlainField_Test.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "b66b76b180c206a6f2f51e681bf09b14b3bcae78",
      "tree": "da637bf3bf423d5a5893c4921ee997bde6a18f87",
      "parents": [
        "fe62d501f8b7ef927641a9432936876786094eed"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Tue May 12 08:35:14 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Tue May 12 08:35:14 2026 -0400"
      },
      "message": "refactor: extract @BeanType from @Marshalled and create commons.bean package (Phase 1 of bean-layer split)\n\nSplits the @Marshalled annotation into two annotations:\n- @Marshalled (juneau-marshall) - keeps marshalling-only attrs\n  (as, description, dictionary, example, implClass, interceptor, typeName, typePropertyName)\n- @BeanType (new, juneau-commons commons.bean package) - bean-modeling attrs\n  (description, excludeProperties/xp, factory, findFluentSetters, interfaceClass,\n   p/properties, propertyNamer, readOnlyProperties/ro, stopClass, unsorted,\n   writeOnlyProperties/wo)\n\nAlso moves PropertyNamer + impls (PropertyNamerDLC, PropertyNamerULC,\nPropertyNamerDUCS, BasicPropertyNamer) from juneau-marshall to commons.bean.\n\nAdds @BeanTypeApply / BeanTypeApplyAnnotation to mirror @MarshalledApply.\nAdds BeanTypeAnnotation as a thin metadata-only builder in commons.bean.\n@MarshalledConfig now applies bean-modeling overrides via BeanTypeApply.\n\nPhase 1 of the 6-phase bean-layer split. Subsequent phases will split\n@MarshalledProp/@MarshalledCtor/@MarshalledConfig/@MarshalledIgnore and\nmove runtime types (BeanMap/BeanMeta/etc.) into commons.bean.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "fe62d501f8b7ef927641a9432936876786094eed",
      "tree": "e40cb427ccab858b135259df97544b2d1364ba9b",
      "parents": [
        "75aa50426d0daf234d760acd38cd5e13fec77995"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 18:00:16 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 18:00:16 2026 -0400"
      },
      "message": "chore: remove completed TODO-21 from TODO.md\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "75aa50426d0daf234d760acd38cd5e13fec77995",
      "tree": "39875ab79e48e784f998e1eb10cf26ef4e5c2ea3",
      "parents": [
        "8492c6508169a72197af066db0a4cdbf13365b48"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 17:50:37 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 17:50:37 2026 -0400"
      },
      "message": "refactor(inject): introduce commons.inject.@Bean as successor to @RestInject; delete @RestInject\n\n- Created org.apache.juneau.commons.inject.Bean annotation (successor to RestInject)\n- Created org.apache.juneau.commons.inject.BeanAnnotation annotation processor\n- Migrated all @RestInject callsites across rest-server, rest-springboot, and tests to @Bean\n- Renamed RestContext.isRestInjectMethod() to isBeanMethod() for consistency\n- Deleted RestInject.java and RestInjectAnnotation.java (clean break, no deprecated alias)\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "8492c6508169a72197af066db0a4cdbf13365b48",
      "tree": "d3e4be9322cd10fa8d39545cade4eaa3271bda27",
      "parents": [
        "05d2cc86da8a3e1b0ecc654e8aeac1b913e0563e"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 17:38:15 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 17:38:15 2026 -0400"
      },
      "message": "refactor(marshall): rename BeanContext/BeanSession engine types to MarshallingContext/MarshallingSession family\n\n- BeanContext          → MarshallingContext\n- BeanContextable      → MarshallingContextable\n- BeanSession          → MarshallingSession\n- BeanTraverseContext  → MarshallingTraverseContext\n- BeanTraverseSession  → MarshallingTraverseSession\n- BeanRecursionException → MarshallingRecursionException\n- BeanInterceptor      → MarshallingInterceptor\n- BeanStringSwap       → MarshallingStringSwap\n- BeanContextConverter → MarshallingContextConverter\n- BeanDefMapper        → MarshallingDefMapper\n\nDependent method renames: getBeanContext → getMarshallingContext,\ngetBeanSession → getMarshallingSession, createBeanSession → createMarshallingSession,\nbeanContext → marshallingContext, beanSession → marshallingSession.\n\nTest files renamed: BeanContext_Test → MarshallingContext_Test,\nRestClient_Config_BeanContext_Test → RestClient_Config_MarshallingContext_Test.\n\n430 source/resource files updated across the repo.\nAll tests pass.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "05d2cc86da8a3e1b0ecc654e8aeac1b913e0563e",
      "tree": "64989d91b0becc887c705a22a6013064f475cdcb",
      "parents": [
        "daad68faf1420f70b32bcd27c6bc2a2330f5cf25"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 17:33:52 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 17:33:52 2026 -0400"
      },
      "message": "refactor(marshall): rename @BeanConfig/@BeanConfigAnnotation to @MarshalledConfig family\n\n- Rename BeanConfig.java → MarshalledConfig.java (annotation)\n- Rename BeanConfigAnnotation.java → MarshalledConfigAnnotation.java (applier)\n- Update all @ContextApply references, import statements, Javadoc @link tags,\n  and annotation usages across BeanContext, BeanContextable, Context,\n  BeanSession, AnnotationApplier, ContextSession, RestOp/Get/Post/Put/Patch/Options,\n  BasicJson/Json5/JsonHtml/OpenApi/Universal/DefaultConfig, BasicRestOperations,\n  and all test files\n- Rename BeanConfig_Test.java → MarshalledConfig_Test.java\n- Rename BeanConfigAnnotation_Test.java → MarshalledConfigAnnotation_Test.java\n- Rename BeanConfig_Swaps_Test.java → MarshalledConfig_Swaps_Test.java\n- Rename RestOp_BeanConfig_Test.java → RestOp_MarshalledConfig_Test.java\n- Update class/method names inside renamed test files\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "daad68faf1420f70b32bcd27c6bc2a2330f5cf25",
      "tree": "c31ecd8d4bdc98fd3bf83b12ad0323b2f124a3f7",
      "parents": [
        "71c08ff1f9b7bacad1287cbc8bed7ba25f9f5f18"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 17:28:15 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 17:28:15 2026 -0400"
      },
      "message": "refactor(marshall): rename Beanp/Beanc/BeanIgnore to MarshalledProp/MarshalledCtor/MarshalledIgnore; add @Marshalled(as\u003dSTRING) strategy\n\nPart A — Mechanical renames (no semantic change):\n- @Beanp → @MarshalledProp, BeanpAnnotation → MarshalledPropAnnotation, BeanpApply → MarshalledPropApply, BeanpApplyAnnotation → MarshalledPropApplyAnnotation\n- @Beanc → @MarshalledCtor, BeancAnnotation → MarshalledCtorAnnotation, BeancApply → MarshalledCtorApply, BeancApplyAnnotation → MarshalledCtorApplyAnnotation\n- @BeanIgnore → @MarshalledIgnore, BeanIgnoreAnnotation → MarshalledIgnoreAnnotation, BeanIgnoreApply → MarshalledIgnoreApply, BeanIgnoreApplyAnnotation → MarshalledIgnoreApplyAnnotation\n- git mv on all source and test files; updated all imports, Javadoc @link, string literals, and test class names\n\nPart B — Add as attribute + revised @MarshalledIgnore TYPE semantics:\n- New enum MarshalledAs { DETECT, STRING }\n- Added as() attribute (default DETECT) to @Marshalled\n- @Marshalled(as\u003dSTRING): serializes via toString(), deserializes via fromString/valueOf/String-constructor (AutoStringSwap)\n- @MarshalledIgnore on TYPE: now skips entirely (serializes as null, parses as null); old \"toString fall-through\" behavior is replaced by @Marshalled(as\u003dSTRING)\n- Updated BasicPart, BasicHeader, EntityTags, BasicHttpResponse, BasicHttpException, BasicNamedAttribute from @MarshalledIgnore to @Marshalled(as\u003dSTRING) since they serialize via toString()\n- Updated ImplicitSwappedObject test POJO to use @Marshalled(as\u003dSTRING) instead of @MarshalledIgnore\n\nAll 49855 tests pass.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "71c08ff1f9b7bacad1287cbc8bed7ba25f9f5f18",
      "tree": "168380e645c7db71bdc997610574179da012fb56",
      "parents": [
        "c24f4004ef374fc54c2a7286a5b0787909d756f2"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 16:55:11 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 16:55:11 2026 -0400"
      },
      "message": "refactor(marshall): merge @Bean/@Marshalled annotation surfaces into unified @Marshalled family\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "c24f4004ef374fc54c2a7286a5b0787909d756f2",
      "tree": "260fd1ea2e9583da4b102509ec0a965946a7974d",
      "parents": [
        "34a2c30e1094851d1b637c6b2837496072223b26"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 15:44:33 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 15:44:33 2026 -0400"
      },
      "message": "test: fill in coverage gaps for inject and builder classes; fix Javadoc links and remove CreatableBeanStore\n"
    },
    {
      "commit": "34a2c30e1094851d1b637c6b2837496072223b26",
      "tree": "51d44a0403cb428ac5b7feefc32928a85cf546d7",
      "parents": [
        "a6c98ef828e30a4be99d637de83fc7e22926e1a3"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 11:56:09 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 11:56:28 2026 -0400"
      },
      "message": "refactor(inject): post-TODO-15 API cleanup and type-correctness pass\n\n- Rename SpringBeanStore2 -\u003e SpringBeanStore (consistent with BasicBeanStore rename)\n- Widen builder beanStore fields/params from WritableBeanStore to BeanStore in\n  EncoderSet, SerializerSet, ParserSet, ResponseProcessorList, RestOpArgList,\n  RestMatcherList, RestGuardList, RestConverterList, RestOperations, RestChildren\n  (these builders only read from the store; callers that pass WritableBeanStore still compile)\n- Add BeanInstantiator convenience statics: createOrNull, optionalOf, createOrDefault\n- Simplify ParserSession/SerializerSession listener init with createOrNull\n- Simplify RemoteOperationArg serializer init with optionalOf\n- Simplify RequestBeanPropertyMeta with createOrDefault; ResponseBeanPropertyMeta\n  with Optional.or() + optionalOf\n- Fix FQN java.util.LinkedHashMap references in VarResolver (java.util.* already imported)\n- Narrow RestContext.createBeanStore/findRestOperationArgs/invokeRestInitMethod params\n  to BeanStore (parentBs/beanStore only used as read-only parent or inject source)\n- Narrow RestOpContext.beanStore() accessor to BeanStore; remove misleading comment\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "a6c98ef828e30a4be99d637de83fc7e22926e1a3",
      "tree": "9fa26f43439db37332d89cb48d8812699b499341",
      "parents": [
        "398edd6f94973967c23f8adcd14878d3ff1d81ec"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 10:46:29 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 11:56:28 2026 -0400"
      },
      "message": "refactor(inject): finish TODO-15 migration and cleanup follow-ups\n\nComplete the BasicBeanStore2-to-BasicBeanStore cutover, remove legacy cp injection classes, and migrate remaining BeanCreator call sites to BeanInstantiator. Also include follow-up Sonar/Javadoc cleanup updates across rest and mcp modules made during final polish.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "398edd6f94973967c23f8adcd14878d3ff1d81ec",
      "tree": "dab961c671fa869c046bd3c7408e381b7fae5d17",
      "parents": [
        "7dca9ddfcdd71c0419b58e8e70ad6db8dbb597ad"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Fri May 08 16:01:38 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 11:56:28 2026 -0400"
      },
      "message": "docs(todo-15): record batch 13/14/15 progress\n\n- batch 13: factoryAbstainOnNull() opt-in flag — findRestOperationArgs migrated\n- batch 14: preferZeroArgConstructor() opt-in flag — Map/Collection containers migrated\n- batch 15: standalone Builder pattern (SwaggerProvider.Builder, DebugEnablement.Builder,\n  ThrownStats.Builder) attempted + reverted — fundamental divergence between legacy\n  BeanCreator.builder(Class, Object) (registers a bean + suppresses factory-method lookup)\n  and v2 BeanInstantiator builder semantics (auto-detect builder type, invoke build()).\n  v2 picks a freshly-constructed Builder via DebugEnablement.create(BeanStore) over the\n  configured one we passed via .addBean(). Tracked under TODO-25 for follow-up.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "7dca9ddfcdd71c0419b58e8e70ad6db8dbb597ad",
      "tree": "43b168076c50b59dac52932005a46777b193b7a6",
      "parents": [
        "b1996be2ff6dec21b39d7ce4dd4aa65d9468c195"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Fri May 08 15:48:05 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 11:56:28 2026 -0400"
      },
      "message": "refactor(inject): TODO-15 phase-3 batch 14 — migrate Map/Collection container creators to BeanInstantiator\n\nBeanInstantiator new opt-in flag: preferZeroArgConstructor().\n\nDefault v2 constructor selection sorts public ctors by parameter count\ndescending, picking the longest resolvable ctor (full-injection-friendly).\nThat breaks for parameterized container types whose copy ctors take a raw\nMap / Collection parameter.  Concrete failure: TreeMap exposes\nTreeMap(Map\u003c? extends K, ? extends V\u003e) — ParameterInfo.canResolve() optimistically\nreturns true because pt.isInjectCollectionType() matches Map.class, but\nParameterInfo.resolveValue() only auto-resolves Map\u003cString, T\u003e (it requires\ntypeArgs[0] \u003d\u003d String.class), so injection throws \"Could not resolve value for\nparameter Map\u003c? extends K, ? extends V\u003e\" at invocation time.  Eight unit\ntests across xml/json/json5/uon/urlencoding/html/BeanMap exercised this.\n\nThe asymmetry between canResolve (overly permissive) and resolveValue (strict)\nis a v2 reflection-layer bug worth fixing on its own, but the immediate need\nhere is a way for container-creating callers to opt out of constructor\ninjection entirely — they want \"fresh empty container of this concrete type\",\nnot \"inject all my dependencies\".\n\nNew flag preserves v2 default for everyone else and gives container callers a\none-line opt-in:\n    .preferZeroArgConstructor()\nWhen set, if beanSubType declares a public no-arg constructor, that ctor is\nused unconditionally; other ctors are ignored.  Matches legacy BeanCreator\nbehavior for the same use case (legacy hasAllParams returned false for raw\nMap / Collection params since the legacy bean store didn\u0027t auto-resolve those\ntypes, so multi-arg container ctors were filtered out and the no-arg ctor won\nby default).\n\nMigrated three call sites:\n- BeanRegistry.addClass() — Collection / Map subtype creation (lines 147 / 155)\n- BeanPropertyMeta.set() — propMap / propList property containers (lines 1106 / 1165)\n\ncp.* import dropped from BeanPropertyMeta (no remaining legacy refs).\n\nBuild clean; full juneau-utest passes (the 8 previously-failing\n*_trimEmptyMaps + BeanMap_Test#a03/a04_collection*Properties tests are green).\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "b1996be2ff6dec21b39d7ce4dd4aa65d9468c195",
      "tree": "8de9bcda709c3a485db366fb0943e4569ed790f6",
      "parents": [
        "0b47f0358c603bd7f0db8cb3ee2d7261b95818c0"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Fri May 08 15:39:21 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 11:56:28 2026 -0400"
      },
      "message": "refactor(inject): TODO-15 phase-3 batch 13 — migrate findRestOperationArgs to BeanInstantiator\n\nBeanInstantiator new opt-in flag: factoryAbstainOnNull().\n\nDefault v2 behavior: when a static factory method matches and is invoked but\nreturns null, BeanInstantiator falls through to constructor lookup as if the\nfactory weren\u0027t there.  That works for \"factory method as alternate\nconstruction path\" callers, but breaks the legacy BeanCreator pattern of using\na null factory return as a deliberate \"this implementation does not handle\nthe input — try the next strategy\" abstain signal.  Classic example: every\nRestOpArg subclass exposes a static create(ParameterInfo) that returns null\nwhen the parameter isn\u0027t annotated with the marker the subclass handles\n(AttributeArg returns null when @Attr is absent, etc.) — falling through to\nAttributeArg\u0027s protected constructor would silently produce a bogus arg.\n\nNew flag preserves v2 default for everyone else and gives callers that need\nlegacy semantics a one-line opt-in:\n    .factoryAbstainOnNull()\nWhen set, run() returns null immediately after invoking a factory method\nwhose return value is null, skipping constructor lookup.\n\nMigrated RestContext.findRestOperationArgs:\n    BeanCreator.of(RestOpArg.class, bs).type(c).run()\n-\u003e\n    BeanInstantiator.of(RestOpArg.class, bs)\n        .beanSubType(c)\n        .factoryMethodNames(\"getInstance\", \"create\")\n        .factoryAbstainOnNull()\n        .run()\nfactoryMethodNames adds \"create\" to the v2 default ({\"getInstance\"}) so\nRestOpArg subclasses\u0027 static create(ParameterInfo) factories are recognized\n(legacy BeanCreator hard-coded \"create\"/\"builder\"/\"getInstance\" as factory\nmethods; v2 reserves \"create\"/\"builder\" for builder-type discovery by default).\n\nBuild clean; juneau-utest passes; jetty-ftest passes (verified that\nAttributeArg / BodyArg / HeaderArg / etc. all resolve correctly again).\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "0b47f0358c603bd7f0db8cb3ee2d7261b95818c0",
      "tree": "384b9f5296b91e4f1114e8c573df1a59e73781a1",
      "parents": [
        "26e54dabe759043e1c9d9d4da0571435745cfcd3"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Fri May 08 15:21:10 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 11:56:28 2026 -0400"
      },
      "message": "docs(todo): TODO-15 — record batches 8-12 progress\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "26e54dabe759043e1c9d9d4da0571435745cfcd3",
      "tree": "7478c41fd0e5e8edfefe13321d5d84dc22da35a2",
      "parents": [
        "d12179c58dff5fd03115dd7f1ef6432b27dd7861"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Fri May 08 15:20:01 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 11:56:28 2026 -0400"
      },
      "message": "refactor(inject): TODO-15 phase-3 batch 12 — RestOpContext + RestContext child resource\n\nRestOpContext.createPartSerializer:\n- BeanCreator.of(HttpPartSerializer.class).type(c).orElse(defaultSerializer)\n  -\u003e  c \u003d\u003d null\n        ? defaultSerializer\n        : BeanInstantiator.of(HttpPartSerializer.class)\n            .beanSubType(c)\n            .fallback(() -\u003e defaultSerializer)\n            .run()\n- Legacy .type(null) was tolerant; v2 beanSubType(null) throws, so the call\n  site short-circuits when c is null (preserves legacy behavior of \"no\n  override class -\u003e use default serializer\").\n- Imports: dropped org.apache.juneau.cp.* (no longer needed) and\n  consolidated commons.inject onto a wildcard import.\n\nRestContext (child resource on line 1131):\n- BeanCreator.of(rc2, bs).run() -\u003e BeanInstantiator.of(rc2, bs).run().\n  Single-shot bean creation, no .type()/.impl() configuration; safe direct\n  swap.\n- Added BeanInstantiator import.\n\nNOT migrated this batch:\n- RestContext.findRestOperationArgs (line 2699):\n    BeanCreator.of(RestOpArg.class, bs).type(c).run()\n  Attempted migration to BeanInstantiator.of(...).beanSubType(c).run() broke\n  jetty-ftest with:\n    \"Could not instantiate class AttributeArg: No methods/constructors found\n     with matching parameters.\"\n  Root cause: legacy BeanCreator\u0027s static-factory discovery treats methods\n  named create() / builder() / getInstance() as bean factories.  v2\n  BeanInstantiator\u0027s factoryMethodNames default is {\"getInstance\"} only —\n  create() / builder() are reserved for builder-type detection (they are\n  expected to return a builder, not the bean itself).  RestOpArg classes like\n  AttributeArg, BodyArg, HeaderArg, etc. expose a static\n  create(ParameterInfo) factory that returns the bean type directly, which\n  matches legacy semantics but not the v2 default.\n  Resolution will be either (a) adding \"create\" / \"builder\" to the\n  BeanInstantiator default factoryMethodNames, or (b) configuring this single\n  call site with .factoryMethodNames(\"getInstance\", \"create\").  Either is a\n  separate batch; keeping the legacy BeanCreator call here for now.\n\nTests:\n- Full juneau-utest passes after the partial migration.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "d12179c58dff5fd03115dd7f1ef6432b27dd7861",
      "tree": "12e4810ce14206e13139c50687fa485d2cf9f2c8",
      "parents": [
        "63d86992ed9426b395931b962123a874b390bf46"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Fri May 08 15:14:22 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 11:56:28 2026 -0400"
      },
      "message": "refactor(inject): TODO-15 phase-3 batch 11 — migrate rest-common / rest-client http-part creators\n\nMigrate the http-part serializer/parser instantiation sites in rest-common\nand rest-client from legacy BeanCreator to v2 BeanInstantiator.  These all\nfollow the same shape: instantiate an HttpPartSerializer / HttpPartParser\nsubclass when one is configured on the schema, otherwise fall back to a\ncaller-supplied default.\n\nFiles migrated:\n- RequestBeanMeta — Builder.serializer / Builder.parser fields retyped to\n  BeanInstantiator\u003c...\u003e; .of(...) calls updated; b.serializer.orElse(null)\n  rewritten as b.serializer.asOptional().orElse(null) (BeanInstantiator does\n  not expose a single-arg .orElse(T) shortcut today).\n- RequestBeanPropertyMeta — type(...) -\u003e beanSubType(...) on the per-property\n  override path.\n- ResponseBeanPropertyMeta — execute() rewritten as asOptional(); added a\n  null-guard on schema.getSerializer() / schema.getParser() (legacy\n  BeanCreator.type(null) was tolerant and just yielded an empty Optional via\n  silent run; v2 beanSubType(Class) throws on null, so the call site now does\n  the null check explicitly).\n- RestClient.getPartParser(Class) / getPartSerializer(Class) — simple\n  BeanCreator.of(c, beanStore).run() -\u003e BeanInstantiator.of(c, beanStore).run().\n  RestClient.callHandler memoizer + Builder.beanStore field stay on legacy\n  BeanCreator / BasicBeanStore for now (memoizer + builder-pattern migration\n  is its own task).\n- RemoteOperationArg — both ctors updated with the same null-guard +\n  asOptional() pattern.\n\nGenerics:\n- HttpPartSchema.getSerializer() / getParser() return Class\u003c?\u003e, so the\n  beanSubType(...) call sites needed an unchecked cast to\n  Class\u003c? extends HttpPartSerializer\u003e / Class\u003c? extends HttpPartParser\u003e;\n  added @SuppressWarnings(\"unchecked\") on each constructor.\n\nBuild clean; juneau-utest passes.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "63d86992ed9426b395931b962123a874b390bf46",
      "tree": "10273ab94664e3e00dbbe656b6ae45a9bb40ff04",
      "parents": [
        "53ef813d19a55a13af00fb283e38f3bc8ba67fc1"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Fri May 08 15:09:20 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 11:56:28 2026 -0400"
      },
      "message": "refactor(inject): TODO-15 phase-3 batch 10 — migrate cascade list helpers to BeanInstantiator\n\nMigrate the rest-server cascade-builder list helpers from legacy BeanCreator\nto v2 BeanInstantiator.  Same surface, same semantics: Builder.append(Class) /\nappend(Instance) stash a per-entry creator, the outer constructor materializes\nthem all on .run() / stream-map.\n\nFiles migrated:\n- RestConverterList — entries List\u003cBeanInstantiator\u003cRestConverter\u003e\u003e; type(v) -\u003e\n  beanSubType(v); impl(v) -\u003e implementation(v); stream map(BeanCreator::run) -\u003e\n  map(BeanInstantiator::run).\n- RestGuardList — same shape.\n- RestMatcherList — same shape.\n- ResponseProcessorList.instantiate(Object o, BeanStore bs) — single\n  BeanCreator.of(...).type((Class\u003c?\u003e)o).run() switched to BeanInstantiator with\n  an unchecked cast to Class\u003c? extends ResponseProcessor\u003e; ExecutableException\n  path preserved for the ConfigException wrap.\n\nImport sweep: dropped trailing \"org.apache.juneau.cp.*\" imports (only\nBeanCreator was being pulled in) and consolidated on\n\"org.apache.juneau.commons.inject.*\".\n\nNotes:\n- These Builders still extend the legacy BeanBuilder\u003cT\u003e, but BeanBuilder.beanStore()\n  already returns the v2 BeanStore interface, so the inner BeanInstantiator\n  call sites are clean.  The outer BeanBuilder migration is its own task\n  (depends on an outstanding builder-pattern parity API on BeanInstantiator).\n- Build clean; juneau-utest passes.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "53ef813d19a55a13af00fb283e38f3bc8ba67fc1",
      "tree": "99839a320155e9246f159c62f055b609435a9059",
      "parents": [
        "f086b391eb7acfdbb34d7da49df95954f57ccdd5"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Fri May 08 15:04:39 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 11:56:28 2026 -0400"
      },
      "message": "refactor(inject): TODO-15 phase-3 batch 9 — migrate marshall internals to BeanInstantiator\n\nBeanInstantiator improvements:\n- Added beanSubType(ClassInfo) overload — convenience for ClassMeta / ClassInfo\n  callers (extracts the underlying class via .inner()).\n- findBeanImpl() now skips the constructor-search step when beanSubType is an\n  interface or abstract class.  Previously Class.newInstance() would throw\n  InstantiationException and mask the cleaner \"class is abstract\" / \"class is an\n  interface\" fallthrough that honors the registered fallback() supplier.  Now\n  abstract / interface bean types route to fallback as documented (matches the\n  legacy silent()/orElse() behavior on BeanCreator).\n\nMigrated marshall call sites from legacy BeanCreator.of(...) to v2\nBeanInstantiator.of(...):\n- BeanMeta.java:976 — BeanFactory instantiation.\n- BeanContext.java:3743 — ObjectSwap subtype creation (uses new ClassInfo overload).\n- BeanPropertyMeta.java:171, 187 — ObjectSwap (beanSubType + addBean for the\n  String/format constructor argument).\n- ClassMeta.java:1419 — ObjectSwap subtype creation.\n- EncoderSet.java:291 — Encoder subtype with cast; still catches ExecutableException.\n- HtmlBeanPropertyMeta.java — render field flipped to BeanInstantiator\u003cHtmlRender\u003e\n  (abstract type — relies on the new abstract-class fallback fix); .orElse(null)\n  rewritten as .fallback(() -\u003e null).run().\n- ParserSession.java:326 / SerializerSession.java:507 — listener creation;\n  null-guard ternary preserves \"no listener configured -\u003e null\" semantics\n  without forcing a default no-op listener instance.\n- VarResolver.java:246 — Var subtype with cast.\n\nIntentionally NOT migrated (kept on legacy BeanCreator for now):\n- BeanPropertyMeta.java:1105, 1164 (propMap / propList for Map/Collection\n  property types).\n- BeanRegistry.java:147, 155 (Collection/Map subtype creation).\n  BeanInstantiator\u0027s constructor-selection differs from BeanCreator on\n  parameterized container types like TreeMap: canResolveAllParameters() accepts\n  TreeMap(Map\u003c? extends K, ? extends V\u003e) (the copy ctor), then fails at actual\n  injection because the bean store has no Map registered.  BeanCreator ended up\n  picking the no-arg ctor in those cases.  Untangling that is its own task —\n  these four sites stay on legacy BeanCreator until BeanInstantiator\u0027s\n  constructor selection is hardened.\n\nTest:\n- BeanInstantiator_Test#n12_beanSubTypeNullThrows updated to disambiguate\n  the now-overloaded beanSubType() (cast to Class\u003c? extends SimpleBean\u003e).\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "f086b391eb7acfdbb34d7da49df95954f57ccdd5",
      "tree": "5ead00211799c7b861803f1eb03398d00c61e9ce",
      "parents": [
        "9a2537475359b8f36cc021ad7c2c31d4cb8e17c1"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Fri May 08 14:32:49 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 11:56:27 2026 -0400"
      },
      "message": "refactor(inject): TODO-15 phase-3 batch 8 — retire legacy SpringBeanStore\n\nThe legacy SpringBeanStore (v1, extending the legacy cp.BasicBeanStore) became\nunused once SpringRestServlet flipped to SpringBeanStore2 in batch-6.  Its only\nremaining caller was its own unit test.\n\nChanges:\n- Deleted juneau-rest-server-springboot/.../SpringBeanStore.java (86 lines).\n- Deleted juneau-utest/.../SpringBeanStore_Test.java (177 lines); SpringBeanStore2_Test\n  already covers the surviving v2 implementation.\n- Updated four Javadoc references (RestInject, BeanContext, Bean, juneau-commons\n  function/package-info) to mention SpringBeanStore2 instead of the deleted v1\n  class so the docs reflect the only available bridge.\n- Marked the Javadoc-cleanup item complete in todo/TODO-15: survey shows\n  RestInject / RestInit / Name / Named already carry zero legacy references\n  (TODO entry was stale); HttpPartParser / HttpPartSerializer still depend on\n  ContextBeanCreator and stay gated on its v2 migration.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "9a2537475359b8f36cc021ad7c2c31d4cb8e17c1",
      "tree": "030b7e9c4e4244d0e5c162dc5a6c5b9bf5c733cb",
      "parents": [
        "9a71bfaa95c9f4fe4a6d1ce2901d543790f7ec1d"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Fri May 08 14:22:29 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 11:56:27 2026 -0400"
      },
      "message": "refactor(inject): TODO-15 phase-3 batch 7 — port BasicBeanStore.INSTANCE to v2\n\nAdds BasicBeanStore2.INSTANCE (typed as the concrete class for compatibility\nwith WritableBeanStore-typed Builder ctors; documented as \"treat as read-only\")\nand migrates 13 consumer references from legacy BasicBeanStore.INSTANCE:\n\n- BasicTestCaptureCallLogger, BasicCallLogger, CallLogger.DEFAULT_RULE\n- ThrownStore.create() + parent-less ctor, MethodExecStore.create()\n- EncoderSet.create(), ParserSet (Builder + create), SerializerSet (Builder + create)\n- OpenApiUI.RESOURCES, SwaggerUI.RESOURCES\n- Swagger_Test, RestContext_Precedence_Test\n\nSkipped: legacy cp.* classes (BasicBeanStore, BeanCreator, BeanCreateMethodFinder,\nMessages, FileFinder) and tests of legacy classes (BeanStore_Test, FileFinder_Test) —\nthey\u0027re being deleted in Phase 4 cutover.\n\nUpdates TODO-15 plan with batch-6 + batch-7 status.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "9a71bfaa95c9f4fe4a6d1ce2901d543790f7ec1d",
      "tree": "8a686d0e5601878fc4c8923d8303fc0d0b5e5520",
      "parents": [
        "09d0bb07d140bb4259ddda4de392fba605f7af9e"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Fri May 08 14:10:50 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 11:56:27 2026 -0400"
      },
      "message": "refactor(inject): TODO-15 phase-3 batch 6 — drop @Rest(beanStore\u003dX.class), migrate Spring to v2, lock in @RestInject \u003e Spring precedence\n\n- SpringRestServlet.createBeanStore() now returns WritableBeanStore (instead of BasicBeanStore) and\n  instantiates SpringBeanStore2 directly.\n- RestContext.createBeanStore() simplified: drop the @Rest(beanStore\u003dX.class) Builder.type() handling\n  and the legacy BasicBeanStore.create().overridingParent(...).build() chain.  New shape is just\n  `new BasicBeanStore2(parentBs)`, optionally replaced by an @RestInject WritableBeanStore factory\n  method on the resource.\n- @Rest.beanStore() annotation attribute removed (Rest.java, RestAnnotation.java Builder + materialized\n  impl, DefaultConfig.java).  Tests updated; RestContext_Precedence_Test rewritten against the new\n  factory-method-based mechanism.\n- RestOpContext.java line 1097 migrated from `BasicBeanStore.of((BasicBeanStore) bootstrap)…` to\n  `new BasicBeanStore2(bootstrap)…` to fix a ClassCastException now that bootstrapBeanStore is a\n  BasicBeanStore2 (forced by batch-5).\n- RestOpSessionArgs.create() resolves both WritableBeanStore and BeanStore parameter types instead\n  of legacy BasicBeanStore.\n\nPrecedence model lock-in:\n- Added BasicBeanStore2.getDefaultSupplier(Class[, String]) accessor that returns the locally-registered\n  default supplier without walking the resolve chain.\n- RestContext line 1251 @RestInject method walk no longer skips framework types.  For framework types\n  it promotes the existing memoizer-backed default supplier into a local-entry supplier (no\n  double-invocation; both layers reference the same memoizer).  For non-framework types it keeps the\n  createBeanFromMethod -\u003e addBean flow.\n- Net effect: @RestInject method results uniformly take precedence over Spring/user-supplied bean-store\n  bindings, which in turn take precedence over framework defaults.  RestContext_Precedence_Test\n  documents and locks in this model with 5 scenarios.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "09d0bb07d140bb4259ddda4de392fba605f7af9e",
      "tree": "e6474fcf7126e82cbb162e1aca64b44d9ce7d517",
      "parents": [
        "f1dfad875c1c45fd01d46f971290c50fac825267"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Fri May 08 12:52:10 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 11:56:27 2026 -0400"
      },
      "message": "refactor(inject): TODO-15 phase-3 batch 5 — flip framework defaults to BeanStore, unlock RestContext.java:1199\n\nFlip constructor signatures and `init(...)` template-method parameters of all framework\ndefaults (`CallLogger`, `DebugEnablement`, `BasicCallLogger`, `BasicDebugEnablement`,\n`BasicTestCallLogger`, `BasicTestCaptureCallLogger`, `BasicDisabledCallLogger`,\n`BasicStaticFiles`, `BasicSwaggerProvider`) from legacy `BasicBeanStore` to the read-only\nv2 `BeanStore` interface. This is a breaking change for any user subclass that overrode\n`init(BasicBeanStore)`.\n\nWiden `BeanBuilder\u003cT\u003e` field, ctor, and public `beanStore()` accessor from\n`WritableBeanStore` to `BeanStore` — read-only is correct because builders only consult\nthe bean store for parameter resolution at `build()` time.  `VarResolver.Builder.bean(c, v)`\nre-architected to store beans on a local `userBeans` map and merge them into the resolver\u0027s\nlocal bean store at `build()` time, which isolates beans to that resolver instead of\nmutating the parent.\n\nCascade companions flipped: `CallLoggerRule`, `StaticFiles`, `SwaggerProvider`,\n`DebugEnablement`, `FileFinder`, `MethodExecStore`, `MethodExecStats`, `ThrownStore`,\n`ThrownStats`.  Test class `Rest_BeanCreatorOverrides_Test`\u0027s 4 user-class ctors flipped\nto `BeanStore` to match.\n\n`BasicBeanStore` and `BasicBeanStore2` self-register under `BeanStore.class` and\n`WritableBeanStore.class` so `BeanCreator` parameter resolution finds the bean store via\neither of those interface types — required for the `BasicDebugEnablement(BeanStore)` ctor\nto resolve correctly.\n\nUnlocked `RestContext.java:1199`: migrated\n`BasicBeanStore.create().overridingParent((BasicBeanStore) bootstrapBeanStore).build()`\nto `new BasicBeanStore2(bootstrapBeanStore)`, dropping the deeper-blocker comment block.\n\nFull build + tests + jetty-ftest green.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "f1dfad875c1c45fd01d46f971290c50fac825267",
      "tree": "4aa4f36e3ca68d4fed61c6222c6445c7733ca439",
      "parents": [
        "d8e855681b0444b8cb6a6ba783a1e67bcbbe687e"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Fri May 08 12:09:55 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 11:56:27 2026 -0400"
      },
      "message": "refactor(inject): TODO-15 phase-3 batch 4 — widen RestSession / VarResolver field types to v2\n\nWiden field types and accessor return types across `VarResolver`,\n`VarResolverSession`, `RestSession`, and `RestOpSession` from legacy\n`BasicBeanStore` to v2 `WritableBeanStore`. Two `BasicBeanStore.of((BasicBeanStore) X)`\ncalls migrated to `new BasicBeanStore2(X)` along the way. Build + unit tests\n+ jetty-ftest verified green.\n\nSpecific changes:\n\n* `VarResolver.beanStore` (package-private field) — `BasicBeanStore` →\n  `WritableBeanStore`. Constructor body line 260 migrated from\n  `BasicBeanStore.of((BasicBeanStore) builder.beanStore())` to\n  `new BasicBeanStore2(builder.beanStore())`.\n* `VarResolver.createSession(BasicBeanStore)` (public method) — parameter\n  type widened to `WritableBeanStore`. Single caller in tree\n  (`RestRequest.java:1395`) compiles unchanged.\n* `VarResolverSession.beanStore` (private field) + ctor parameter — both\n  flipped to `WritableBeanStore`. Constructor body line 153 migrated from\n  `BasicBeanStore.of(beanStore)` to `new BasicBeanStore2(beanStore)`.\n* `RestSession.beanStore` (private field) — `BasicBeanStore` →\n  `WritableBeanStore`. Constructor body line 240 migrated from\n  `BasicBeanStore.of((BasicBeanStore) context.getBeanStore()).addBean(...)`\n  to `new BasicBeanStore2(context.getBeanStore()).addBean(...)`.\n* `RestSession.getBeanStore()` (public getter) — return type widened to\n  `WritableBeanStore`. **Public-API breaking change** for external consumers\n  expecting `BasicBeanStore`.\n* `RestOpSession.getBeanStore()` (public getter) — return type widened to\n  `WritableBeanStore` to match its delegation target. **Public-API breaking\n  change.**\n\nNet effect: 2 `(BasicBeanStore)` casts dropped from production code\n(`VarResolver.java:260`, `RestSession.java:240`); 4 field/getter type\nwidenings landed.\n\nDEEPER BLOCKER DISCOVERED — `RestContext.java:1199` migration NOT included.\n\nInitial attempt also migrated `RestContext.java:1199` (`bs \u003d new BasicBeanStore2(null,\nbootstrapBeanStore)`); this caused 19 jetty-ftest failures with\n`IllegalStateException: VarResolver not found`. Root cause: `RestContext.java:584`\ncalls `BeanCreator.of(DebugEnablement.class, bs).type(BasicDebugEnablement.class)`\nwhich constructs `BasicDebugEnablement(BasicBeanStore beanStore)` — a\nconstructor whose parameter type requires legacy `BasicBeanStore`. With\n`bs` as `BasicBeanStore2`, parameter resolution walks the parent chain and\nfalls through to `bootstrapBeanStore` (legacy, self-registered as\n`BasicBeanStore.class`) which does NOT have the per-resource framework\ndefault suppliers → `init(...)` lookup of `VarResolver.class` fails. Reverted\nthe `1199` migration with an explanatory comment in-source. Migration of\nthat line requires either (a) flipping `BasicDebugEnablement(BasicBeanStore)`\nctor + `DebugEnablement(BasicBeanStore)` superclass ctor + `init(BasicBeanStore)`\ntemplate method to take `BeanStore`/`WritableBeanStore` (invasive — breaks\nuser subclass overrides), or (b) deferring to Phase 4 cutover when\n`BasicBeanStore2` is renamed to `BasicBeanStore` and absorbs legacy ctor\nsignatures.\n\nA related concern: `RestSession.beanStore` field widening implies\n`RestSession.getBeanStore()` now returns a `BasicBeanStore2` instance, which\nwould break user-facing `@RestPostCall void hook(BasicBeanStore bs)` parameter\nresolution via `RestOpSessionArgs.create()` (line 46). No current test\nexercises that pattern, so the widening landed without test failures, but\nexternal consumers using `BasicBeanStore`-typed lifecycle hook parameters\nWILL break. Documented in TODO-15 §\"Deeper blocker discovered\".\n\nTODO-15 plan updated with batch-4 record, deeper-blocker analysis, and\nrevised residual table (post-batch-4 remaining sites: `RestContext.java:348`\n+ `RestContext.java:1199` + `RestOpContext.java:1097`).\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "d8e855681b0444b8cb6a6ba783a1e67bcbbe687e",
      "tree": "01a4eb800ea87aae61aa004559cd6238eaed6327",
      "parents": [
        "d11383fe81bea68628dbb48c0ada3750ee6ffcb8"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Fri May 08 10:30:10 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 11:56:27 2026 -0400"
      },
      "message": "refactor(inject): TODO-15 phase-3 batch 3 — drop vestigial casts, migrate transient stores\n\nTwo complementary cleanups in `RestContext.java` and `RestOpContext.java`. Build\n+ unit tests + jetty-ftest verified green.\n\n(1) Vestigial `(BasicBeanStore) bs` casts dropped — 16 in `RestContext` (lines\n494, 515, 584, 676, 753, 768, 914, 937, 957, 987, 1008, 1029, 1064, 1110, 1125)\nand 1 in `RestOpContext` (line 437). Each was a leftover from before the\ncascade-builder migration widened the utility-class `create(...)` factories\n(`FileFinder`, `EncoderSet`, `MethodExecStore`, `ParserSet`, `SerializerSet`,\n`ThrownStore`, `RestOperations`, `RestChildren`, `ResponseProcessorList`,\n`RestOpArgList`) to accept `WritableBeanStore`, and before\n`BeanCreator.of(Class, BeanStore)` was added. The casts were no-ops on the\nlegacy `BasicBeanStore` instance — and they would have started failing once any\ncaller passed a `BasicBeanStore2` through. Drop now to unblock that next step.\n\n(2) Five transient internal-bean-store sites migrated from\n`BasicBeanStore.of((BasicBeanStore) beanStore())` to\n`new BasicBeanStore2(beanStore())`:\n\n* `RestOpContext.java:216` — `beanContext` lambda\n* `RestOpContext.java:546` — `jsonSchemaGenerator` lambda\n* `RestOpContext.java:664` — `partParser` lambda\n* `RestOpContext.java:680` — `partSerializer` lambda\n* `RestContext.java:2670` — `findRestOperationArgs`\n\nEach site builds a one-shot child store, adds 2 beans, and calls\n`createBeanFromMethod(...)` for `@RestInject` discovery. The result never escapes\nthe method, so flipping the implementation is purely internal — no field or\npublic-API changes.\n\nNOT migrated (see TODO-15 §\"Residual casts in `RestContext` / `RestOpContext`\"\nitem 4 for the full reasoning):\n\n* `RestContext.java:348` — `BasicBeanStore.create().overridingParent(...).type(...).impl(...)` — fluent\n  Builder chain needs an equivalent on the v2 side first.\n* `RestContext.java:1206` — per-resource store exposed via public\n  `RestContext.getBeanStore()`; `RestSession.java:240` and `VarResolver.java:260`\n  still downcast that result to legacy `BasicBeanStore` to call the legacy\n  `BasicBeanStore.of(...)` static. Migrating them requires field/return-type\n  widening or porting `of(...)` to v2.\n* `RestOpContext.java:1097` — registers the bean store under `BasicBeanStore.class`\n  so user-facing `@RestPostCall void hook(BasicBeanStore bs)` parameter resolution\n  keeps working. Cannot migrate without breaking that user contract until the\n  legacy class is removed in Phase 4.\n\nNet effect: 16 vestigial casts gone, 5 transient stores on v2. The remaining\n4 legacy-API sites in `RestContext`/`RestOpContext`/`RestSession`/`VarResolver`\nare documented and gated by Phase 4 cutover.\n\nTODO-15 plan updated with batch-3 entry and revised residual table.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "d11383fe81bea68628dbb48c0ada3750ee6ffcb8",
      "tree": "2ce6cd386c9ec35e5b07398c4450691a6ad3d8c5",
      "parents": [
        "ce5d6be0c0d14e6fb64dc9a7ec30d2aa0f9533c9"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Fri May 08 10:16:37 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 11:56:27 2026 -0400"
      },
      "message": "refactor(inject): TODO-15 phase-3 batch 2 — javadoc, deprecations, microservice survey, MCP migration\n\nFour small follow-on tasks bundled into one commit. Build + tests + jetty-ftest verified green at each step.\n\n(d) Javadoc-only refs updated to v2 — Name, Named, RestInit, RestInject now point at\n`org.apache.juneau.commons.inject.BeanStore` (with `WritableBeanStore` paired in\nthe RestInject injectables table). The user-facing example field type in RestInject\nwas flipped from `BasicBeanStore` to `BeanStore`. Removed the legacy\n`BasicBeanStore.Builder#overridingParent(...)` link in favor of impl-neutral prose.\n\n(f) Phase 0 deprecations — `@Deprecated(since \u003d \"9.5.0\")` + `@deprecated` Javadoc\nadded to the four legacy injection classes:\n* `cp.BasicBeanStore` → BeanStore / WritableBeanStore / BasicBeanStore2\n* `cp.BeanCreator` → BeanInstantiator\n* `cp.BeanCreateMethodFinder` → BeanStore.createBeanFromMethod(...)\n* `cp.ContextBeanCreator` → BeanInstantiator (deferred until v2 grows\n  context-builder hooks; still extended by HttpPart{Parser,Serializer}.Creator)\n`forRemoval \u003d true` deliberately not set — final removal happens in Phase 4.\n`org.apache.juneau.BeanBuilder` is intentionally not deprecated (consumer-facing\nbuilder superclass; internals widened to v2 in the previous commit).\n\n(e) Microservice / config survey — `juneau-microservice-core`,\n`juneau-microservice-jetty`, and `juneau-config` confirmed clean. Zero references\nto `BasicBeanStore`, `BeanCreator`, `BeanCreateMethodFinder`, or\n`ContextBeanCreator` across all 52 source files. No phase-3 migration work\nneeded in those modules.\n\n(b) rest-server-mcp migration to v2 BeanStore. Public handler interfaces\n(`McpToolHandler`, `McpPromptHandler`, `McpResourceHandler`, `McpTypedToolHandler`,\n`McpTypedPromptHandler`, `McpCursor`) and their associated dispatch surfaces\n(`Mcp.handle`, `McpDispatcher.dispatch` + 7 internal methods, `McpTypedHandlers`\nadapters) now take `BeanStore ctx` instead of `BasicBeanStore ctx`. The read-only\ninterface was chosen over `WritableBeanStore` because handlers don\u0027t mutate the\nstore. Servlet wrap-and-add patterns in `McpRestServlet` and `McpEndpoint`\nsimplified from `BasicBeanStore.of((BasicBeanStore) restReq.getContext().getBeanStore())`\nto `new BasicBeanStore2(restReq.getContext().getBeanStore())` — both pre-existing\n`// TODO: Why do we need a cast?` comments are now obsolete and gone. Six unit-test\nfiles updated in lockstep; `BasicBeanStore.create().build()` test ctx instances\nreplaced with `new BasicBeanStore2()`. Added a no-arg `BasicBeanStore2()`\nconstructor (equivalent to `new BasicBeanStore2(null)`) for standalone parent-less\nstores.\n\nThis is a breaking change for any external consumer implementing the MCP\nhandler interfaces — `BasicBeanStore ctx` → `BeanStore ctx`. Acceptable under\n9.5.0\u0027s semi-major release stance.\n\nTODO-15 plan updated: microservice survey, MCP migration, and Phase-0\ndeprecations all marked DONE with detailed records.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "ce5d6be0c0d14e6fb64dc9a7ec30d2aa0f9533c9",
      "tree": "e5e74f16dbd6bca7c5b619adde49e6febedeb521",
      "parents": [
        "8010636f519642968b34cb87a0e6914c94026a43"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Fri May 08 09:53:15 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 11 11:56:27 2026 -0400"
      },
      "message": "refactor(inject): widen BeanCreator and BeanBuilder to accept any BeanStore (TODO-15 phase-3 cleanup)\n\nDrops the legacy `(BasicBeanStore)` downcast clutter from cascade builders and\nRestContext / RestOpContext call sites by widening the parent-store type on\nthe two main bean-creation entry points:\n\n* `BeanCreator.of(Class, BeanStore)` overload — accepts legacy `BasicBeanStore`\n  or v2 `BasicBeanStore2`. Constructor branches internally (legacy parent →\n  `BasicBeanStore.of(legacy)`; v2 parent → `new BasicBeanStore2(parent)`).\n  `store` field widened to `WritableBeanStore`. Legacy `of(Class, BasicBeanStore)`\n  retained for binary compat.\n\n* `BeanBuilder\u003cT\u003e` field, ctor, and public `beanStore()` accessor flipped from\n  `BasicBeanStore` to `WritableBeanStore`. All 14 cascade-builder\n  `super(X.class, (BasicBeanStore) beanStore)` downcasts dropped (`ThrownStore`,\n  `MethodExecStore`, `StaticFiles`, `ResponseProcessorList`, `RestMatcherList`,\n  `RestGuardList`, `RestConverterList`, `RestOpArgList`, `RestOperations`,\n  `RestChildren`, `SerializerSet`, `ParserSet`, `EncoderSet`, `FileFinder`).\n\nAdjacent cleanup pulled in by the cascade:\n\n* `MethodExecStats.create(...)` and `ThrownStats.create(...)` flipped to accept\n  `WritableBeanStore`.\n* Standalone Builder fields in `SwaggerProvider.Builder` and\n  `ThrownStats.Builder` flipped to `WritableBeanStore`.\n* `BasicSwaggerProvider(BasicBeanStore)` ctor flipped to\n  `BasicSwaggerProvider(WritableBeanStore)` (consumed by the SwaggerProvider\n  widening).\n* Three internal helpers (`ResponseProcessorList.instantiate`,\n  `EncoderSet.instantiate`, `VarResolver.toVar`) widened to take `BeanStore`.\n* Two stored-store fields (`MethodExecStore.beanStore`, `ThrownStore.beanStore`)\n  flipped to `WritableBeanStore`.\n\nAlso captures the failed four-memoizer migration attempt (callLogger /\ndebugEnablement / staticFiles / swaggerProvider) and reverts it back to legacy\n`BeanCreator.of(...)`. The `BeanInstantiator` builder-discovery + loose-builder\nimprovements made during that attempt are preserved. Follow-up work tracked\nunder new TODO-25.\n\n`WritableBeanStore` chosen over read-only `BeanStore` so existing call sites\nthat need write access (e.g. `VarResolver.Builder.bean(...)` calling\n`super.beanStore().addBean(...)`) keep working without a downcast. Single\nresidual cast left: `VarResolver` line 257 still wraps the parent in legacy\n`BasicBeanStore.of(...)` because that static API still requires a\n`BasicBeanStore`; it goes away when the static is widened or removed in Phase 4.\n\nTODO-15 plan updated to record the cascade-builder, `BeanCreator`, and\n`BeanBuilder` widenings, plus the four-memoizer revert. New\nTODO-25-revisit-rest-context-memoizer-migration.md captures the memoizer\nmigration analysis for future work.\n\nVerified with `./scripts/test.py -f` (full build + unit tests) and\n`juneau-examples-rest-jetty-ftest` (the suite that caught the staticfile\nregression earlier).\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "8010636f519642968b34cb87a0e6914c94026a43",
      "tree": "3708cb0344f2269fb7ed324875d52b6578fba08a",
      "parents": [
        "3f9ad97f0a1aaffe0df31065081445ad0f7318a5",
        "b62df6ed87e06250b3fdcd476f9272adb9070db1"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@users.noreply.github.com",
        "time": "Fri May 08 20:30:29 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 08 20:30:29 2026 -0400"
      },
      "message": "Merge pull request #341 from apache/dependabot/github_actions/github/codeql-action-4.35.4\n\nBump github/codeql-action from 4.35.2 to 4.35.4"
    },
    {
      "commit": "b62df6ed87e06250b3fdcd476f9272adb9070db1",
      "tree": "3708cb0344f2269fb7ed324875d52b6578fba08a",
      "parents": [
        "3f9ad97f0a1aaffe0df31065081445ad0f7318a5"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri May 08 04:37:57 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 08 04:37:57 2026 +0000"
      },
      "message": "Bump github/codeql-action from 4.35.2 to 4.35.4\n\nBumps [github/codeql-action](https://github.com/github/codeql-action) from 4.35.2 to 4.35.4.\n- [Release notes](https://github.com/github/codeql-action/releases)\n- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/github/codeql-action/compare/95e58e9a2cdfd71adc6e0353d5c52f41a045d225...68bde559dea0fdcac2102bfdf6230c5f70eb485e)\n\n---\nupdated-dependencies:\n- dependency-name: github/codeql-action\n  dependency-version: 4.35.4\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "3f9ad97f0a1aaffe0df31065081445ad0f7318a5",
      "tree": "5ac90e0d6d5e80733e0f4c51eef6b68b0fcb2d6d",
      "parents": [
        "d303a7f57c4648b1a8784150ad2a86240474fad3"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Thu May 07 15:10:14 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Thu May 07 15:10:14 2026 -0400"
      },
      "message": "refactor: rename BeanCreator2 to BeanInstantiator, add BeanStore.createBeanFromMethod() API\n"
    },
    {
      "commit": "d303a7f57c4648b1a8784150ad2a86240474fad3",
      "tree": "a775e0a46d3d73d53eed3c6bbd3590b52edf53cf",
      "parents": [
        "8689ffd9c8583cf3c487ed456d3bc0f24aedc280"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Thu May 07 13:40:02 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Thu May 07 13:40:02 2026 -0400"
      },
      "message": "refactor: align bean-store precedence and make RestContext eager init optional\n"
    },
    {
      "commit": "8689ffd9c8583cf3c487ed456d3bc0f24aedc280",
      "tree": "73c38dcb9763a4c61a27777eecafd74a1d12726a",
      "parents": [
        "8921dc8a1e95672b1c0c3b1b6a5be8a6b39f33c7"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Thu May 07 09:13:02 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Thu May 07 09:13:02 2026 -0400"
      },
      "message": "refactor(rest-server): move @RestInject scan helpers from Builder to RestContext\n"
    },
    {
      "commit": "8921dc8a1e95672b1c0c3b1b6a5be8a6b39f33c7",
      "tree": "1e9ac4987b624ddbddd786914a77bfe0c7ebdc1d",
      "parents": [
        "9020569472b3f1291f7b0a71ce4fb02149e2ae81"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Thu May 07 08:48:59 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Thu May 07 08:48:59 2026 -0400"
      },
      "message": "refactor: inline all remaining Builder.create* methods as memoized fields on RestContext\n"
    },
    {
      "commit": "9020569472b3f1291f7b0a71ce4fb02149e2ae81",
      "tree": "c3ea5e21727d5f1c496da2999b0e97c9640a4bb4",
      "parents": [
        "cbab3bfbaf6a4ebf3596f880c41ae95577f0bc4d"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Thu May 07 08:02:38 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Thu May 07 08:02:38 2026 -0400"
      },
      "message": "style: reformat simple memoizer fields to multi-line Javadoc + lambda style in RestContext\n"
    },
    {
      "commit": "cbab3bfbaf6a4ebf3596f880c41ae95577f0bc4d",
      "tree": "43a24da22bf189caa2a56cc6e0cd53cb7bcea9b8",
      "parents": [
        "bf18a9c83bbfa9e3d688cb7b50ac83d9c07c0c08"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Tue May 05 11:10:54 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Tue May 05 11:10:54 2026 -0400"
      },
      "message": "refactor: move sub-builder fields from Builder to RestContext, drop Builder/Creator @RestInject support\n"
    },
    {
      "commit": "bf18a9c83bbfa9e3d688cb7b50ac83d9c07c0c08",
      "tree": "b095066514e8cb0d93be2850b028be7a687eff21",
      "parents": [
        "9b0210e80019d2d2863842fc38b8a47c19e81845"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Tue May 05 08:55:55 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Tue May 05 08:55:55 2026 -0400"
      },
      "message": "refactor: remove RestContextApply, @ContextApply from @Rest, and inline Builder init into constructor\n"
    },
    {
      "commit": "9b0210e80019d2d2863842fc38b8a47c19e81845",
      "tree": "f46e9ef9c6644e85a4e85771f7529585c58733b2",
      "parents": [
        "86c97bea27d2d1cf3452928e751ccf88da321a10"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Tue May 05 08:12:04 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Tue May 05 08:12:04 2026 -0400"
      },
      "message": "Refactor RestContext memoized initialization for headers, encoders, children, and operations\n"
    },
    {
      "commit": "86c97bea27d2d1cf3452928e751ccf88da321a10",
      "tree": "f690547f098bf2ce1fce89e23216fea778e351ff",
      "parents": [
        "282b88f1272e74df3dbcda8addc4b2bbd71a2c9d"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 04 17:11:46 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 04 17:11:46 2026 -0400"
      },
      "message": "refactor: inline RestContext Args and remove RestContextInit\n"
    },
    {
      "commit": "282b88f1272e74df3dbcda8addc4b2bbd71a2c9d",
      "tree": "22a9986026434b920fde4932d5e7d0bc4fdf55ac",
      "parents": [
        "97b270a4ce420659257309b5862ce3baac10fa24"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 04 16:16:57 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 04 16:16:57 2026 -0400"
      },
      "message": "refactor: align/memoize rest context fields and resolve Sonar issues\n"
    },
    {
      "commit": "97b270a4ce420659257309b5862ce3baac10fa24",
      "tree": "98cb82626af735c07e2faa2337a13894ac4988e9",
      "parents": [
        "693f18cfab699b6de3dbc5a19cd0f2f3c7f24af6"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 04 12:17:02 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 04 12:17:02 2026 -0400"
      },
      "message": "refactor: encapsulate RestContext sub-builder access via package-private getters\n"
    },
    {
      "commit": "693f18cfab699b6de3dbc5a19cd0f2f3c7f24af6",
      "tree": "b234568dab43661ba8a3c73aabd6a5a263d46271",
      "parents": [
        "0d2bf3a13e3f32397c861e048fb7291870795a07"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 04 12:03:52 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 04 12:03:52 2026 -0400"
      },
      "message": "refactor: inline RestOpContext.Builder sub-builders into lazy memoizers; add convenience accessors\n"
    },
    {
      "commit": "0d2bf3a13e3f32397c861e048fb7291870795a07",
      "tree": "10096dcc8179ffabe82f4401bddc9ceaccbee978",
      "parents": [
        "8bb6452065603d670cb59e6cc1be271442f73a02"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 04 11:22:38 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 04 11:22:38 2026 -0400"
      },
      "message": "refactor: remove 3-arg RestOpContext constructor and simplify RrpcRestOpContext to use default bean store\n"
    },
    {
      "commit": "8bb6452065603d670cb59e6cc1be271442f73a02",
      "tree": "cf8ae09f32819a418a5b33d93a5fe40f63c51bde",
      "parents": [
        "1d08c90aee994b025f6a09034c81c46b61cb5de3"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 04 11:13:43 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 04 11:13:43 2026 -0400"
      },
      "message": "refactor: add treeSetCi/u(SortedSet) utilities and inline applyParameter* helpers in RestOpContext\n"
    },
    {
      "commit": "1d08c90aee994b025f6a09034c81c46b61cb5de3",
      "tree": "3d14dc3f9ad28dd9751b2eaca6ae34f041542c3e",
      "parents": [
        "feea646ad6be53656292d6298392e61e2b819066"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 04 10:32:45 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 04 10:32:45 2026 -0400"
      },
      "message": "RestOpContext: inline all findXxx() bodies into memoizer lambdas, rename Memo fields, add Javadoc\n"
    },
    {
      "commit": "feea646ad6be53656292d6298392e61e2b819066",
      "tree": "7a575e150d12d8080e755c4569e2cd7184708bcf",
      "parents": [
        "e7fc2d81bfa3d65e09e5eb90302340071ff0c913"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 04 09:29:07 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 04 09:29:07 2026 -0400"
      },
      "message": "RestOpContext: drop persistent Builder reference; convert 6 eager scalars to memoizers\n"
    },
    {
      "commit": "e7fc2d81bfa3d65e09e5eb90302340071ff0c913",
      "tree": "93ba017d594d9b853d58eb00beff867bd7681d75",
      "parents": [
        "c2724b704478d1ae6c95ded5c134f16f9f672106"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 04 09:01:26 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 04 09:01:26 2026 -0400"
      },
      "message": "refactor: rename simpleVarResolver-\u003ebootstrapVarResolver and rootBeanStore-\u003ebootstrapBeanStore in RestContext\n"
    },
    {
      "commit": "c2724b704478d1ae6c95ded5c134f16f9f672106",
      "tree": "55a60b4b115de13089619460190f421bb0d202cf",
      "parents": [
        "3268bef56b1a059a34fb3d60d42cf3b8d40a288c"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 04 08:51:34 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 04 08:51:34 2026 -0400"
      },
      "message": "chore: bump version to 9.5.0-SNAPSHOT\n"
    },
    {
      "commit": "3268bef56b1a059a34fb3d60d42cf3b8d40a288c",
      "tree": "95068bce3dd87ca18575c0f86fa9c914ae24471b",
      "parents": [
        "cdb19ed08c658ebe242e471ab88bb3d4598fd0ce"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 04 08:45:13 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon May 04 08:45:13 2026 -0400"
      },
      "message": "feat: sorted bean properties as default; remove sortProperties API; expand MarshallUtils overloads\n"
    },
    {
      "commit": "cdb19ed08c658ebe242e471ab88bb3d4598fd0ce",
      "tree": "ead30383b827f80e8adecbd77ec1ba6b63607e93",
      "parents": [
        "e7a2e44eb82e8fc28e6f378cc93bc895b9c6c49c"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Sun May 03 08:55:10 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Sun May 03 08:55:10 2026 -0400"
      },
      "message": "feat: add MarshallUtils static helpers, JsonMap/JsonList toX() methods, juneau-bean-mcp and juneau-rest-server-mcp modules\n"
    },
    {
      "commit": "e7a2e44eb82e8fc28e6f378cc93bc895b9c6c49c",
      "tree": "982fe6ad25740bb40c4571afa9f8f73293c9e8ff",
      "parents": [
        "4957aa724f5655994380b77d54e88dac676fc037",
        "c3239e06001719146777e38bd7b9ca09ab95a8e6"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@users.noreply.github.com",
        "time": "Fri May 01 08:49:20 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 01 08:49:20 2026 -0400"
      },
      "message": "Merge pull request #339 from apache/dependabot/maven/juneau-rest/juneau-ng-rest-client-apache-httpclient-50/org.apache.httpcomponents.client5-httpclient5-5.6.1\n\nBump org.apache.httpcomponents.client5:httpclient5 from 5.6 to 5.6.1 in /juneau-rest/juneau-ng-rest-client-apache-httpclient-50"
    },
    {
      "commit": "4957aa724f5655994380b77d54e88dac676fc037",
      "tree": "982fe6ad25740bb40c4571afa9f8f73293c9e8ff",
      "parents": [
        "6c5cb139975f3506e0b2ca711d48cd717da795bf"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@users.noreply.github.com",
        "time": "Fri May 01 08:48:59 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 01 08:48:59 2026 -0400"
      },
      "message": "Bump org.apache.httpcomponents.client5:httpclient5 from 5.6 to 5.6.1 #340"
    },
    {
      "commit": "6c5cb139975f3506e0b2ca711d48cd717da795bf",
      "tree": "372a636efa419e798e3300f04dc37b06824a6fc4",
      "parents": [
        "94864395a1fd92b0d0550f0546266a24c82f11ec",
        "5878f52cfacb83a0181560cb7e7caca6bf7738ed"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@users.noreply.github.com",
        "time": "Fri May 01 08:47:45 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 01 08:47:45 2026 -0400"
      },
      "message": "Merge pull request #340 from apache/dependabot/maven/org.apache.httpcomponents.client5-httpclient5-5.6.1\n\nBump org.apache.httpcomponents.client5:httpclient5 from 5.6 to 5.6.1"
    },
    {
      "commit": "5878f52cfacb83a0181560cb7e7caca6bf7738ed",
      "tree": "372a636efa419e798e3300f04dc37b06824a6fc4",
      "parents": [
        "94864395a1fd92b0d0550f0546266a24c82f11ec"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri May 01 04:56:43 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 01 04:56:43 2026 +0000"
      },
      "message": "Bump org.apache.httpcomponents.client5:httpclient5 from 5.6 to 5.6.1\n\nBumps [org.apache.httpcomponents.client5:httpclient5](https://github.com/apache/httpcomponents-client) from 5.6 to 5.6.1.\n- [Changelog](https://github.com/apache/httpcomponents-client/blob/rel/v5.6.1/RELEASE_NOTES.txt)\n- [Commits](https://github.com/apache/httpcomponents-client/compare/rel/v5.6...rel/v5.6.1)\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.httpcomponents.client5:httpclient5\n  dependency-version: 5.6.1\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "c3239e06001719146777e38bd7b9ca09ab95a8e6",
      "tree": "372a636efa419e798e3300f04dc37b06824a6fc4",
      "parents": [
        "94864395a1fd92b0d0550f0546266a24c82f11ec"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Apr 29 20:58:14 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 29 20:58:14 2026 +0000"
      },
      "message": "Bump org.apache.httpcomponents.client5:httpclient5\n\nBumps [org.apache.httpcomponents.client5:httpclient5](https://github.com/apache/httpcomponents-client) from 5.6 to 5.6.1.\n- [Changelog](https://github.com/apache/httpcomponents-client/blob/rel/v5.6.1/RELEASE_NOTES.txt)\n- [Commits](https://github.com/apache/httpcomponents-client/compare/rel/v5.6...rel/v5.6.1)\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.httpcomponents.client5:httpclient5\n  dependency-version: 5.6.1\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "94864395a1fd92b0d0550f0546266a24c82f11ec",
      "tree": "2f1fbe51c5d43ce99f3b9e50c99f57bbb96c1735",
      "parents": [
        "1edfecd16ff42e3bffee8883a8cc1c50d23789d7"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@users.noreply.github.com",
        "time": "Fri Apr 24 21:46:17 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 24 21:46:17 2026 -0400"
      },
      "message": "Bump spring.version from 4.0.5 to 4.0.6 #337"
    },
    {
      "commit": "1edfecd16ff42e3bffee8883a8cc1c50d23789d7",
      "tree": "62635f1407bea0231344bb5c2e13507265c77755",
      "parents": [
        "5b71a151ba57c048aefce48f82aae2682421ba37",
        "60ba4d21caa319c46080d1161cbf17839ed2090f"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@users.noreply.github.com",
        "time": "Fri Apr 24 21:45:24 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 24 21:45:24 2026 -0400"
      },
      "message": "Merge pull request #337 from apache/dependabot/maven/spring.version-4.0.6\n\nBump spring.version from 4.0.5 to 4.0.6"
    },
    {
      "commit": "60ba4d21caa319c46080d1161cbf17839ed2090f",
      "tree": "62635f1407bea0231344bb5c2e13507265c77755",
      "parents": [
        "5b71a151ba57c048aefce48f82aae2682421ba37"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Apr 24 04:35:05 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 24 04:35:05 2026 +0000"
      },
      "message": "Bump spring.version from 4.0.5 to 4.0.6\n\nBumps `spring.version` from 4.0.5 to 4.0.6.\n\nUpdates `org.springframework.boot:spring-boot-starter-web` from 4.0.5 to 4.0.6\n- [Release notes](https://github.com/spring-projects/spring-boot/releases)\n- [Commits](https://github.com/spring-projects/spring-boot/compare/v4.0.5...v4.0.6)\n\nUpdates `org.springframework.boot:spring-boot-maven-plugin` from 4.0.5 to 4.0.6\n- [Release notes](https://github.com/spring-projects/spring-boot/releases)\n- [Commits](https://github.com/spring-projects/spring-boot/compare/v4.0.5...v4.0.6)\n\n---\nupdated-dependencies:\n- dependency-name: org.springframework.boot:spring-boot-starter-web\n  dependency-version: 4.0.6\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n- dependency-name: org.springframework.boot:spring-boot-maven-plugin\n  dependency-version: 4.0.6\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "5b71a151ba57c048aefce48f82aae2682421ba37",
      "tree": "3b847f66bdafd58974f047c7fe221d3ce7cdd388",
      "parents": [
        "abd9f14756c955e59c0c15e1a08fbafcdc924f16"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Sun Apr 19 14:15:34 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Sun Apr 19 14:15:34 2026 -0400"
      },
      "message": "refactor: RestContext and RestOpContext overhaul; remove rest-server DefaultClassList; BasicBeanStore, tests, and TODO updates\n"
    },
    {
      "commit": "abd9f14756c955e59c0c15e1a08fbafcdc924f16",
      "tree": "68937d85eed8eea577aae24c8aca0dd3243c0545",
      "parents": [
        "7184eb62bb5965098aa0e1a870bed5738b58bdc9"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Sat Apr 18 08:43:20 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Sat Apr 18 08:43:20 2026 -0400"
      },
      "message": "chore: TODO plan files use TODO-id-slug names; add [TODO-n] to TODO.md; update plan link in test; remove AI_SESSION from .gitignore\n"
    },
    {
      "commit": "7184eb62bb5965098aa0e1a870bed5738b58bdc9",
      "tree": "8556901da7f346065bd2a96c4f99a02ba64dcc1e",
      "parents": [
        "d009ca9ea1a4427d6078a764a136c87ed815676e"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Sat Apr 18 08:08:47 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Sat Apr 18 08:08:47 2026 -0400"
      },
      "message": "Stop tracking AGENTS.md and .cursor; ignore locally\n\nRemove Cursor/AI assistant config from the Apache source tree while\nkeeping paths ignored so developers can retain them locally.\n\nMade-with: Cursor\n"
    },
    {
      "commit": "d009ca9ea1a4427d6078a764a136c87ed815676e",
      "tree": "68af45861bdfa1a422c2d47909182be0e4cc9f81",
      "parents": [
        "29dc04200153f580e05c692f7126ed19464abfc8"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Sat Apr 18 08:07:58 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Sat Apr 18 08:07:58 2026 -0400"
      },
      "message": "Moving schema annotations into juneau-common\n"
    },
    {
      "commit": "29dc04200153f580e05c692f7126ed19464abfc8",
      "tree": "a16eeecc4c7273a6bce433285f5dc109ab9b4891",
      "parents": [
        "b75b3dd4423ad210a11b12070d0dda6588c09889"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@users.noreply.github.com",
        "time": "Fri Apr 17 06:16:19 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 06:16:19 2026 -0400"
      },
      "message": "Bump org.mockito:mockito-core from 5.21.0 to 5.23.0 #333\n\nUpdated the version of org.mockito:mockito-core from 5.15.2 to 5.23.0."
    },
    {
      "commit": "b75b3dd4423ad210a11b12070d0dda6588c09889",
      "tree": "322069bb58f1fa9f804987d945fa8ebbc70877f0",
      "parents": [
        "ff6f2d8eacb25f2be44453d84fdcc62588a66764",
        "a53dca361fdaa79556e9c5df939e658703b812da"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@users.noreply.github.com",
        "time": "Fri Apr 17 06:15:00 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 06:15:00 2026 -0400"
      },
      "message": "Merge pull request #333 from apache/dependabot/maven/org.mockito-mockito-core-5.23.0\n\nBump org.mockito:mockito-core from 5.21.0 to 5.23.0"
    },
    {
      "commit": "ff6f2d8eacb25f2be44453d84fdcc62588a66764",
      "tree": "85097d7cfb0ba3d348543b8cea2cf2136c124ef5",
      "parents": [
        "49123fccb1dcd4545479e406fafd483a1b661f76"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@users.noreply.github.com",
        "time": "Fri Apr 17 06:14:42 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 06:14:42 2026 -0400"
      },
      "message": "Bump jetty.version from 12.1.7 to 12.1.8 #335"
    },
    {
      "commit": "49123fccb1dcd4545479e406fafd483a1b661f76",
      "tree": "952c0f347c0c20fd133409913b04df2e632af525",
      "parents": [
        "850bcb2fdce6f8f992034b8a5553b8e7d8fb12fe",
        "1feebed1307941d3f6833c3c96a52ff47e7aaee3"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@users.noreply.github.com",
        "time": "Fri Apr 17 06:13:36 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 06:13:36 2026 -0400"
      },
      "message": "Merge pull request #335 from apache/dependabot/maven/jetty.version-12.1.8\n\nBump jetty.version from 12.1.7 to 12.1.8"
    },
    {
      "commit": "850bcb2fdce6f8f992034b8a5553b8e7d8fb12fe",
      "tree": "0de99415dde396f6cffdb96d4383b594702d04d7",
      "parents": [
        "1b51cb8781dda6dc0a22050f32542b996bfa117c",
        "408e6f486429404eba02be4ab2d38b452d155649"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@users.noreply.github.com",
        "time": "Fri Apr 17 05:25:03 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 05:25:03 2026 -0400"
      },
      "message": "Merge pull request #334 from apache/dependabot/github_actions/github/codeql-action-4.35.2\n\nBump github/codeql-action from 4.35.1 to 4.35.2"
    },
    {
      "commit": "1feebed1307941d3f6833c3c96a52ff47e7aaee3",
      "tree": "e117a31d09694bddd157b11db447d7c44a9fb626",
      "parents": [
        "1b51cb8781dda6dc0a22050f32542b996bfa117c"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Apr 17 04:33:44 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 04:33:44 2026 +0000"
      },
      "message": "Bump jetty.version from 12.1.7 to 12.1.8\n\nBumps `jetty.version` from 12.1.7 to 12.1.8.\n\nUpdates `org.eclipse.jetty:jetty-client` from 12.1.7 to 12.1.8\n\nUpdates `org.eclipse.jetty:jetty-bom` from 12.1.7 to 12.1.8\n- [Release notes](https://github.com/jetty/jetty.project/releases)\n- [Commits](https://github.com/jetty/jetty.project/compare/jetty-12.1.7...jetty-12.1.8)\n\nUpdates `org.eclipse.jetty.ee11:jetty-ee11-servlet` from 12.1.7 to 12.1.8\n\n---\nupdated-dependencies:\n- dependency-name: org.eclipse.jetty:jetty-client\n  dependency-version: 12.1.8\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.eclipse.jetty:jetty-bom\n  dependency-version: 12.1.8\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.eclipse.jetty.ee11:jetty-ee11-servlet\n  dependency-version: 12.1.8\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "408e6f486429404eba02be4ab2d38b452d155649",
      "tree": "0de99415dde396f6cffdb96d4383b594702d04d7",
      "parents": [
        "1b51cb8781dda6dc0a22050f32542b996bfa117c"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Apr 17 04:33:06 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 04:33:06 2026 +0000"
      },
      "message": "Bump github/codeql-action from 4.35.1 to 4.35.2\n\nBumps [github/codeql-action](https://github.com/github/codeql-action) from 4.35.1 to 4.35.2.\n- [Release notes](https://github.com/github/codeql-action/releases)\n- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/github/codeql-action/compare/c10b8064de6f491fea524254123dbe5e09572f13...95e58e9a2cdfd71adc6e0353d5c52f41a045d225)\n\n---\nupdated-dependencies:\n- dependency-name: github/codeql-action\n  dependency-version: 4.35.2\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "a53dca361fdaa79556e9c5df939e658703b812da",
      "tree": "5b5fa9d9dff69045571ddaee562cdf345fd1d539",
      "parents": [
        "1b51cb8781dda6dc0a22050f32542b996bfa117c"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Apr 17 04:32:54 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 04:32:54 2026 +0000"
      },
      "message": "Bump org.mockito:mockito-core from 5.21.0 to 5.23.0\n\nBumps [org.mockito:mockito-core](https://github.com/mockito/mockito) from 5.21.0 to 5.23.0.\n- [Release notes](https://github.com/mockito/mockito/releases)\n- [Commits](https://github.com/mockito/mockito/compare/v5.21.0...v5.23.0)\n\n---\nupdated-dependencies:\n- dependency-name: org.mockito:mockito-core\n  dependency-version: 5.23.0\n  dependency-type: direct:development\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "1b51cb8781dda6dc0a22050f32542b996bfa117c",
      "tree": "8113287680ace2e54125197fe7c02cb94c8c6e5a",
      "parents": [
        "267ead092899acd9a7d5cc0b9d8910e0b3f04fd3"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Tue Apr 14 09:09:38 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Tue Apr 14 09:09:38 2026 -0400"
      },
      "message": "Moving schema annotations into juneau-common\n"
    },
    {
      "commit": "267ead092899acd9a7d5cc0b9d8910e0b3f04fd3",
      "tree": "ced990abfc43af30d7e999bf9b5a895e50b1ec6f",
      "parents": [
        "9ad1836f6900d73f0cadb8a065b843f9ac91a6b6"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Tue Apr 14 08:25:41 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Tue Apr 14 08:25:41 2026 -0400"
      },
      "message": "Moving schema annotations into juneau-common\n"
    },
    {
      "commit": "9ad1836f6900d73f0cadb8a065b843f9ac91a6b6",
      "tree": "9b3e4c575402f4a7bdbbe2982991842eb03ed193",
      "parents": [
        "f4a2441b76e487e149cfd4a972308b9e1110ca7e"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Tue Apr 14 07:50:17 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Tue Apr 14 07:50:17 2026 -0400"
      },
      "message": "Moving schema annotations into juneau-common\n"
    },
    {
      "commit": "f4a2441b76e487e149cfd4a972308b9e1110ca7e",
      "tree": "339bbb04cb078cbb4c22fbe2bc4c55f23eddb239",
      "parents": [
        "174dbdf3afd0ff89712bb9ba80fab433d4ee7b14"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Tue Apr 14 07:24:56 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Tue Apr 14 07:24:56 2026 -0400"
      },
      "message": "Moving schema annotations into juneau-common\n"
    },
    {
      "commit": "174dbdf3afd0ff89712bb9ba80fab433d4ee7b14",
      "tree": "20c552209ebd75048d2bf3ee6cb8e029dc0aa3ba",
      "parents": [
        "bf98bfa6126d8516cd113165625820d0eee61e6c"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon Apr 13 20:49:59 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon Apr 13 20:49:59 2026 -0400"
      },
      "message": "Moving schema annotations into juneau-common\n"
    },
    {
      "commit": "bf98bfa6126d8516cd113165625820d0eee61e6c",
      "tree": "1fba035b9f9eae89069d4e119f54be5f9be62027",
      "parents": [
        "2cb8df3050149458447fa475081bfd33409b232b"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon Apr 13 15:32:24 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon Apr 13 15:32:24 2026 -0400"
      },
      "message": "Moving schema annotations into juneau-common\n"
    },
    {
      "commit": "2cb8df3050149458447fa475081bfd33409b232b",
      "tree": "e32fdeb9fc20a111d4a6edfe38be931efbca71cc",
      "parents": [
        "d4792d3cd762b9c8341b02a5b10e465645926f43"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon Apr 13 15:10:24 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon Apr 13 15:10:24 2026 -0400"
      },
      "message": "Moving schema annotations into juneau-common\n"
    },
    {
      "commit": "d4792d3cd762b9c8341b02a5b10e465645926f43",
      "tree": "091de77fa21cad0a34598706df156c83e579faa7",
      "parents": [
        "761700ba9078838956280a9d661a41eb23c167ac"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon Apr 13 09:12:19 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon Apr 13 09:12:19 2026 -0400"
      },
      "message": "Moving schema annotations into juneau-common\n"
    },
    {
      "commit": "761700ba9078838956280a9d661a41eb23c167ac",
      "tree": "0fd70700ceb5fb1bd80ed52f5add4c417068a2e8",
      "parents": [
        "be630fb4096e0eace093dd9d5c14ea9f2ad2c5bc"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@users.noreply.github.com",
        "time": "Sat Apr 11 15:29:01 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 11 15:29:01 2026 -0400"
      },
      "message": "Bump com.squareup.okhttp3:okhttp-jvm from 5.2.0 to 5.3.2 #331."
    },
    {
      "commit": "be630fb4096e0eace093dd9d5c14ea9f2ad2c5bc",
      "tree": "fd92c330fbde8fbdaf8228ce560cd880dc0fb5bf",
      "parents": [
        "383ef016f96c7d01374ca4d7954b2a1a1ed3de90",
        "2253395c56ada8d60f8a9d6b2f94eb9b978723b5"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@users.noreply.github.com",
        "time": "Sat Apr 11 15:28:23 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 11 15:28:23 2026 -0400"
      },
      "message": "Merge pull request #331 from apache/dependabot/maven/com.squareup.okhttp3-okhttp-jvm-5.3.2\n\nBump com.squareup.okhttp3:okhttp-jvm from 5.2.0 to 5.3.2"
    },
    {
      "commit": "383ef016f96c7d01374ca4d7954b2a1a1ed3de90",
      "tree": "8a34c7f6071c8c6ca6303b6b6608410491f3caf0",
      "parents": [
        "93d30aa9229b7096f21a4f6de7c2c61ca95ff66d"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@users.noreply.github.com",
        "time": "Sat Apr 11 15:28:10 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 11 15:28:10 2026 -0400"
      },
      "message": "Bump org.apache.httpcomponents.client5:httpclient5 from 5.5.2 to 5.6 #332."
    },
    {
      "commit": "93d30aa9229b7096f21a4f6de7c2c61ca95ff66d",
      "tree": "c56248889e3dfa8a1b6be2502ef4202cbb388be4",
      "parents": [
        "9c6b51b0cc25382c33be85cebb27df85c7fa463a",
        "ebcbe89a238934b71040c3bdc374814480dbebdb"
      ],
      "author": {
        "name": "Gary Gregory",
        "email": "garydgregory@users.noreply.github.com",
        "time": "Sat Apr 11 15:27:02 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 11 15:27:02 2026 -0400"
      },
      "message": "Merge pull request #332 from apache/dependabot/maven/org.apache.httpcomponents.client5-httpclient5-5.6\n\nBump org.apache.httpcomponents.client5:httpclient5 from 5.5.2 to 5.6"
    },
    {
      "commit": "9c6b51b0cc25382c33be85cebb27df85c7fa463a",
      "tree": "120a651f95739ae4003f2c9f8e36999acc15fe80",
      "parents": [
        "06de6e0199b4584d56900466f80e94a8f06ccd33"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Sat Apr 11 15:22:04 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Sat Apr 11 15:22:04 2026 -0400"
      },
      "message": "Next-Gen RestClient\n"
    },
    {
      "commit": "06de6e0199b4584d56900466f80e94a8f06ccd33",
      "tree": "8f71255e6f94a10ee21a37c35fcd2b09e07ac9fb",
      "parents": [
        "c2711b80d52b47e9735710557d3864e05da6d365"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Fri Apr 10 12:06:35 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Fri Apr 10 12:06:35 2026 -0400"
      },
      "message": "@W-21931609 Improve Check cron alerting\n"
    },
    {
      "commit": "ebcbe89a238934b71040c3bdc374814480dbebdb",
      "tree": "75827950e4977805e5d5ac1ffaceb6da2c3cd055",
      "parents": [
        "c2711b80d52b47e9735710557d3864e05da6d365"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Apr 10 04:34:16 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 10 04:34:16 2026 +0000"
      },
      "message": "Bump org.apache.httpcomponents.client5:httpclient5 from 5.5.2 to 5.6\n\nBumps [org.apache.httpcomponents.client5:httpclient5](https://github.com/apache/httpcomponents-client) from 5.5.2 to 5.6.\n- [Changelog](https://github.com/apache/httpcomponents-client/blob/master/RELEASE_NOTES.txt)\n- [Commits](https://github.com/apache/httpcomponents-client/compare/rel/v5.5.2...rel/v5.6)\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.httpcomponents.client5:httpclient5\n  dependency-version: \u00275.6\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "2253395c56ada8d60f8a9d6b2f94eb9b978723b5",
      "tree": "a1ba4f238538f6073ff999ad719029da4d861572",
      "parents": [
        "c2711b80d52b47e9735710557d3864e05da6d365"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Apr 10 04:34:12 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 10 04:34:12 2026 +0000"
      },
      "message": "Bump com.squareup.okhttp3:okhttp-jvm from 5.2.0 to 5.3.2\n\nBumps [com.squareup.okhttp3:okhttp-jvm](https://github.com/square/okhttp) from 5.2.0 to 5.3.2.\n- [Changelog](https://github.com/square/okhttp/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/square/okhttp/compare/parent-5.2.0...parent-5.3.2)\n\n---\nupdated-dependencies:\n- dependency-name: com.squareup.okhttp3:okhttp-jvm\n  dependency-version: 5.3.2\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "c2711b80d52b47e9735710557d3864e05da6d365",
      "tree": "a2e83aac4e6c5f54948134e1318b3dd12bde0b3c",
      "parents": [
        "d1e0e9a0563a52f27c2208faf8a6972f5b3553ca"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Thu Apr 09 16:05:05 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Thu Apr 09 16:05:05 2026 -0400"
      },
      "message": "Next Generation RestClient\n"
    },
    {
      "commit": "d1e0e9a0563a52f27c2208faf8a6972f5b3553ca",
      "tree": "3cba48236bdded1ae31a0dee3de25ea7088ef99a",
      "parents": [
        "83728c6c709a32b442e6caa96242cb82b99b823b"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Thu Apr 09 15:36:17 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Thu Apr 09 15:36:17 2026 -0400"
      },
      "message": "Next Generation RestClient\n"
    },
    {
      "commit": "83728c6c709a32b442e6caa96242cb82b99b823b",
      "tree": "21c922d39532039329e27e0d09d3411f8fe69f53",
      "parents": [
        "c56362cf1062c5b3ca4a8741fab6e4117b3b2109"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Thu Apr 09 14:03:06 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Thu Apr 09 14:03:06 2026 -0400"
      },
      "message": "Next Generation RestClient\n"
    },
    {
      "commit": "c56362cf1062c5b3ca4a8741fab6e4117b3b2109",
      "tree": "b9a092fa0e88cae90e553f734441361254d16b32",
      "parents": [
        "41523a86ddc3c5d93fe966d0edb3cc74678a4628"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Thu Apr 09 12:48:33 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Thu Apr 09 12:48:33 2026 -0400"
      },
      "message": "Next Generation RestClient\n"
    },
    {
      "commit": "41523a86ddc3c5d93fe966d0edb3cc74678a4628",
      "tree": "022ee3051cbc2070878469449759ba0bc5d15bfe",
      "parents": [
        "5362629e756f490a57a66b8ce256763ef5945d39"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon Apr 06 17:26:29 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon Apr 06 17:26:29 2026 -0400"
      },
      "message": "Plan for RestClient transport abstraction\n"
    },
    {
      "commit": "5362629e756f490a57a66b8ce256763ef5945d39",
      "tree": "956e819a08322be3871ac3978be992977010d056",
      "parents": [
        "95629c194d202e0de9799ad02422bd52fc4e4884"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon Apr 06 08:44:10 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Mon Apr 06 08:44:10 2026 -0400"
      },
      "message": "Bean streaming APIs\n"
    },
    {
      "commit": "95629c194d202e0de9799ad02422bd52fc4e4884",
      "tree": "e0730974d823d23d94d4a07d285e75592c174ee0",
      "parents": [
        "04181851e3c821ecb468bbd210fc4bfdfa8e2964"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Sun Apr 05 12:54:37 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Sun Apr 05 12:54:37 2026 -0400"
      },
      "message": "Minor fixes\n"
    },
    {
      "commit": "04181851e3c821ecb468bbd210fc4bfdfa8e2964",
      "tree": "685a6b10a361a2f396dba4d5de91489d655a9364",
      "parents": [
        "aa8f207c5763e4fc62d0c411143c964a8ff18062"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Sun Apr 05 10:44:38 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Sun Apr 05 10:44:38 2026 -0400"
      },
      "message": "Unit tests\n"
    },
    {
      "commit": "aa8f207c5763e4fc62d0c411143c964a8ff18062",
      "tree": "b3dccb071cf80a82a76e43e24c45ecaa12b237db",
      "parents": [
        "7f54e8124a526ec5868f088128a2a2dc72b498d6"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Sat Apr 04 15:39:19 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Sat Apr 04 15:39:19 2026 -0400"
      },
      "message": "Add support for setting serializer/parser session properties as HTTP headers and query parameters\n"
    },
    {
      "commit": "7f54e8124a526ec5868f088128a2a2dc72b498d6",
      "tree": "b72f96f88c53081274ce370ae57718d986a5ddeb",
      "parents": [
        "dd40d489d5c4a9db9bc8d7b550fcb632e0fcde7d"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Sat Apr 04 14:06:17 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Sat Apr 04 14:06:17 2026 -0400"
      },
      "message": "Add support for setting Session properties via setProperty\n"
    },
    {
      "commit": "dd40d489d5c4a9db9bc8d7b550fcb632e0fcde7d",
      "tree": "c48f951f88ce18f892ecb74d7cbcb44bfddd4f98",
      "parents": [
        "48cadfde7ae0ec05ba19bce5bd492aaf9d95efb6"
      ],
      "author": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Sat Apr 04 11:39:01 2026 -0400"
      },
      "committer": {
        "name": "James Bognar",
        "email": "james.bognar@jamesbog-ltmjqf2.internal.salesforce.com",
        "time": "Sat Apr 04 11:39:01 2026 -0400"
      },
      "message": "Add support for setting Session properties via setProperty\n"
    }
  ],
  "next": "48cadfde7ae0ec05ba19bce5bd492aaf9d95efb6"
}
