)]}'
{
  "log": [
    {
      "commit": "db273fc655d2a0d69dd7228931912e5c703b2e70",
      "tree": "a548d4d92d50e1a589d72db8296a81cce8e18cd9",
      "parents": [
        "72b2ccb38be0e6d14267d01bee8d099e71d79fa7"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue May 05 03:16:22 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue May 05 03:16:22 2026 -1000"
      },
      "message": "AXIS2-6104 Null-check getOpMethod, sanitize test data\n\n- All four message receivers (gson + moshi, InOut + InOnly) now check\n  for null return from getOpMethod() and throw a clear AxisFault with\n  the operation name and service class, instead of NPE\n- Replace proprietary department names in pagination test with generic\n  \"Department A\" through \"Department O\"\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "72b2ccb38be0e6d14267d01bee8d099e71d79fa7",
      "tree": "3d19991a2e946e9124a0a1a861064172ff154410",
      "parents": [
        "e2db339418c6c4b1922950a8cbe812d729bfedf3"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue May 05 03:13:13 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue May 05 03:13:13 2026 -1000"
      },
      "message": "AXIS2-6104 Move shared RPC classes to library-agnostic package\n\nMoved Axis2JsonErrorResponse, JsonRpcFaultException, PaginatedResponse,\nand PaginationRequest from org.apache.axis2.json.gson.rpc to\norg.apache.axis2.json.rpc — a new shared package that neither gson\nnor moshi imports depend on.\n\nBefore: moshi.rpc imported gson.rpc classes, creating a misleading\ncross-dependency between two implementations that should be independent.\n\nAfter:\n  org.apache.axis2.json.rpc/       ← shared contract (no library imports)\n  org.apache.axis2.json.gson.rpc/  ← Gson-specific receivers + JsonUtils\n  org.apache.axis2.json.moshi.rpc/ ← Moshi-specific receivers + JsonUtils\n\nBoth gson and moshi receivers import from the shared rpc package.\nThe shared classes contain zero Gson or Moshi imports — they are\nplain POJOs serializable by any JSON library.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "e2db339418c6c4b1922950a8cbe812d729bfedf3",
      "tree": "7b51f999a2e9de1d677acb6f6e4480e63836c3db",
      "parents": [
        "715f48b6cc6a2da01fc68280a835e01c579fde79"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue May 05 03:06:36 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue May 05 03:06:36 2026 -1000"
      },
      "message": "AXIS2-6104 Bring Moshi JSON-RPC receivers to feature parity with Gson\n\nThe Moshi rpc/ package (JsonRpcMessageReceiver, JsonInOnlyRPCMessageReceiver,\nJsonUtils) now has identical error handling to the Gson equivalents:\n\n- JsonRpcFaultException detection: unwraps InvocationTargetException,\n  checks for JsonRpcFaultException, sets HTTP status + structured\n  Axis2JsonErrorResponse on the outgoing MessageContext\n- createSecureFault: new method in moshi JsonUtils with the same\n  CWE-209-safe opaque errorRef pattern (both 1-arg and 4-arg overloads)\n- ITE unwrap: all catch blocks now log the root cause, not the wrapper\n\nThe shared classes (Axis2JsonErrorResponse, JsonRpcFaultException,\nPaginatedResponse, PaginationRequest) live in gson.rpc and are\nreferenced by both implementations — they contain no Gson-specific\nimports and are serialization-library-agnostic POJOs.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "715f48b6cc6a2da01fc68280a835e01c579fde79",
      "tree": "521e5a4d7f08bc9d8e9f9672477a30cf7cd38473",
      "parents": [
        "1042167cb8d69b67e0cd21769f6eddedf9538598"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue May 05 03:01:29 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue May 05 03:01:29 2026 -1000"
      },
      "message": "AXIS2-6104 Sync message/errorMessage setters, restore Axis2/C anchor\n\n- Axis2JsonErrorResponse: setMessage() and setErrorMessage() now update\n  both fields to maintain the invariant that legacy and new fields always\n  carry the same value\n- toc.xml: restore Axis2/C Equivalent anchor using the correct encoded\n  form (#Axis2.2FC_Equivalent) instead of dropping to page root\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "1042167cb8d69b67e0cd21769f6eddedf9538598",
      "tree": "6f58dc9660a2984155f70da28e1bef9c3b5c68a5",
      "parents": [
        "e1ec5178de3bf7d6858408b2620cba754d138a32"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue May 05 02:58:58 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue May 05 02:58:58 2026 -1000"
      },
      "message": "AXIS2-6107 Fix broken anchor links, remove clustering docs, update Axis2/C URL\n\nSite anchor fixes:\n- http2-integration-guide.xml: \"HTTP/2\" → \"HTTP2\" in heading to prevent\n  slash encoding (.2F) in generated anchor ID\n- json-streaming-formatter.xml: \"Problem:\" → \"Problem -\" in section name\n  to prevent colon encoding (.3A) in generated anchor ID\n- toc.xml: 14 broken # anchor links corrected to match actual generated\n  IDs (markdown .md files produce heavily-encoded anchors with .28/.29\n  for parens and .E2.80.94 for em-dashes)\n- toc.xml: openapi-rest-userguide anchors updated (#Samples →\n  #Sample_Services_Overview, #Swagger_UI → #Interactive_Swagger_UI)\n- toc.xml: spring-boot-starter #containers → #Container_matrix\n\nClustering removal (section 17 already removed from site):\n- toc.xml: clustering-guide.html link removed\n- contents.xml.vm: clustering-guide.html link removed\n\nAxis2/C site URL:\n- index.xml: http://axis.apache.org/axis2/c/ →\n  https://axis.apache.org/axis2/c/core/ (HTTPS + correct path)\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "e1ec5178de3bf7d6858408b2620cba754d138a32",
      "tree": "e2bf647384d865e478b26e21270966710ce82ff2",
      "parents": [
        "4537881e399b7a8df3c9a822632209514dbba352"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon May 04 14:39:38 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue May 05 01:48:02 2026 -1000"
      },
      "message": "AXIS2-6104 Add legacy status/errorMessage fields for backward compatibility\n\nAxis2JsonErrorResponse now includes \"status\":\"FAILED\" and \"errorMessage\"\nalongside the new structured fields (error, errorRef, timestamp).  Existing\nclients that parse {\"status\":\"FAILED\",\"errorMessage\":\"...\"} continue to\nwork unchanged.  New clients use the structured error/errorRef/timestamp\nfields for correlation and retry logic.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "4537881e399b7a8df3c9a822632209514dbba352",
      "tree": "dec086ad58af1c222a442957029476a0979b99d0",
      "parents": [
        "e9f1c07da407a62248db6b667b548468bc3666b4"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon May 04 14:34:21 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue May 05 01:48:02 2026 -1000"
      },
      "message": "AXIS2-6104 Error contracts, JPA/Hibernate schema generation, and pagination\n\nPhase A — Structured error contracts for JSON-RPC services:\n- Axis2JsonErrorResponse: canonical error envelope with error code, message,\n  errorRef (UUID), timestamp, and optional retryAfter\n- JsonRpcFaultException: checked exception carrying HTTP status code (422/429/503)\n  that services throw instead of returning HTTP 200 with in-band error status\n- JsonRpcMessageReceiver: unwraps InvocationTargetException, detects\n  JsonRpcFaultException, sets HTTP_RESPONSE_STATE + serializes structured error\n  through the normal JSON formatter path (not SOAP fault path)\n- JsonUtils.createSecureFault: new overload sets structured error on outgoing\n  MessageContext for parse errors (400) and internal errors (500)\n- JsonInOnlyRPCMessageReceiver: same ITE unwrap fix for consistency\n- FinancialBenchmarkService: all validation paths converted from\n  .failed() returns to throw JsonRpcFaultException.validationError()\n- OpenApiSpecGenerator: ErrorResponse schema in components/schemas,\n  422/429/503 error responses on every operation, _meta.errorContract in\n  MCP catalog\n\nPhase B — OpenAPI schema introspection:\n- addComponents() generates request/response schemas from Java type\n  introspection via reflection on service method parameter/return POJOs\n- resolveServiceClass() uses service.getClassLoader() for WAR visibility,\n  hoisted outside operation loop to avoid redundant reflection\n- generateSchemaFromServiceClass() refactored with pre-resolved Class\u003c?\u003e\n  overload for addComponents() callers\n\nPhase JPA — JPA/Hibernate schema generation (new module: axis2-jpa-schema):\n- AnnotationIntrospector: reads @Entity, @Column, @Id, @GeneratedValue,\n  @ManyToOne, @OneToMany, @Version, @Transient, @Enumerated plus\n  configurable custom write-exclude annotations\n- HbmXmlIntrospector: parses Hibernate 3.0 DTD .hbm.xml files with\n  air-gapped DTD resolution, handles \u003cproperty\u003e, \u003cid\u003e, \u003cversion\u003e,\n  \u003cmany-to-one\u003e, \u003cset\u003e/\u003cbag\u003e/\u003clist\u003e, \u003ccomponent\u003e, nested \u003ccolumn\u003e,\n  sql-type overrides\n- EntitySchemaModel: unified mapping-style-agnostic representation\n- JpaSchemaGenerator: produces read schema (all fields) and write schema\n  (excludes @GeneratedValue IDs, @Version, audit fields) with $ref for\n  relationships\n- 29 tests including production-grade 70+ field HBM mapping\n\nPhase PG — Offset/limit pagination:\n- PaginatedResponse\u003cT\u003e: generic wrapper with data list + pagination\n  metadata (offset, limit, totalCount, hasMore)\n- PaginationRequest: safe defaults (limit\u003d50), maxLimit clamping (2000)\n- 22 tests covering enterprise patterns: large entity lists, virtual\n  scrolling, soft-delete filtering, page calculation for React UIs\n\nDocumentation:\n- AXIS2_MODERNIZATION_PLAN.md refreshed with completion status for all phases\n- toc.xml: added JPA/Hibernate Schema Generation (7.7) and Pagination (23.8)\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "e9f1c07da407a62248db6b667b548468bc3666b4",
      "tree": "30229b6e9c06f04a06358f07f9194b3fb22cc94d",
      "parents": [
        "0c753e67516be642d8812247a7294cccc8a56be5",
        "08d5d334b546dc014f47c76f82ef977c6e3f2717"
      ],
      "author": {
        "name": "Christian Ortlepp",
        "email": "christian.ortlepp@hypergene.com",
        "time": "Tue May 05 08:15:43 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 05 08:15:43 2026 +0200"
      },
      "message": "Merge pull request #1186 from apache/dependabot/maven/com.sun.xml.messaging.saaj-saaj-impl-3.0.5\n\nbuild(deps): bump com.sun.xml.messaging.saaj:saaj-impl from 3.0.4 to 3.0.5"
    },
    {
      "commit": "0c753e67516be642d8812247a7294cccc8a56be5",
      "tree": "0e1fcf6de76a23ee5661acf1e31142cd10757f3a",
      "parents": [
        "876e806a23dfcb6607fa3aac3b36e848fae412f7"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon May 04 09:44:54 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon May 04 09:44:54 2026 -1000"
      },
      "message": "AXIS2-6103 Fix remaining initialWindowSize inconsistencies and invalid JSON samples\n\nAddress Gemini review findings:\n- Update WildFly guide: http/https listener examples and summary table\n  still had 131072 (128KB), now 2097152 (2MB)\n- Update http2-integration-guide: protocol selection example had 32768,\n  now 2097152\n- Fix invalid JSON in Spring Boot userguide samples: unquoted string\n  values and non-standard email domain (use user@example.org per RFC 2606)\n"
    },
    {
      "commit": "876e806a23dfcb6607fa3aac3b36e848fae412f7",
      "tree": "53d675236d8c9807d5e8cea31d3c2d7535c3ff70",
      "parents": [
        "df812ef92d9ee42bc68e8d33e0090e74569595cf"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon May 04 09:42:37 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon May 04 09:42:37 2026 -1000"
      },
      "message": "AXIS2-6103 Fix remaining 65536 initialWindowSize across all HTTP/2 docs\n\nUpdate all config examples and tables in WildFly, Tomcat, Spring Boot,\nand integration guides to use initialWindowSize\u003d2097152 (2MB) instead\nof 65536 (64KB). The 64KB value caused ~156 WINDOW_UPDATE round-trips\nper stream for 10MB responses.\n\nServer-side buffer/flush settings (buffer-size, streamingBufferSize,\nmoshiStreamingBufferSize) remain at 64KB — those are serialization\nflush intervals, not flow-control windows.\n"
    },
    {
      "commit": "df812ef92d9ee42bc68e8d33e0090e74569595cf",
      "tree": "c99d166ffa7ae9052294bfb85759b7c8218a99df",
      "parents": [
        "5271437b28951f3af8749f81c3863857ef16df9a"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon May 04 09:29:16 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon May 04 09:29:16 2026 -1000"
      },
      "message": "AXIS2-6103 Correct HTTP/2 initialWindowSize guidance in transport docs\n\nThe docs recommended setting the client-side initialWindowSize to 65536\n(64KB) to \"align\" with the server-side FlushingOutputStream 64KB flush\ninterval. These are independent settings: the flush interval controls\nwhen serialized bytes enter the HTTP/2 framing layer (server-side,\n64KB is correct), while initialWindowSize controls how much response\ndata can be in-flight per stream before the sender pauses for a\nWINDOW_UPDATE (client-side, 64KB causes ~156 round-trips for a 10MB\nresponse).\n\nChanges:\n- Raise default initialWindowSize from 65536 to 2097152 (2MB) in basic\n  config and parameter table\n- Add callout box explaining flush interval vs flow-control window\n- Add \"Tuning for Different Workloads\" section with guidance for\n  many-small, few-large, and mixed traffic patterns\n- Add \"Client-side vs server-side window\" subsection explaining why\n  client-side tuning matters more for large-response workloads\n- Fix Enterprise Big Data config: maxConcurrentStreams 50-\u003e4,\n  initialWindowSize 128KB-\u003e8MB, maxConnPerRoute 10-\u003e32\n- Update WildFly guide with correction note on window alignment\n- Fix simplified example initialWindowSize from 65536 to 2097152\n"
    },
    {
      "commit": "08d5d334b546dc014f47c76f82ef977c6e3f2717",
      "tree": "3bf406fd0207385b66a61a21fe91261b42ece2c8",
      "parents": [
        "5271437b28951f3af8749f81c3863857ef16df9a"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon May 04 17:38:41 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 04 17:38:41 2026 +0000"
      },
      "message": "build(deps): bump com.sun.xml.messaging.saaj:saaj-impl\n\nBumps com.sun.xml.messaging.saaj:saaj-impl from 3.0.4 to 3.0.5.\n\n---\nupdated-dependencies:\n- dependency-name: com.sun.xml.messaging.saaj:saaj-impl\n  dependency-version: 3.0.5\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "5271437b28951f3af8749f81c3863857ef16df9a",
      "tree": "6dd5b1166825c99877617755009c2389dfff6f25",
      "parents": [
        "53aaf186bdb6d8ba501cca2a7e1140601052316e",
        "b841d58df0c28fdf9e43e707d48b4c8ad52be829"
      ],
      "author": {
        "name": "Christian Ortlepp",
        "email": "christian.ortlepp@hypergene.com",
        "time": "Thu Apr 30 09:51:34 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 30 09:51:34 2026 +0200"
      },
      "message": "Merge pull request #1185 from apache/dependabot/maven/org.apache.neethi-neethi-3.2.2\n\nbuild(deps): bump org.apache.neethi:neethi from 3.2.1 to 3.2.2"
    },
    {
      "commit": "53aaf186bdb6d8ba501cca2a7e1140601052316e",
      "tree": "7091a4baba072f9314996985d9b5d693cd8fb61b",
      "parents": [
        "d5e68d9e583490bf8e9be070fc91c33e787b4263",
        "3c994c3a25da61a1deaf13d168ccf20fb16862b7"
      ],
      "author": {
        "name": "Christian Ortlepp",
        "email": "christian.ortlepp@hypergene.com",
        "time": "Thu Apr 30 09:50:43 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 30 09:50:43 2026 +0200"
      },
      "message": "Merge pull request #1184 from apache/dependabot/maven/swagger.version-2.2.49\n\nbuild(deps): bump swagger.version from 2.2.48 to 2.2.49"
    },
    {
      "commit": "b841d58df0c28fdf9e43e707d48b4c8ad52be829",
      "tree": "7756fa24d2dfbd53300ae7fc8559249de52325eb",
      "parents": [
        "d5e68d9e583490bf8e9be070fc91c33e787b4263"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Apr 29 13:45:19 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 29 13:45:19 2026 +0000"
      },
      "message": "build(deps): bump org.apache.neethi:neethi from 3.2.1 to 3.2.2\n\nBumps org.apache.neethi:neethi from 3.2.1 to 3.2.2.\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.neethi:neethi\n  dependency-version: 3.2.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": "3c994c3a25da61a1deaf13d168ccf20fb16862b7",
      "tree": "7091a4baba072f9314996985d9b5d693cd8fb61b",
      "parents": [
        "d5e68d9e583490bf8e9be070fc91c33e787b4263"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Apr 29 13:43:55 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 29 13:43:55 2026 +0000"
      },
      "message": "build(deps): bump swagger.version from 2.2.48 to 2.2.49\n\nBumps `swagger.version` from 2.2.48 to 2.2.49.\n\nUpdates `io.swagger.core.v3:swagger-core` from 2.2.48 to 2.2.49\n- [Release notes](https://github.com/swagger-api/swagger-core/releases)\n- [Commits](https://github.com/swagger-api/swagger-core/compare/v2.2.48...v2.2.49)\n\nUpdates `io.swagger.core.v3:swagger-models` from 2.2.48 to 2.2.49\n\nUpdates `io.swagger.core.v3:swagger-annotations` from 2.2.48 to 2.2.49\n\n---\nupdated-dependencies:\n- dependency-name: io.swagger.core.v3:swagger-core\n  dependency-version: 2.2.49\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: io.swagger.core.v3:swagger-models\n  dependency-version: 2.2.49\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: io.swagger.core.v3:swagger-annotations\n  dependency-version: 2.2.49\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "d5e68d9e583490bf8e9be070fc91c33e787b4263",
      "tree": "f906787ada5dcff0d414b937b6ee80d4505dadcf",
      "parents": [
        "ce14403cd85b0f18db2cc11874a68340feb8eeca",
        "f43225f16bd32b8b07b011feb0ce36ec872562ff"
      ],
      "author": {
        "name": "Christian Ortlepp",
        "email": "christian.ortlepp@hypergene.com",
        "time": "Tue Apr 28 07:54:44 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 28 07:54:44 2026 +0200"
      },
      "message": "Merge pull request #1183 from apache/dependabot/maven/org.apache.maven.plugins-maven-invoker-plugin-3.10.0\n\nbuild(deps): bump org.apache.maven.plugins:maven-invoker-plugin from 3.9.1 to 3.10.0"
    },
    {
      "commit": "f43225f16bd32b8b07b011feb0ce36ec872562ff",
      "tree": "f906787ada5dcff0d414b937b6ee80d4505dadcf",
      "parents": [
        "ce14403cd85b0f18db2cc11874a68340feb8eeca"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Apr 27 17:28:39 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 27 17:28:39 2026 +0000"
      },
      "message": "build(deps): bump org.apache.maven.plugins:maven-invoker-plugin\n\nBumps [org.apache.maven.plugins:maven-invoker-plugin](https://github.com/apache/maven-invoker-plugin) from 3.9.1 to 3.10.0.\n- [Commits](https://github.com/apache/maven-invoker-plugin/compare/maven-invoker-plugin-3.9.1...maven-invoker-plugin-3.10.0)\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.maven.plugins:maven-invoker-plugin\n  dependency-version: 3.10.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "ce14403cd85b0f18db2cc11874a68340feb8eeca",
      "tree": "4fa6eecd82f2999071381efcd8adffc9f07fa728",
      "parents": [
        "4a7dd73253b28b050113686e2741d2f98a7d57a6",
        "d303cb08e44975f41d37c8b8cd4dff752cb36558"
      ],
      "author": {
        "name": "Christian Ortlepp",
        "email": "christian.ortlepp@hypergene.com",
        "time": "Fri Apr 24 16:53:02 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 24 16:53:02 2026 +0200"
      },
      "message": "Merge pull request #1181 from apache/dependabot/maven/org.springframework.boot-spring-boot-dependencies-4.0.6\n\nbuild(deps): bump org.springframework.boot:spring-boot-dependencies from 4.0.5 to 4.0.6"
    },
    {
      "commit": "4a7dd73253b28b050113686e2741d2f98a7d57a6",
      "tree": "616e1d8dd789257c47f9e06e6f8bce2976fc2862",
      "parents": [
        "7bf47b1e0010d561697d6142f94942eda4021354",
        "c442939aa70b78ea16c38768f51c1105bd3cb557"
      ],
      "author": {
        "name": "Christian Ortlepp",
        "email": "christian.ortlepp@hypergene.com",
        "time": "Fri Apr 24 16:52:55 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 24 16:52:55 2026 +0200"
      },
      "message": "Merge pull request #1182 from apache/dependabot/maven/com.google.code.gson-gson-2.14.0\n\nbuild(deps): bump com.google.code.gson:gson from 2.13.2 to 2.14.0"
    },
    {
      "commit": "7bf47b1e0010d561697d6142f94942eda4021354",
      "tree": "be67434e6ef35d4d5c9c67fa22026ff93806b95d",
      "parents": [
        "1e62c7aafe4251bb268498c6115d094df5ba47fd",
        "7aa3eb0977fd75042ef061026b6def8e5a99a7a0"
      ],
      "author": {
        "name": "Christian Ortlepp",
        "email": "christian.ortlepp@hypergene.com",
        "time": "Fri Apr 24 16:52:39 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 24 16:52:39 2026 +0200"
      },
      "message": "Merge pull request #1180 from apache/dependabot/maven/activemq.version-6.2.5\n\nbuild(deps-dev): bump activemq.version from 6.2.4 to 6.2.5"
    },
    {
      "commit": "c442939aa70b78ea16c38768f51c1105bd3cb557",
      "tree": "76cc95f659147b800ba120d81e5196f372a18496",
      "parents": [
        "1e62c7aafe4251bb268498c6115d094df5ba47fd"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Apr 24 13:45:25 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 24 13:45:25 2026 +0000"
      },
      "message": "build(deps): bump com.google.code.gson:gson from 2.13.2 to 2.14.0\n\nBumps [com.google.code.gson:gson](https://github.com/google/gson) from 2.13.2 to 2.14.0.\n- [Release notes](https://github.com/google/gson/releases)\n- [Changelog](https://github.com/google/gson/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/google/gson/compare/gson-parent-2.13.2...gson-parent-2.14.0)\n\n---\nupdated-dependencies:\n- dependency-name: com.google.code.gson:gson\n  dependency-version: 2.14.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "d303cb08e44975f41d37c8b8cd4dff752cb36558",
      "tree": "ec5dca446b3df0a201aa96d9cbbcee507b59e8c8",
      "parents": [
        "1e62c7aafe4251bb268498c6115d094df5ba47fd"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Apr 24 13:43:12 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 24 13:43:12 2026 +0000"
      },
      "message": "build(deps): bump org.springframework.boot:spring-boot-dependencies\n\nBumps [org.springframework.boot:spring-boot-dependencies](https://github.com/spring-projects/spring-boot) 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-dependencies\n  dependency-version: 4.0.6\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "7aa3eb0977fd75042ef061026b6def8e5a99a7a0",
      "tree": "be67434e6ef35d4d5c9c67fa22026ff93806b95d",
      "parents": [
        "1e62c7aafe4251bb268498c6115d094df5ba47fd"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Apr 24 13:42:29 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 24 13:42:29 2026 +0000"
      },
      "message": "build(deps-dev): bump activemq.version from 6.2.4 to 6.2.5\n\nBumps `activemq.version` from 6.2.4 to 6.2.5.\n\nUpdates `org.apache.activemq:activemq-broker` from 6.2.4 to 6.2.5\n- [Release notes](https://github.com/apache/activemq/releases)\n- [Commits](https://github.com/apache/activemq/compare/activemq-6.2.4...activemq-6.2.5)\n\nUpdates `org.apache.activemq.tooling:activemq-maven-plugin` from 6.2.4 to 6.2.5\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.activemq:activemq-broker\n  dependency-version: 6.2.5\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n- dependency-name: org.apache.activemq.tooling:activemq-maven-plugin\n  dependency-version: 6.2.5\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "1e62c7aafe4251bb268498c6115d094df5ba47fd",
      "tree": "2403e987eee9646f6176d7d1a5d607496987a7c3",
      "parents": [
        "8e0ffc7f9b6450d24711123a91f8aa74648a5997",
        "d80da8eb3c3db96a6c29604e273d2215a2b8e288"
      ],
      "author": {
        "name": "Christian Ortlepp",
        "email": "christian.ortlepp@hypergene.com",
        "time": "Fri Apr 24 14:57:40 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 24 14:57:40 2026 +0200"
      },
      "message": "Merge pull request #1179 from apache/dependabot/maven/commons-io-commons-io-2.22.0\n\nbuild(deps): bump commons-io:commons-io from 2.21.0 to 2.22.0"
    },
    {
      "commit": "d80da8eb3c3db96a6c29604e273d2215a2b8e288",
      "tree": "2403e987eee9646f6176d7d1a5d607496987a7c3",
      "parents": [
        "8e0ffc7f9b6450d24711123a91f8aa74648a5997"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Apr 23 13:43:49 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 23 13:43:49 2026 +0000"
      },
      "message": "build(deps): bump commons-io:commons-io from 2.21.0 to 2.22.0\n\nBumps commons-io:commons-io from 2.21.0 to 2.22.0.\n\n---\nupdated-dependencies:\n- dependency-name: commons-io:commons-io\n  dependency-version: 2.22.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "8e0ffc7f9b6450d24711123a91f8aa74648a5997",
      "tree": "525a530226f4f88e0dcbd776697fb62398fd54d3",
      "parents": [
        "daf66db5fbc5407d5198fa120571e4a671db14cc"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue Apr 21 17:57:10 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue Apr 21 18:26:00 2026 -1000"
      },
      "message": "Add field filtering documentation to Spring Boot userguide\n\nDocuments the ?fields\u003d query parameter with configuration, usage\nexamples (flat and multi-level dot-notation), a 97% payload reduction\nexample, competitive comparison table (Spring, GraphQL, gRPC, Django,\nFastAPI), and Axis2/C parity notes.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "daf66db5fbc5407d5198fa120571e4a671db14cc",
      "tree": "e78b6fb8489b4f2009a1d044a44eee182a77ab6d",
      "parents": [
        "64f835429cd0591deb319b78308c51102622edbf"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue Apr 21 17:57:10 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue Apr 21 18:02:51 2026 -1000"
      },
      "message": "Add field filtering documentation to Spring Boot userguide\n\nDocuments the ?fields\u003d query parameter with configuration, usage\nexamples (flat and multi-level dot-notation), a 97% payload reduction\nexample, competitive comparison table (Spring, GraphQL, gRPC, Django,\nFastAPI), and Axis2/C parity notes.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "64f835429cd0591deb319b78308c51102622edbf",
      "tree": "625bf913b4f38bda0393bc35cf801a8e92423779",
      "parents": [
        "a94e1c5d192464a43176983b12a00230e6018f82"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue Apr 21 17:07:16 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue Apr 21 17:25:59 2026 -1000"
      },
      "message": "Add recursive multi-level dot-notation field filtering\n\nExtends ?fields\u003d to support arbitrary depth: ?fields\u003ddata.calcs.ticker\nwalks into \"data\" (Map), then \"calcs\" (List of Maps), then filters\neach element to keep only \"ticker\" — removing 126 of 127 fields per\nelement without any service-side changes.\n\nThe key change: writeFilteredNested now re-parses its sub-fields for\ndots at each level and recurses. A new writeFilteredMap method handles\nMap\u003cString, Object\u003e containers with recursive descent — the pattern\nused by JSON-RPC services that return parsed JSON as nested Maps.\n\nThis enables 97%+ payload reduction on services returning large nested\nMap/Collection structures (e.g., 5.4MB response with 127 fields per\nrecord filtered to ~150KB keeping 5 fields).\n\nNew unit tests (3 tests modeling Map-of-List-of-Map pattern):\n- testTwoLevelDotNotationFiltersMapsRecursively\n- testTwoLevelDotNotationMultipleSubFields\n- testTwoLevelDotNotation97PercentReduction\n\nThe Axis2/C implementation supports single-level dot-notation only.\nMulti-level is an Axis2/Java extension documented in the Javadoc.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "a94e1c5d192464a43176983b12a00230e6018f82",
      "tree": "cc21de78a7c526c4dfe324dca94b24f89ecf820b",
      "parents": [
        "41ff480e9b9a407ace486ecf0dd6a295870dc678"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue Apr 21 14:09:18 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue Apr 21 14:31:18 2026 -1000"
      },
      "message": "Remove Castor databinding sample and dependencies\n\nCastor XML binding library (org.codehaus.castor 1.4.1) has been\nunmaintained since 2016 and its code generation fails silently on\nmodern JDKs, causing the distribution integration test to fail with\n\"package samples.databinding.data does not exist\".\n\nThis was the root cause of the GHA CI build failure — the Castor\nCastorSourceGenerator Ant task produced no output, then the javac\nstep failed because the generated data classes were missing.\n\nRemoved:\n- modules/samples/databinding (10 files: sample source, build.xml,\n  WSDL, XSD, Castor config)\n- Castor dependency-copy from distribution POM (castor-core,\n  castor-codegen, castor-xml, castor-xml-schema)\n- Castor version property from distribution POM\n- Databinding Ant test step from distribution integration test\n- Databinding sample description from userguide-samples.xml\n\nThe remaining sample tests (mtom, faulthandling, webapp) are unaffected.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "41ff480e9b9a407ace486ecf0dd6a295870dc678",
      "tree": "6079230922e50d875a333e95a88f60c4633ccaec",
      "parents": [
        "d31226a052efe8e6bb1efb75220aeb6de26d8e99"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue Apr 21 13:19:41 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue Apr 21 13:23:36 2026 -1000"
      },
      "message": "AXIS2-6040 Fix javadoc build: source 8-\u003e17, legacyMode for javac-shaded\n\nTwo issues causing GHA CI failure on all JDK versions:\n\n1. maven-javadoc-plugin was configured with \u003csource\u003e8\u003c/source\u003e but the\n   project compiles at Java 17 (maven.compiler.release\u003d17). Any source\n   file using Java 9+ features would break javadoc generation. Changed\n   to \u003csource\u003e${maven.compiler.release}\u003c/source\u003e to stay in sync.\n\n2. javac-shaded-9+181-r4173-1.jar (transitive via Error Prone in\n   codegen) has an invalid automatic module name starting with \u00279\u0027.\n   Added legacyMode\u003dtrue to skip module resolution — safe because\n   Axis2 uses Automatic-Module-Name manifest entries, not\n   module-info.java.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "d31226a052efe8e6bb1efb75220aeb6de26d8e99",
      "tree": "bb25d7e5a88bda1e5f11b0eb9241710ff67214ab",
      "parents": [
        "1c26a30a16f176e7e46ba5c1a19effcca83d1c40"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue Apr 21 12:55:29 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue Apr 21 12:55:29 2026 -1000"
      },
      "message": "AXIS2-6106 Remove unmaintained XMPP transport module\n\nThe XMPP transport depends on jivesoftware:smack (circa 2008) which\nhas not been updated in 18 years. The modern Smack library\n(org.igniterealtime.smack 4.x) has a completely incompatible API.\nNo known users of Axis2 XMPP transport exist.\n\nRemoved:\n- modules/transport/xmpp (14 source files)\n- src/site/xdoc/docs/xmpp-transport.xml\n- Dependencies from distribution, webapp, and apidocs POMs\n- Module declaration from parent POM\n- TOC entry from site docs\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "1c26a30a16f176e7e46ba5c1a19effcca83d1c40",
      "tree": "8d48858fe6efac77afc8c6f272a44151360011d9",
      "parents": [
        "93a795320e41df3841d8e11fba36140ee33b5236"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue Apr 21 06:07:38 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue Apr 21 06:07:38 2026 -1000"
      },
      "message": "AXIS2-6105 Remove OSGi bundle packaging from 7 transport modules\n\nConvert all transport modules from \u003cpackaging\u003ebundle\u003c/packaging\u003e to\n\u003cpackaging\u003ejar\u003c/packaging\u003e and remove the maven-bundle-plugin\nconfiguration. OSGi missed the Jakarta EE 9+ transition and the\nmaven-bundle-plugin is no longer actively maintained.\n\nAutomatic-Module-Name (AXIS2-6040) is now served via maven-jar-plugin\nfor all 7 modules, providing stable Java 9+ JPMS module identity:\n\n  axis2-transport-base   -\u003e org.apache.axis2.transport.base\n  axis2-transport-local  -\u003e org.apache.axis2.transport.local\n  axis2-transport-tcp    -\u003e org.apache.axis2.transport.tcp\n  axis2-transport-udp    -\u003e org.apache.axis2.transport.udp\n  axis2-transport-jms    -\u003e org.apache.axis2.transport.jms\n  axis2-transport-mail   -\u003e org.apache.axis2.transport.mail\n  axis2-transport-xmpp   -\u003e org.apache.axis2.transport.xmpp\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "93a795320e41df3841d8e11fba36140ee33b5236",
      "tree": "9b92f6d72f88d0819e3a2351d2533bbcc4eaf8db",
      "parents": [
        "d208475d459e2c9e0bb2579fee8e57caab77b876"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue Apr 21 05:25:32 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue Apr 21 05:25:32 2026 -1000"
      },
      "message": "AXIS2-6040 Fix bundle module and remove proprietary org reference\n\n- transport-local uses \u003cpackaging\u003ebundle\u003c/packaging\u003e, so the\n  maven-jar-plugin config was silently ignored. Move the\n  Automatic-Module-Name into the maven-bundle-plugin \u003cinstructions\u003e\n  block where it actually gets written to the manifest.\n\n- Remove \"Alpha Theory\" organization from developer entry in parent\n  POM — ASF projects must be vendor-neutral.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "d208475d459e2c9e0bb2579fee8e57caab77b876",
      "tree": "f4319711da5e9108e31549c6ffbb264a49661130",
      "parents": [
        "2cdf276da9f66ddf111078b6326424f6563a043f"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue Apr 21 05:16:39 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue Apr 21 05:16:39 2026 -1000"
      },
      "message": "AXIS2-6040 Add Automatic-Module-Name to all 24 JAR-producing modules\n\nEach module now defines its own Automatic-Module-Name in the\nmaven-jar-plugin configuration with hyphens replaced by dots:\n\n  axis2-kernel           -\u003e org.apache.axis2.kernel\n  axis2-json             -\u003e org.apache.axis2.json\n  axis2-transport-http   -\u003e org.apache.axis2.transport.http\n  axis2-resource-bundle  -\u003e org.apache.axis2.resource.bundle\n  (... 20 more modules)\n\nA global parent POM approach using ${project.artifactId} was attempted\npreviously but produced invalid module names because Java module names\ncannot contain hyphens. The per-module approach avoids this by\nexplicitly declaring each name.\n\nThis is a passive manifest attribute — it has no effect on the\nclasspath. It only provides a stable module name for users who use\nJava 9+ JPMS with module-info.java, resolving the \"unstable module\nname\" IDE warnings reported in this issue.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "2cdf276da9f66ddf111078b6326424f6563a043f",
      "tree": "5f46313c0531d6a64053554687f2fb21be241fc1",
      "parents": [
        "0ec484b58328dabfa1d10ede3cf0d4ffc15ae232"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue Apr 21 04:32:26 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue Apr 21 04:51:39 2026 -1000"
      },
      "message": "Add GSON parity test and fix field visibility for test inheritance\n\nGsonFieldFilteringMessageFormatterTest extends the Moshi test class\nand overrides setUp() to use JSONStreamingMessageFormatter as the\ndelegate. All field filtering tests (flat + nested + 127-field +\ndot-notation) now run against both Moshi and GSON formatters.\n\nParent test class fields changed from private to protected to enable\nsubclass override of setUp().\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "0ec484b58328dabfa1d10ede3cf0d4ffc15ae232",
      "tree": "f099547cb0e39c5ada457a4892f278a799319cb0",
      "parents": [
        "384f166ec42a82f86648b2c96e7ec722867fd7fe"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue Apr 21 04:02:19 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue Apr 21 04:51:39 2026 -1000"
      },
      "message": "Add nested dot-notation field filtering to both Moshi and GSON formatters\n\nExtends ?fields\u003d to support paths like ?fields\u003dstatus,items.id which\nfilters inside nested objects and collections. Both\nMoshiStreamingMessageFormatter and JSONStreamingMessageFormatter now\nsupport the same filtering behavior for full parity.\n\nEach element in a List\u003cRecord\u003e with 127 fields can be filtered down\nto 1 field during streaming serialization — no capture buffer, no\npost-processing.\n\nKey changes (both formatters):\n- Parse dot-notation into top-level + nested specs (two-phase filter)\n- Handle Collection, Map, and single POJO containers\n- Request-scoped field cache avoids repeated reflection in loops\n- setAccessible inside try block, catches SecurityException\n- Log injection prevention on field names in warn messages\n- One level of dot-notation supported (container.field); documented\n- Unused fallbackAdapter parameter removed from Moshi formatter\n\nNew unit tests (5 nested + 3 flat \u003d 8 new tests):\n- testNestedDotNotationKeepsOneFieldPerElement\n- testNestedDotNotationKeepsFiveFieldsPerElement\n- testNestedDotNotation126of127FieldsRemoved (\u003e95% payload reduction)\n- testNestedDotNotationNonexistentSubField\n- testNoDotsPassesThrough (backward compatibility)\n\nCompatible with Axis2/C nested filtering deployed on penguin.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "384f166ec42a82f86648b2c96e7ec722867fd7fe",
      "tree": "5f833c8db8b298a6d013823fe4deb7e2cfd0a04f",
      "parents": [
        "39d7cc2b784d27cb1d3e80167bb8f898682c5428"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 19:57:20 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue Apr 21 04:51:39 2026 -1000"
      },
      "message": "Fix parseResponse() to use explicit UTF-8 charset\n\nPrevents platform-dependent test failures on non-UTF-8 systems\n(e.g., Windows with windows-1252 default). Consistent with the\nexisting toString(\"UTF-8\") call at line 111.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "39d7cc2b784d27cb1d3e80167bb8f898682c5428",
      "tree": "28e915ed82743400650b0f250dffbfc4c6dc016e",
      "parents": [
        "7577447de7c5f648a3eb700057518cd8723136a4"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 19:48:00 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue Apr 21 04:51:39 2026 -1000"
      },
      "message": "Use ReflectiveOperationException in WideRecord test helper\n\nNarrow catch blocks from generic Exception to\nReflectiveOperationException and throw AssertionError for clearer\ntest failure diagnostics.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "7577447de7c5f648a3eb700057518cd8723136a4",
      "tree": "313e3aa286b8af86652e02bdf9f2bf82a9052ede",
      "parents": [
        "0a1600a5fc0556a8a674a9c0472cb6297c0349a7"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 19:44:14 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue Apr 21 04:51:39 2026 -1000"
      },
      "message": "Add 127-field unit tests for field filtering at scale\n\nTest that ?fields\u003d correctly selects a small subset from a response\nobject with 127 fields (mixed String, double, int, long, boolean).\nThree new tests:\n- testFilter127FieldsKeepOne: 126 of 127 fields filtered, 1 kept\n- testFilter127FieldsKeepFive: 122 filtered, 5 kept across all types\n- testFilter127FieldsPayloadSizeReduction: \u003e90% payload reduction\n  verified (full response \u003e1KB, filtered \u003c200 bytes)\n\nUses generic field names (s0-s29, d0-d39, i0-i24, l0-l19, b0-b11)\nwith programmatic initialization via reflection.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "0a1600a5fc0556a8a674a9c0472cb6297c0349a7",
      "tree": "af4b7ea90535ce93e155d92aeb0ca1b96d264390",
      "parents": [
        "06435d01562a0c481803c90f8e545dcc441cda7a",
        "b21469bef794093a00b46bf6bb5faff5cefa71ad"
      ],
      "author": {
        "name": "Christian Ortlepp",
        "email": "christian.ortlepp@hypergene.com",
        "time": "Tue Apr 21 10:13:55 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 21 10:13:55 2026 +0200"
      },
      "message": "Merge pull request #1178 from apache/dependabot/maven/org.apache.httpcomponents.client5-httpclient5-5.6.1\n\nbuild(deps): bump org.apache.httpcomponents.client5:httpclient5 from 5.6 to 5.6.1"
    },
    {
      "commit": "b21469bef794093a00b46bf6bb5faff5cefa71ad",
      "tree": "af4b7ea90535ce93e155d92aeb0ca1b96d264390",
      "parents": [
        "06435d01562a0c481803c90f8e545dcc441cda7a"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Apr 21 07:17:54 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 21 07:17:54 2026 +0000"
      },
      "message": "build(deps): 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  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "06435d01562a0c481803c90f8e545dcc441cda7a",
      "tree": "46766cad6c9c22378aab7e5e82027ac8647a0130",
      "parents": [
        "b8b034ffdd7151933e2b75676ed63899281ba07b",
        "ed07ee098c9a0abf3660b89b01aa67d5d575401e"
      ],
      "author": {
        "name": "Christian Ortlepp",
        "email": "christian.ortlepp@hypergene.com",
        "time": "Tue Apr 21 09:09:52 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 21 09:09:52 2026 +0200"
      },
      "message": "Merge pull request #1176 from apache/dependabot/maven/maven.version-3.9.15\n\nbuild(deps): bump maven.version from 3.9.14 to 3.9.15"
    },
    {
      "commit": "b8b034ffdd7151933e2b75676ed63899281ba07b",
      "tree": "0573c7b38e9b14633848aa87a5f9dc974e8eb4cf",
      "parents": [
        "67c9cdf8b885e8c19b3a9f3afdadabbb948d249b",
        "541a27f74a0ecf333420bac536427c64e4f9cfdf"
      ],
      "author": {
        "name": "Christian Ortlepp",
        "email": "christian.ortlepp@hypergene.com",
        "time": "Tue Apr 21 09:09:42 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 21 09:09:42 2026 +0200"
      },
      "message": "Merge pull request #1177 from apache/dependabot/maven/spring.version-7.0.7\n\nbuild(deps): bump spring.version from 7.0.6 to 7.0.7"
    },
    {
      "commit": "67c9cdf8b885e8c19b3a9f3afdadabbb948d249b",
      "tree": "8b7678d672b812abbe00bd35e96456ba10c13c5a",
      "parents": [
        "e4005430cc07a05d76e510ca3a36ca15cb5fe73c"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 14:42:20 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 14:42:20 2026 -1000"
      },
      "message": "Fix apidocs site build: exclude Maven plugins, update JDK link to 17\n\nRemove Maven plugin modules (aar, mar, java2wsdl, wsdl2code, repo,\nxsd2java, simple-server, ant) from the aggregated Javadoc. Their Mojo\nsources import Maven API classes not on the Javadoc classpath, causing\nunresolvable symbol errors. Plugin Javadoc belongs in each plugin\u0027s\nown site, not the aggregated API docs.\n\nUpdate JDK Javadoc link from Java 7 to Java 17 (the minimum supported\nversion). Oracle redirects the old Java 7 URL which causes Javadoc\nlink resolution failures.\n"
    },
    {
      "commit": "e4005430cc07a05d76e510ca3a36ca15cb5fe73c",
      "tree": "495b2faa45599a3c4ac6d8f317a4917ae81b1bcc",
      "parents": [
        "e2d6e46fcb93f821914576760702251f9f99c1e5"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 13:56:30 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 13:56:30 2026 -1000"
      },
      "message": "AXIS2-5762 Register new transport port fields in MessageContextChangeTest\n\nMessageContextChangeTest maintains a known field list to detect\nunassessed changes to MessageContext. Add TRANSPORT_LOCAL_PORT and\nTRANSPORT_REMOTE_PORT to the known list (expected count 76 → 78).\n\nThese are static final String constants that do not participate in\nMessageContext serialization — no save/restore impact.\n"
    },
    {
      "commit": "e2d6e46fcb93f821914576760702251f9f99c1e5",
      "tree": "5fa9edbde07c1474e141908c73567f4b4d9dc7db",
      "parents": [
        "b79dda3e9cd57a42fbe06c55f51ee881af83ca20"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 13:47:17 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 13:47:17 2026 -1000"
      },
      "message": "Fix broken XML in modules/index.xml — dangling \u003c/tr\u003e from SOAPMonitor removal\n\nThe SOAPMonitor table row removal left an extra \u003c/tr\u003e closing tag,\nbreaking the Maven site build (xdoc parser error). This caused GHA\nfailures on all JDK versions (17, 21, 25) and the site deploy job.\n"
    },
    {
      "commit": "b79dda3e9cd57a42fbe06c55f51ee881af83ca20",
      "tree": "f37f1f1c54a0722049ca4774d353730229c5e246",
      "parents": [
        "4c1e99924756b76f1aeae50929aa8692a8c3f931"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 13:26:15 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 13:26:15 2026 -1000"
      },
      "message": "AXIS2-6105 Fix NPE in codegen from removed JiBX unwrap.direct property\n\nRemoving codegen.databinding.unwrap.direct\u003djibx (the only entry) and\nreplacing it with a comment left the property undefined. The codegen\nengine\u0027s ConfigPropertyFileLoader.getUnwrapDirectFrameworkNames()\nthen called Arrays.asList(null), throwing NPE during WSDL2Java.\n\nFix: restore the property as empty (no frameworks handle unwrapping\ndirectly now that JiBX is removed). Also null-guard the getter to\nprevent this class of error if the property is missing.\n"
    },
    {
      "commit": "4c1e99924756b76f1aeae50929aa8692a8c3f931",
      "tree": "bde393494b1c5d106864d39db5ce149e626d1c99",
      "parents": [
        "1bad6a3866349dec18c3d51d5832a0afb2559cf3"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 12:53:10 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 12:58:49 2026 -1000"
      },
      "message": "Downgrade misleading AxisServletListener WARN to DEBUG\n\nThe warning \"No transportReceiver found. Please update your axis2.xml\"\nfires on every servlet deployment that doesn\u0027t explicitly configure an\nAxisServletListener — which is the normal case. The auto-configuration\nthat follows works correctly. Demote to DEBUG since this is expected\nbehavior, not a problem requiring user action.\n"
    },
    {
      "commit": "1bad6a3866349dec18c3d51d5832a0afb2559cf3",
      "tree": "e251009de35e768922f2a499142f820cc1ef7a5b",
      "parents": [
        "f32222dfb27d76c312cdcb1fe9b7476564ec0f12"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 12:39:37 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 12:39:37 2026 -1000"
      },
      "message": "Update copyright year to 2026 in footer and error pages\n"
    },
    {
      "commit": "f32222dfb27d76c312cdcb1fe9b7476564ec0f12",
      "tree": "3e570576e7d58488da14b684b73fee1d35399409",
      "parents": [
        "09bb62172d8685b6d5a3ca888b8ea79e59c2c997"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 12:02:53 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 12:02:53 2026 -1000"
      },
      "message": "AXIS2-6105 Remove remaining JiBX references from codegen and wsdl2code plugin\n\nMissed in the initial JiBX removal: import and usage of JiBXExtension\nin AbstractWSDL2CodeMojo.java, and JiBX entries in codegen-config.properties\n(databinding frameworks, unwrap support, extensions, templates).\n\nAlso AXIS2-6040: revert global Automatic-Module-Name — hyphens in\nartifactIds produce invalid Java module names that break the build.\n"
    },
    {
      "commit": "09bb62172d8685b6d5a3ca888b8ea79e59c2c997",
      "tree": "9ad916c6b787d6c91322543e48017ba34208cc7c",
      "parents": [
        "0847b463b37b60b177a95d677b808da08d10e14f"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 11:58:42 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 11:58:42 2026 -1000"
      },
      "message": "AXIS2-6040 Remove global Automatic-Module-Name — hyphens in artifactIds are invalid\n\nThe global maven-jar-plugin config set Automatic-Module-Name to\n${project.groupId}.${project.artifactId}, but artifact IDs containing\nhyphens (e.g., axis2-resource-bundle) produce invalid Java module names.\nThis broke the build on all modules.\n\nRemove the global config. Modules that need stable JPMS names can\ndefine Automatic-Module-Name in their individual pom.xml.\n"
    },
    {
      "commit": "0847b463b37b60b177a95d677b808da08d10e14f",
      "tree": "ba779485568c4645a44076fe6c7d806a05e7f0db",
      "parents": [
        "4b92b066b0fe185a592317c333020b29e0d97090"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 11:36:34 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 11:40:19 2026 -1000"
      },
      "message": "AXIS2-5881 Sort services and operations in listServices.jsp\n\nSort services alphabetically (case-insensitive) by passing a TreeMap\nfrom ListingAgent.processListServices() as a request attribute, per\nAndreas Veithen\u0027s recommendation to sort in Java code rather than\nadding more Java to the JSP.\n\nSort operations alphabetically by name within each service.\n\nBased on the original patch by Jeff Thomas (JWT007) from 2017.\n"
    },
    {
      "commit": "4b92b066b0fe185a592317c333020b29e0d97090",
      "tree": "7af74dd5d1a5001b4f8e53493fc6bc6397b7fb1e",
      "parents": [
        "a91c3000b2a2ea1de8d9f41aeaf30692088e2462"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 11:26:08 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 11:26:08 2026 -1000"
      },
      "message": "AXIS2-5858 Add unit tests for IPv6 bracket formatting in EPR URLs\n\nTest IPv4 not bracketed, IPv6 compressed/full/loopback all bracketed,\nand null IP handled without NPE. Runs in GHA CI on all JDK versions.\n"
    },
    {
      "commit": "a91c3000b2a2ea1de8d9f41aeaf30692088e2462",
      "tree": "9e9b04a53ebb47841985a37925aedb716441e4f8",
      "parents": [
        "1233877d4139c7742054354a3a8095894ee70ee3"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 10:59:41 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 10:59:41 2026 -1000"
      },
      "message": "AXIS2-5858 Bracket IPv6 addresses in soap:address location URLs\n\nWhen the detected IP address is IPv6 (contains \u0027:\u0027), wrap it in\nbrackets per RFC 2732. Without this, a soap:address like\nhttp://fe80::1:8080/services/MyService is invalid — it should be\nhttp://[fe80::1]:8080/services/MyService.\n\nThe IPv6-aware IP detection in Utils.getIpAddress() (which prefers\nIPv4 for backward compatibility) was contributed by Christian Ortlepp\nin PR #842. This commit adds the URL formatting fix that completes\nthe IPv6 support.\n\nCo-Authored-By: Christian Ortlepp \u003ccortlepp@users.noreply.github.com\u003e\n"
    },
    {
      "commit": "1233877d4139c7742054354a3a8095894ee70ee3",
      "tree": "1eb7de312063bdc8b61d10a1e487aabc26b53077",
      "parents": [
        "631f523ee29949084961d7a128b0d4034786504f"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 10:46:01 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 10:46:01 2026 -1000"
      },
      "message": "AXIS2-5762 Add unit tests for transport port constants on MessageContext\n\nVerify constants are defined, null before set, and round-trip correctly\nfor both local and remote ports independently.\n"
    },
    {
      "commit": "631f523ee29949084961d7a128b0d4034786504f",
      "tree": "e4a737ecedb9301bd541d48ab6118d8a8ed96c03",
      "parents": [
        "31cabacd56d91db7a5fb611cc38e1db75ae58993"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 10:44:19 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 10:44:19 2026 -1000"
      },
      "message": "AXIS2-5762 Add transport ports to MessageContext\n\nAdd TRANSPORT_LOCAL_PORT and TRANSPORT_REMOTE_PORT constants to\nMessageContext. AxisServlet now populates both from the servlet\nrequest at message ingress (request.getLocalPort() and\nrequest.getRemotePort()).\n\nService code can access them via:\n  Integer localPort \u003d (Integer) msgContext.getProperty(\n      MessageContext.TRANSPORT_LOCAL_PORT);\n  Integer remotePort \u003d (Integer) msgContext.getProperty(\n      MessageContext.TRANSPORT_REMOTE_PORT);\n"
    },
    {
      "commit": "31cabacd56d91db7a5fb611cc38e1db75ae58993",
      "tree": "98bbf6ea04f12af47460d0de243de312d63894af",
      "parents": [
        "754a25817040daa3e8374f861bf274438d7e26e1"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 21:49:42 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 10:32:48 2026 -1000"
      },
      "message": "AXIS2-6085 Document build prerequisites including bash requirement\n\nAdd Prerequisites section to README.txt listing JDK 17+, Maven 3.9+,\nand bash shell. Bash is required by some Maven plugins and integration\ntests but was not previously documented, causing build failures on\nWindows without Git Bash or WSL.\n"
    },
    {
      "commit": "754a25817040daa3e8374f861bf274438d7e26e1",
      "tree": "e72aa1f9cbcd4e382806527511ae0a8e8b6e2246",
      "parents": [
        "5a4971f49e0e67386ef706e5d14287c48d80f791"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 21:42:29 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 10:32:48 2026 -1000"
      },
      "message": "AXIS2-6055 Restrict preemptive Basic Auth to HTTPS connections\n\nPreemptive authentication sends credentials on the first request\nwithout waiting for a 401 challenge. Over plain HTTP, base64-encoded\ncredentials are trivially interceptable.\n\nAdd HTTPS check: preemptive auth only sends the Authorization header\nwhen the connection scheme is HTTPS. On HTTP, logs a warning and\nskips preemptive auth — credentials will still be sent via the\nnormal challenge/response flow if the server requests them.\n\nFound by local Gemini Pro security review.\n"
    },
    {
      "commit": "5a4971f49e0e67386ef706e5d14287c48d80f791",
      "tree": "706fe530ba77ad9cb37fc15c7d57632c5bc7554d",
      "parents": [
        "bfd03e4f1fec2943ae92aeb68970abc0af3c3b9b"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 21:39:33 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 10:32:48 2026 -1000"
      },
      "message": "AXIS2-6074 Return null for empty enum values instead of throwing\n\nWhen an empty XML element is sent for an enum field (e.g., \u003ceventType/\u003e),\nthe generated fromValue() method looked up the empty string in the enum\ntable, got null, and threw IllegalArgumentException. This caused a\ncryptic SOAP fault (\"unknown\") with null HTTP status.\n\nFix: in both bean and helpermode templates, allow null/empty values to\nreturn null from fromValue() instead of throwing. The bean template\npreviously had this guard only for string property types — now it\napplies to all types. The helpermode template had no guard at all.\n\nThis restores the Axis2 1.6 behavior where empty enum elements were\nhandled gracefully.\n"
    },
    {
      "commit": "bfd03e4f1fec2943ae92aeb68970abc0af3c3b9b",
      "tree": "a90fcdfcc7529e64ae4adc541b9493adbdcac64f",
      "parents": [
        "f8944fa810878b79522cd96a97e5b52c7b607cdb"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 21:32:48 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 10:32:48 2026 -1000"
      },
      "message": "AXIS2-6055 Restore preemptive Basic Auth support for HttpClient 5\n\nThe migration from HttpClient 4 to HttpClient 5 in Axis2 1.8 left a\nTODO for preemptive authentication — getPreemptiveAuthentication()\nwas never checked, so credentials were only sent after a 401 challenge.\nThis broke users who relied on preemptive auth in Axis2 1.7.\n\nWhen preemptiveAuthentication is true, set the Authorization header\ndirectly on the request using java.util.Base64 (available since Java 8).\nThis bypasses the challenge/response flow, matching Axis2 1.7 behavior.\n"
    },
    {
      "commit": "f8944fa810878b79522cd96a97e5b52c7b607cdb",
      "tree": "1df9af2fd3af734565421d50f100db8950bb39c9",
      "parents": [
        "59b0db419e352f1e624a5b5d961cc7010dc2fcf6"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 21:27:42 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 20 10:32:48 2026 -1000"
      },
      "message": "AXIS2-6040 Define Automatic-Module-Name for Java 9+ module system\n\nAdd Automatic-Module-Name manifest entry to the root POM\u0027s\nmaven-jar-plugin configuration. This applies to all modules and\nprovides stable module names derived from groupId + artifactId\n(e.g., org.apache.axis2.axis2-kernel).\n\nWithout this, the Java module system derives unstable module names\nfrom JAR filenames, producing IDE warnings like \"Name of automatic\nmodule \u0027axis2.kernel\u0027 is unstable, it is derived from the module\u0027s\nfile name.\"\n\nThis is a passive manifest entry — ignored entirely on the classpath.\nOnly takes effect for users who explicitly use Java modules (JPMS).\n"
    },
    {
      "commit": "59b0db419e352f1e624a5b5d961cc7010dc2fcf6",
      "tree": "92f784413cfcde2a2917157c234790814604dbd1",
      "parents": [
        "451e80fb69b8607e90c3d3d6230947f3400c9ae5"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 21:21:35 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 21:21:35 2026 -1000"
      },
      "message": "AXIS2-5965 Add duplicate\u003dpreserve to jar tasks in codegen Ant templates\n\nThe generated build.xml jar targets packed .class files up to 3 times\nwhen multiple filesets overlapped, tripling the output JAR size.\n\nAdd duplicate\u003d\"preserve\" to all \u003cjar\u003e tasks across all 5 Ant build\ntemplates (adb, default, jaxbri, jaxme, xmlbeans) so the first\noccurrence wins and duplicates are silently skipped.\n"
    },
    {
      "commit": "451e80fb69b8607e90c3d3d6230947f3400c9ae5",
      "tree": "9644c5549e3f636f339caf6db59da1a1dd5798f3",
      "parents": [
        "c833164b8f1f66237f7f996f85ac869d8fa19acc"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 21:12:43 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 21:12:43 2026 -1000"
      },
      "message": "AXIS2-6095 Fix IDL parser fault on comments ending with **/\n\nThe ML_COMMENT lexer rule failed on Javadoc-style comments ending\nwith **/ (double asterisk before slash). The original rule\u0027s (\u0027*\u0027)+\nalternative consumed both asterisks, then the next char \u0027/\u0027 didn\u0027t\nmatch any inner alternative (which excluded both \u0027*\u0027 and \u0027/\u0027),\ncausing a NoViableAltForCharException.\n\nFix: use a semantic predicate — consume \u0027*\u0027 only when the next\ncharacter is not \u0027/\u0027. This ensures \u0027*/\u0027 always terminates the\ncomment, regardless of how many asterisks precede it.\n\nBoth the ANTLR grammar (idl.g) and the generated lexer (IDLLexer.java)\nare updated. The generated code is hand-edited to match since the\nproject uses ANTLR 2.7.6 which is no longer actively maintained.\n\nReported by Brănaci Șerban-Mihai.\n"
    },
    {
      "commit": "c833164b8f1f66237f7f996f85ac869d8fa19acc",
      "tree": "2781a1745ea6934eb42fdb309a9ce0f35d883ae8",
      "parents": [
        "74dd7e60e0fe2317d53463ed6181bfd3bb13d781"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 20:50:22 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 20:55:40 2026 -1000"
      },
      "message": "Update 2.0.1 release notes with new features, bug fixes, and removed modules\n\nAdd AXIS2-6103 (streaming formatters, HTTP/2 client), Spring Boot\nstarter, MCP support, OpenAPI module to new features. Add AXIS2-6101,\nAXIS2-5862, AXIS2-5788 bug fixes. Document all AXIS2-6105 removed\nmodules (Eclipse/IDEA plugins, OSGi, JiBX, SOAPMonitor, Scripting,\nFastInfoset) and AXIS2-6102 WSDL 2.0 removal in breaking changes.\n"
    },
    {
      "commit": "74dd7e60e0fe2317d53463ed6181bfd3bb13d781",
      "tree": "0e55bd944154e1791be666483b89b3ddb7686bbd",
      "parents": [
        "d2efd7ef4d3eb590813ae72828ebc7b2e2fa8379"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 20:39:38 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 20:39:38 2026 -1000"
      },
      "message": "AXIS2-6105 Remove FastInfoset module\n\nBinary XML encoding (ITU-T X.891). Solved SOAP verbosity by making\nSOAP binary, but the industry solved it by switching to JSON.\nNo known users — anyone needing binary efficiency uses gRPC/Protobuf.\n\nRemoves module, dependency, fi.version property, and all references\nfrom distribution, webapp, apidocs, and assembly descriptors.\n"
    },
    {
      "commit": "d2efd7ef4d3eb590813ae72828ebc7b2e2fa8379",
      "tree": "1bc5e209a0b314a73fceb287e658ec9190a1d133",
      "parents": [
        "284b35ac2a80dc88a525c6ece1ee2557199d925d"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 20:25:12 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 20:25:12 2026 -1000"
      },
      "message": "AXIS2-6105 Remove JiBX, SOAPMonitor, and Scripting modules\n\nJiBX: Dead project (last release 2016, last Axis2 commit 2009 by\nDennis Sosnoski). ADB and JAXB are the active data bindings.\n\nSOAPMonitor: Java Applet-based SOAP message viewer. Applets were\nremoved from the JDK in Java 11 (2018). Non-functional on any\nsupported JDK. Originally added as AXIS2-434 in April 2006.\n\nScripting: BSF/JSR-223 scripting support. Nashorn (the default\nscript engine) was removed from the JDK in Java 15. No modern\nusers — anyone wanting server-side JavaScript uses Node.js, not\nan embedded script engine in a web services framework.\n\nRemoves modules, dependencies, properties, legal files, samples\n(quickstartjibx), codegen JiBX extension, site documentation,\nand all cross-references in POMs, assembly descriptors, toc.xml,\ncontents.xml.vm, and modules/index.xml.\n"
    },
    {
      "commit": "284b35ac2a80dc88a525c6ece1ee2557199d925d",
      "tree": "10c245a2a0b56cbbcde454ecd69be2e4d937d6d6",
      "parents": [
        "3abbbf505b5ee098f174499ec968cd679407daa1"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 20:02:11 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 20:02:11 2026 -1000"
      },
      "message": "AXIS2-6105 Remove OSGi modules\n\nRemove modules/osgi and modules/osgi-tests. OSGi support is\nunmaintained, never completed the javax-to-jakarta transition\n(AXIS2-6076), and has no active community usage.\n\nRemoves module entries from root pom.xml and apidocs/pom.xml.\nRemoves commented-out httpclient5-osgi/httpcore5-osgi deps.\n\nRetains org.osgi.framework dep in root pom — still used by\nmodules/transport/testkit for LDAP-style filter matching\n(lightweight, no OSGi runtime dependency).\n\nRetains Bundle-* manifest headers in transport pom.xml files —\nthese are generated by maven-bundle-plugin and are harmless\n(many non-OSGi projects include them for compatibility).\n"
    },
    {
      "commit": "3abbbf505b5ee098f174499ec968cd679407daa1",
      "tree": "28e7056191c4d3f3c8f67227cfe367c61ccb6ab3",
      "parents": [
        "c107afad5ee50392f4c72191ba55b0e6ca401470"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 19:39:32 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 19:42:03 2026 -1000"
      },
      "message": "AXIS2-6105 Remove Eclipse and IntelliJ IDEA plugins\n\nRemove axis2-eclipse-codegen-plugin, axis2-eclipse-service-plugin,\nand axis2-idea-plugin modules. These plugins are unmaintained, broken\non current Eclipse versions, and no longer used by the community per\nthe dev@ mailing list discussion.\n\nRemoves:\n- 3 module directories (source and Eclipse PDE metadata)\n- org.eclipse.platform dependencies (SWT, JFace, OSGi, Equinox)\n- com.intellij:openapi and com.intellij:extensions dependencies\n- intellij.version property\n- Eclipse/IDEA entries from toc.xml, contents.xml.vm, tools/index.xml\n- Download links from download.md.vm\n- Eclipse-specific entries from src-assembly.xml, apidocs/pom.xml\n- dist.py release script (Eclipse/IDEA plugin specific)\n- modules/tool/build.xml and readme.txt (Eclipse-only build instructions)\n- .gitignore entries for Eclipse plugin PDE artifacts\n- Site docs: tools/eclipse/, tools/idea/\n\nRetains: org.eclipse.angus (Jakarta mail), org.eclipse.jetty (test\ntransport), eclipse-settings-maven-plugin (code formatting) — these\nare unrelated to the IDE plugins.\n"
    },
    {
      "commit": "c107afad5ee50392f4c72191ba55b0e6ca401470",
      "tree": "c303ae6c3c69f63728d544c45f8d2b3354146155",
      "parents": [
        "deaaeaafec5be5d8d845e523717b436658cd38d9"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 19:17:23 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 19:17:23 2026 -1000"
      },
      "message": "Remove personal paths and project references from MCP architecture docs\n\nReplace /home/robert/ paths with ${project.basedir}/ and ${CATALINA_HOME}/\ngeneric placeholders. Remove references to personal projects. Public\nApache documentation must not contain developer-specific filesystem paths.\n"
    },
    {
      "commit": "deaaeaafec5be5d8d845e523717b436658cd38d9",
      "tree": "edb6154e9bba8cd569abf1e72b196129a7c8a73a",
      "parents": [
        "1057c868a5ea6fd9335079ce0067df58815caeca"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 18:46:49 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 18:46:49 2026 -1000"
      },
      "message": "AXIS2-6103 Update HTTP/2 documentation and sample axis2.xml configuration\n\nConsolidate HTTP/2 integration guides, update Spring Boot starter docs,\nand configure streaming JSON formatter in sample axis2.xml.\n"
    },
    {
      "commit": "1057c868a5ea6fd9335079ce0067df58815caeca",
      "tree": "3ca57327fb347f870ef55215990f429f12e4b20e",
      "parents": [
        "5d7cb4fc21e26347321adcc5d766e455966b88d0"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 18:46:18 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 18:46:18 2026 -1000"
      },
      "message": "AXIS2-6103 Add FIELD_FILTER constant and MoshiStreamingMessageFormatter updates\n\nAdd JsonConstant.FIELD_FILTER used by FieldFilteringMessageFormatter\nfor field-level response filtering. This constant was missing from the\nprior commit that introduced FieldFilteringMessageFormatter, causing\nGHA build failure (cannot find symbol).\n\nAlso includes MoshiStreamingMessageFormatter updates for field selection\nsupport.\n"
    },
    {
      "commit": "5d7cb4fc21e26347321adcc5d766e455966b88d0",
      "tree": "03cfb43373dc2567e931ae4023fc5068990a885c",
      "parents": [
        "6dfcae1063fd3235b3430602f3ccaa8d50839548"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 18:31:03 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 18:31:03 2026 -1000"
      },
      "message": "AXIS2-6103 Fail-fast on non-2xx in streaming start(), thread-safe shutdown\n\nMove status code check into AbstractBinResponseConsumer.start() so\nnon-2xx responses abort before writing the error body to the caller\u0027s\nOutputStream. Prevents corruption when the server returns HTML error\npages instead of JSON.\n\nMake shutdown() synchronized and set sharedClient\u003dnull after close to\nprevent race with getClient() during concurrent shutdown/startup.\n\nFound by local Gemini Pro review.\n"
    },
    {
      "commit": "6dfcae1063fd3235b3430602f3ccaa8d50839548",
      "tree": "57d75bfd41122b84139dc22c5a652fed5d9f0dcd",
      "parents": [
        "29bd5a4d9fcaaefb9cad6b0e94b287d0520adfd1"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 18:26:59 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 18:26:59 2026 -1000"
      },
      "message": "AXIS2-6103 Document why SimpleHttpRequest/SimpleHttpResponse should be avoided\n\nAdd \"Why Not SimpleHttpRequest / SimpleHttpResponse\" section to the\nHTTP/2 Java client guide. SimpleHttpResponse buffers the entire response\nbody in memory before the caller sees it, defeating HTTP/2 streaming.\nAbstractBinResponseConsumer fires a callback per DATA frame with flat\nmemory usage. Explains why Http2JsonClient uses the streaming consumer\nfor all requests including the buffered execute() convenience method.\n"
    },
    {
      "commit": "29bd5a4d9fcaaefb9cad6b0e94b287d0520adfd1",
      "tree": "06e4f4b903c37dae5aa91173e28fb0a1ff9e27ed",
      "parents": [
        "8f1f38a1da7fd6297607e4b53779ecdfec4a923d"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 18:24:55 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 18:24:55 2026 -1000"
      },
      "message": "AXIS2-6103 Remove SimpleHttpResponse buffering, unify on streaming path\n\nexecute() now delegates to executeStreaming() with a ByteArrayOutputStream\ninstead of using SimpleHttpRequest/SimpleHttpResponse. This avoids the\ninternal buffering overhead of SimpleHttpResponse and ensures both methods\nuse the same streaming transport (AbstractBinResponseConsumer with 64KB\nHTTP/2 flow control).\n\nAlso fixes: null body NPE in error path, adds non-2xx status check to\nexecuteStreaming() for consistent error handling contract.\n\nRemoves unused Simple* imports.\n\nFound by local Gemini Pro review + code consistency check.\n"
    },
    {
      "commit": "8f1f38a1da7fd6297607e4b53779ecdfec4a923d",
      "tree": "9bb6bc9b54aab9b570300043663afd0832424a46",
      "parents": [
        "f017f1f76ab192aa705b49887ab54cb34ca7df98"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 18:17:44 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 18:17:44 2026 -1000"
      },
      "message": "AXIS2-6103 Add HTTP/2 Java client example and documentation\n\nNew Http2JsonClient.java in userguide samples — standalone Apache\nHttpClient 5 HTTP/2 client for Axis2 JSON-RPC services. Two modes:\nbuffered (returns String) and streaming (writes 64KB chunks to\nOutputStream). Includes timeout cancellation and interrupt handling.\n\nNew http2-java-client.xml xdoc page with usage examples for both\nmodes, dependency info, and end-to-end streaming flow diagram.\n\nLinked in toc.xml as section 18.4a under Transports.\n"
    },
    {
      "commit": "f017f1f76ab192aa705b49887ab54cb34ca7df98",
      "tree": "c3df6edaa1caddda6297198ad1e434537675d12b",
      "parents": [
        "4d4a720e4786e01c284605198c0e78bd20583917"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 16:40:15 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Sun Apr 19 16:40:15 2026 -1000"
      },
      "message": "AXIS2-6103 Remove internal hostname and jargon from documentation\n\nRemove specific internal hostname reference (stg-rapi02) from the\nSpring Boot demo README and replace \"staging infrastructure\" with a\ngeneric description in the streaming formatter xdoc guide. Public\nApache documentation should not contain internal infrastructure details.\n\nFound by local Gemini Pro code review.\n"
    },
    {
      "commit": "541a27f74a0ecf333420bac536427c64e4f9cfdf",
      "tree": "4e85748329e4469116ec8e7c1ec97b52c56dbc32",
      "parents": [
        "4d4a720e4786e01c284605198c0e78bd20583917"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Apr 17 13:43:58 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 13:43:58 2026 +0000"
      },
      "message": "build(deps): bump spring.version from 7.0.6 to 7.0.7\n\nBumps `spring.version` from 7.0.6 to 7.0.7.\n\nUpdates `org.springframework:spring-core` from 7.0.6 to 7.0.7\n- [Release notes](https://github.com/spring-projects/spring-framework/releases)\n- [Commits](https://github.com/spring-projects/spring-framework/compare/v7.0.6...v7.0.7)\n\nUpdates `org.springframework:spring-beans` from 7.0.6 to 7.0.7\n- [Release notes](https://github.com/spring-projects/spring-framework/releases)\n- [Commits](https://github.com/spring-projects/spring-framework/compare/v7.0.6...v7.0.7)\n\nUpdates `org.springframework:spring-context` from 7.0.6 to 7.0.7\n- [Release notes](https://github.com/spring-projects/spring-framework/releases)\n- [Commits](https://github.com/spring-projects/spring-framework/compare/v7.0.6...v7.0.7)\n\nUpdates `org.springframework:spring-web` from 7.0.6 to 7.0.7\n- [Release notes](https://github.com/spring-projects/spring-framework/releases)\n- [Commits](https://github.com/spring-projects/spring-framework/compare/v7.0.6...v7.0.7)\n\nUpdates `org.springframework:spring-test` from 7.0.6 to 7.0.7\n- [Release notes](https://github.com/spring-projects/spring-framework/releases)\n- [Commits](https://github.com/spring-projects/spring-framework/compare/v7.0.6...v7.0.7)\n\n---\nupdated-dependencies:\n- dependency-name: org.springframework:spring-core\n  dependency-version: 7.0.7\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.springframework:spring-beans\n  dependency-version: 7.0.7\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.springframework:spring-context\n  dependency-version: 7.0.7\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.springframework:spring-web\n  dependency-version: 7.0.7\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.springframework:spring-test\n  dependency-version: 7.0.7\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "ed07ee098c9a0abf3660b89b01aa67d5d575401e",
      "tree": "83bcd8ff8f71f15545c1c8634d4f4874e6e50dec",
      "parents": [
        "4d4a720e4786e01c284605198c0e78bd20583917"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Apr 17 13:43:05 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 13:43:05 2026 +0000"
      },
      "message": "build(deps): bump maven.version from 3.9.14 to 3.9.15\n\nBumps `maven.version` from 3.9.14 to 3.9.15.\n\nUpdates `org.apache.maven:maven-plugin-api` from 3.9.14 to 3.9.15\n- [Release notes](https://github.com/apache/maven/releases)\n- [Commits](https://github.com/apache/maven/compare/maven-3.9.14...maven-3.9.15)\n\nUpdates `org.apache.maven:maven-core` from 3.9.14 to 3.9.15\n\nUpdates `org.apache.maven:maven-artifact` from 3.9.14 to 3.9.15\n\nUpdates `org.apache.maven:maven-compat` from 3.9.14 to 3.9.15\n- [Release notes](https://github.com/apache/maven/releases)\n- [Commits](https://github.com/apache/maven/compare/maven-3.9.14...maven-3.9.15)\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.maven:maven-plugin-api\n  dependency-version: 3.9.15\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.apache.maven:maven-core\n  dependency-version: 3.9.15\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.apache.maven:maven-artifact\n  dependency-version: 3.9.15\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.apache.maven:maven-compat\n  dependency-version: 3.9.15\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "4d4a720e4786e01c284605198c0e78bd20583917",
      "tree": "9771e2e3649e2663912e506bfac577327d431bc9",
      "parents": [
        "a4721f18eec7c0ae161776e780bd4e767b7bc092"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue Apr 14 10:44:16 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Thu Apr 16 06:26:48 2026 -1000"
      },
      "message": "AXIS2-6103 Add unit tests for streaming JSON message formatters\n\n18 tests across three test classes:\n\nFlushingOutputStreamTest (9 tests):\n- Data passthrough correctness\n- Single-byte write flush at interval\n- Bulk write flush behavior\n- No-flush below interval threshold\n- Counter reset after flush\n- Default 64KB interval\n- Zero/negative interval rejection\n- Long counter overflow prevention (bulk + single-byte combined)\n\nJSONStreamingMessageFormatterTest (4 tests):\n- Return-object serialization (GSON, matches standard formatter output)\n- Fault response serialization\n- Large object with many fields (validates JSON parseable)\n- Content type passthrough\n\nMoshiStreamingMessageFormatterTest (5 tests):\n- Return-object serialization (Moshi)\n- Fault response serialization\n- Large object validation\n- Output matches standard Moshi JsonFormatter (bit-identical comparison)\n- Content type passthrough\n"
    },
    {
      "commit": "a4721f18eec7c0ae161776e780bd4e767b7bc092",
      "tree": "479a6b0fff44daaf355637cf08e79855cf9526ae",
      "parents": [
        "2c999717701a612805c89772b5bbae251b2a9257"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Tue Apr 14 10:37:25 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Thu Apr 16 06:26:48 2026 -1000"
      },
      "message": "AXIS2-6103 Add streaming JSON message formatters for large HTTP responses\n\nNew package org.apache.axis2.json.streaming with three classes:\n\n- FlushingOutputStream: wraps transport OutputStream, flushes every\n  64KB (configurable). Prevents reverse proxy 502 Bad Gateway on\n  large responses by converting a single buffered body into a stream\n  of HTTP/2 DATA frames or HTTP/1.1 chunks.\n\n- JSONStreamingMessageFormatter: GSON variant. Drop-in replacement\n  for org.apache.axis2.json.gson.JsonFormatter.\n\n- MoshiStreamingMessageFormatter: Moshi variant. Drop-in replacement\n  for org.apache.axis2.json.moshi.JsonFormatter.\n\nBoth formatters use try-with-resources for JsonWriter lifecycle\n(addressed in Gemini code review). FlushingOutputStream uses long\nfor bytesSinceFlush counter to prevent int overflow on 2GB+ writes.\n\nEnable globally in axis2.xml:\n  \u003cmessageFormatter contentType\u003d\"application/json\"\n      class\u003d\"org.apache.axis2.json.streaming.MoshiStreamingMessageFormatter\"/\u003e\n\nOptional per-service flush interval tuning in services.xml:\n  \u003cparameter name\u003d\"streamingFlushIntervalBytes\"\u003e131072\u003c/parameter\u003e\n\nNo service code changes required. Tested on WildFly 32 locally and\nbehind a reverse proxy on stg-rapi02 (HTTP/2 ALPN). All existing\nservices (BigDataH2Service, FinancialBenchmarkService) produce\nbit-identical JSON results.\n\nAlso includes:\n- json-streaming-formatter.xml: full user guide\n- toc.xml: cross-referenced in JSON (23.6), HTTP/2 (18.6), and\n  MCP (23.4) sections\n- springbootdemo-tomcat11 README: streaming formatter section\n"
    },
    {
      "commit": "2c999717701a612805c89772b5bbae251b2a9257",
      "tree": "e3c3a1115e7e203c32cf900f290fcf4dc6e6e9d9",
      "parents": [
        "1686aa33dba3976324a04d009ae5fb2ca6c853c3"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Thu Apr 16 03:59:04 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Thu Apr 16 06:26:48 2026 -1000"
      },
      "message": "Link to Axis2/C parity implementation from Java financial sample\n\nAdds @see javadoc links to the C equivalent header and implementation\n(financial_benchmark_service.h/.c in axis-axis2-c-core) from the Java\nFinancialBenchmarkService class-level javadoc. Both implementations\nmaintain identical financial calculations, API contracts, and edge-case\nhandling — the cross-link makes the parity relationship discoverable.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "1686aa33dba3976324a04d009ae5fb2ca6c853c3",
      "tree": "8084242d327a5d71f7f56b75891642c6f8471357",
      "parents": [
        "14770c716793928cc95339390c7cfba3a37e4462",
        "2b4164e4a33e1bbe62279686c967438abbb0fa39"
      ],
      "author": {
        "name": "Christian Ortlepp",
        "email": "christian.ortlepp@hypergene.com",
        "time": "Thu Apr 16 18:02:59 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 16 18:02:59 2026 +0200"
      },
      "message": "Merge pull request #1169 from apache/dependabot/maven/activemq.version-6.2.4\n\nBump activemq.version from 6.2.3 to 6.2.4"
    },
    {
      "commit": "14770c716793928cc95339390c7cfba3a37e4462",
      "tree": "94becdbfc3085e7c832efa7e71ceec1228f0cfb2",
      "parents": [
        "754694ca380455ad5bf5b5e37c71ac8cfec912e4",
        "8228a3c910c6c823afa8ccee95d8ee89e8103ffc"
      ],
      "author": {
        "name": "Christian Ortlepp",
        "email": "christian.ortlepp@hypergene.com",
        "time": "Thu Apr 16 10:47:00 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 16 10:47:00 2026 +0200"
      },
      "message": "Merge pull request #1173 from apache/dependabot/maven/org.springframework.boot-spring-boot-dependencies-4.0.5\n\nbuild(deps): bump org.springframework.boot:spring-boot-dependencies from 3.4.3 to 4.0.5"
    },
    {
      "commit": "2b4164e4a33e1bbe62279686c967438abbb0fa39",
      "tree": "7461060044d827d3606c7044300864516028f6ae",
      "parents": [
        "754694ca380455ad5bf5b5e37c71ac8cfec912e4"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Apr 16 08:45:14 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 16 08:45:14 2026 +0000"
      },
      "message": "build(deps-dev): bump activemq.version from 6.2.3 to 6.2.4\n\nBumps `activemq.version` from 6.2.3 to 6.2.4.\n\nUpdates `org.apache.activemq:activemq-broker` from 6.2.3 to 6.2.4\n- [Release notes](https://github.com/apache/activemq/releases)\n- [Commits](https://github.com/apache/activemq/compare/activemq-6.2.3...activemq-6.2.4)\n\nUpdates `org.apache.activemq.tooling:activemq-maven-plugin` from 6.2.3 to 6.2.4\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.activemq:activemq-broker\n  dependency-version: 6.2.4\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n- dependency-name: org.apache.activemq.tooling:activemq-maven-plugin\n  dependency-version: 6.2.4\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "754694ca380455ad5bf5b5e37c71ac8cfec912e4",
      "tree": "597564f0138fd3054e98a9f3934b185a005031f4",
      "parents": [
        "a0ed43b6f9dbb59746332432c61d64be0e21b4ab",
        "61f4009cbdc45bafac73bfde02361d16db3572b8"
      ],
      "author": {
        "name": "Christian Ortlepp",
        "email": "christian.ortlepp@hypergene.com",
        "time": "Thu Apr 16 10:43:05 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 16 10:43:05 2026 +0200"
      },
      "message": "Merge pull request #1171 from apache/dependabot/maven/swagger.version-2.2.48\n\nbuild(deps): bump swagger.version from 2.2.46 to 2.2.48"
    },
    {
      "commit": "a0ed43b6f9dbb59746332432c61d64be0e21b4ab",
      "tree": "43a55da9c2439a1448426b612a33bff2fd40771e",
      "parents": [
        "5b7a1d4ec7bfde5145c584e5c9e037fe61de1b5f",
        "645a3464c5de5e639c1df6a89eac39c2e4a82abb"
      ],
      "author": {
        "name": "Christian Ortlepp",
        "email": "christian.ortlepp@hypergene.com",
        "time": "Thu Apr 16 10:42:57 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 16 10:42:57 2026 +0200"
      },
      "message": "Merge pull request #1172 from apache/dependabot/maven/ant.version-1.10.17\n\nbuild(deps-dev): bump ant.version from 1.10.16 to 1.10.17"
    },
    {
      "commit": "5b7a1d4ec7bfde5145c584e5c9e037fe61de1b5f",
      "tree": "352e593d16d31c3725c8ac93edf4f6655535fcb4",
      "parents": [
        "56d182ea81e3143a573d441c175033a289af122e",
        "e5a21c12631eb1f763706118741641d0e648d250"
      ],
      "author": {
        "name": "Christian Ortlepp",
        "email": "christian.ortlepp@hypergene.com",
        "time": "Thu Apr 16 10:42:42 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 16 10:42:42 2026 +0200"
      },
      "message": "Merge pull request #1175 from apache/dependabot/maven/com.google.guava-guava-33.6.0-jre\n\nBump com.google.guava:guava from 33.5.0-jre to 33.6.0-jre"
    },
    {
      "commit": "56d182ea81e3143a573d441c175033a289af122e",
      "tree": "0c79b29116560cf023b0d091ebfe0c55fc1b3f08",
      "parents": [
        "7f8ff02707303982c058b072fabdf81a0d0284b8",
        "6f3082607dda26245cb862ae088928cb750e8f29"
      ],
      "author": {
        "name": "Christian Ortlepp",
        "email": "christian.ortlepp@hypergene.com",
        "time": "Thu Apr 16 10:41:57 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 16 10:41:57 2026 +0200"
      },
      "message": "Merge pull request #1174 from apache/dependabot/maven/org.bouncycastle-bcpkix-jdk18on-1.84\n\nBump org.bouncycastle:bcpkix-jdk18on from 1.83 to 1.84"
    },
    {
      "commit": "7f8ff02707303982c058b072fabdf81a0d0284b8",
      "tree": "03a93aa0529c07379c9a26ada5d553a394d67ab8",
      "parents": [
        "f387bdacf0314287b95ffe042b1193c6af62367d"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Wed Apr 15 13:06:42 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Wed Apr 15 13:06:42 2026 -1000"
      },
      "message": "Expand financial benchmark javadoc and fix quant-correctness issues\n\nAdds detailed educational commentary to the financial benchmark sample\nservice so that developers new to quant math (GBM, Itô correction, VaR\nestimator choice, PRNG reproducibility, time-basis consistency, PSD\ncovariance edge cases) can read the sample as reference material. Also\napplies three small correctness fixes surfaced by quant-perspective\nreview:\n\n  - Monte Carlo median now correctly averages the two central elements\n    for even nSims (matches NumPy/R sample-median behavior).\n  - Scenario analysis now enforces MAX_SCENARIOS per asset, consistent\n    with the other MAX_* bounds and with the javadoc contract.\n  - Scenario upside/downside ratio now returns POSITIVE_INFINITY for\n    all-upside portfolios and NaN when both sides are effectively zero\n    (previously returned 0.0, which falsely implied \"no upside\"). The\n    response-object javadoc is updated to document this and the Jackson\n    serialization caveat (Infinity/NaN are non-strict-JSON tokens).\n\nDocumentation also clarifies that Math.exp() overflow in GBM is NOT\nguarded in the service body and is the caller\u0027s responsibility, and\nthat nPeriodsPerYear picks discretization granularity (inputs remain\nannualized) — correcting a previous contradiction in the MonteCarloRequest\njavadoc.\n\nIteratively reviewed with gemini-2.5-pro (quant-perspective review) until\nthe verdict was Approve with no remaining math-correctness or\ndocumentation-accuracy findings.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "f387bdacf0314287b95ffe042b1193c6af62367d",
      "tree": "f529effeedfdfd6904e788df5382ddeefcca72e6",
      "parents": [
        "c216d87cbbaa4fb274cae87ac2a92b5d5b651bd2"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Wed Apr 15 13:06:13 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Wed Apr 15 13:06:13 2026 -1000"
      },
      "message": "Scrub internal deployment references from public docs and tests\n\nRemoves leaked internal codenames (DPTv2, RAPI, dptv2) from five files\nahead of the 2.0.1 release. These were referenced in Apache-published\nsite docs, a module README, a modernization plan, and test comments.\nAll replacements preserve the original technical meaning using generic,\npublic-facing terminology.\n\nReviewed with gemini-2.5-pro (completeness, semantic preservation, fresh-\nleak, and test-comment accuracy checks all passed).\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "e5a21c12631eb1f763706118741641d0e648d250",
      "tree": "1710c5fb83e5a2d9ec006845c7b40d389bd072a0",
      "parents": [
        "c216d87cbbaa4fb274cae87ac2a92b5d5b651bd2"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Apr 15 13:42:37 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 13:42:37 2026 +0000"
      },
      "message": "Bump com.google.guava:guava from 33.5.0-jre to 33.6.0-jre\n\nBumps [com.google.guava:guava](https://github.com/google/guava) from 33.5.0-jre to 33.6.0-jre.\n- [Release notes](https://github.com/google/guava/releases)\n- [Commits](https://github.com/google/guava/commits)\n\n---\nupdated-dependencies:\n- dependency-name: com.google.guava:guava\n  dependency-version: 33.6.0-jre\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "6f3082607dda26245cb862ae088928cb750e8f29",
      "tree": "af7186be92bcec10238cbe8c40af207b4816b3f7",
      "parents": [
        "c216d87cbbaa4fb274cae87ac2a92b5d5b651bd2"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Apr 14 13:45:33 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 14 13:45:33 2026 +0000"
      },
      "message": "Bump org.bouncycastle:bcpkix-jdk18on from 1.83 to 1.84\n\nBumps [org.bouncycastle:bcpkix-jdk18on](https://github.com/bcgit/bc-java) from 1.83 to 1.84.\n- [Changelog](https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.html)\n- [Commits](https://github.com/bcgit/bc-java/commits)\n\n---\nupdated-dependencies:\n- dependency-name: org.bouncycastle:bcpkix-jdk18on\n  dependency-version: \u00271.84\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": "c216d87cbbaa4fb274cae87ac2a92b5d5b651bd2",
      "tree": "3115ac1f97049011290f1a345f3b54cbf64b5424",
      "parents": [
        "9cffb0df66314f47a68c007dc85c9bb2cfa6c5d2"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 13 11:11:27 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 13 11:11:27 2026 -1000"
      },
      "message": "Announce Rampart 2.0.0 and clarify tested JDK/server matrix\n\n- Add Rampart 2.0.0 announcement paragraph: release is ready and\n  will ship immediately after Axis2/Java 2.0.1 (on which Rampart\n  depends). Notes Jakarta EE 9+ / jakarta.* namespaces, modern\n  WSS4J, and current OpenJDK support.\n- Replace vague \"Tomcat 11 or WildFly 32/39 with OpenJDK 17, 21,\n  or 25\" line with a specific tested-configuration matrix:\n  minimum OpenJDK 17; tested with Tomcat 11 + OpenJDK 21/25,\n  WildFly 32 + OpenJDK 21, WildFly 39 + OpenJDK 25.\n"
    },
    {
      "commit": "9cffb0df66314f47a68c007dc85c9bb2cfa6c5d2",
      "tree": "01be53480ef29def866b22c0f9d05900157119ae",
      "parents": [
        "c016d8f3ed57dc0dc97d2f158a7f857d0d41f5ed"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 13 10:53:23 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 13 10:53:23 2026 -1000"
      },
      "message": "AXIS2-6102 Remove WSDL 2.0 references from user-facing docs\n\nFollow-up to WSDL 2.0 code removal. Scrubs WSDL 2.0 mentions from\npublished site docs, samples README, and codegen tool reference so\ndocumentation matches the 2.0.1 release.\n\n- src/site/xdoc/index.xml: drop MEP Support bullet (described MEPs\n  in WSDL 2.0 terms); WSDL support bullet now lists 1.1 only\n- src/site/xdoc/refLib.xml: remove WSDL 2.0 spec link\n- src/site/xdoc/docs/migration.xml: rewrite \"WSDL 2.0 support\"\n  section as \"WSDL support\" (1.1)\n- src/site/xdoc/docs/rest-ws.xml: rewrite intro (was framed as\n  \"WSDL 2.0 HTTP Binding defines REST\"); drop IRI-style link\n- src/site/xdoc/docs/userguide-samples.xml: remove external\n  FlickrClient entry (WSDL 2.0 code-gen demo from WSO2 nightly)\n- src/site/xdoc/tools/CodegenToolReference.xml: remove wsdlVersion\n  option row (no longer applicable without WSDL 2.0)\n- modules/samples/dynamicclient/README.txt: remove\n  WSDL20DynamicClient mvn command\n- .gitignore: ignore wtf.txt (untracked maven build log artifact)\n"
    },
    {
      "commit": "c016d8f3ed57dc0dc97d2f158a7f857d0d41f5ed",
      "tree": "1923deb735d226efdab4f88c181fbdcab6046596",
      "parents": [
        "c6058355a0a31aaaad40282440fb79bfdb417aed"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 13 09:05:06 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 13 09:05:06 2026 -1000"
      },
      "message": "AXIS2-5862 Document misleading currentPhaseIndex / currentHandlerIndex naming\n\nThe two index fields on MessageContext are named opposite to what the\nnames imply, and that confusion is what led the AXIS2-5862 reporter\nto propose a patch that would have regressed the engine:\n\n  * currentHandlerIndex indexes the MessageContext.executionChain, whose\n    elements are Phase objects (Phase implements Handler). So it is\n    effectively \"index of the current Phase within the execution chain.\"\n    AxisEngine.invoke walks the chain via get/setCurrentHandlerIndex.\n\n  * currentPhaseIndex indexes the handlers list INSIDE the Phase that is\n    currently executing. So it is effectively \"index of the current\n    Handler within the current Phase.\" Phase.invoke and\n    Phase.flowComplete walk that list via get/setCurrentPhaseIndex.\n\nRenaming the fields would be a semver-major break (public getters/\nsetters, Externalizable wire format, downstream module code, etc.),\nso the fields keep their historical names. This commit adds the\nexplanation directly to the fields\u0027 Javadoc, the four accessor\nmethods\u0027 Javadoc, and the confusing local-variable reassignment in\nPhase.flowComplete where we read getCurrentPhaseIndex() into a local\ncalled currentHandlerIndex.\n\nNo functional change.\n"
    },
    {
      "commit": "c6058355a0a31aaaad40282440fb79bfdb417aed",
      "tree": "fd5fcef823dfbdd6c5d10f0f6849ca1b85014b27",
      "parents": [
        "e4923cde53ee6978adb56d8df3a6a79872568aca"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 13 08:48:50 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 13 08:48:50 2026 -1000"
      },
      "message": "AXIS2-5862 Guard Phase.flowComplete against stale currentPhaseIndex\n\nCap the unwind index at handlers.size() at the top of the\nflowComplete() loop:\n\n    if (currentHandlerIndex \u003e handlers.size()) {\n        currentHandlerIndex \u003d handlers.size();\n    }\n\nWithout this guard, flowComplete() reads handlers.get(N - 1) for\nsome N \u003e handlers.size() and throws ArrayIndexOutOfBoundsException.\nThat throw aborts flowComplete() for every earlier phase on the\nexecuted-phase chain, so a faulted request gets a partial unwind\ninstead of the documented reverse-order callback sequence.\n\nThe reported reproducer is the degenerate one -- an empty phase\nreached with a stale non-zero currentPhaseIndex -- but the same\nfailure mode applies any time the inbound index exceeds the\ncurrent phase\u0027s handler count.\n\nThis change is strictly do-no-harm:\n\n  * When the inbound index is in range (the common case), the cap\n    is a no-op and behaviour is identical to today.\n  * When the index is out of range, we clamp to handlers.size() so\n    every real handler in the current phase still receives\n    flowComplete() in reverse order, AND earlier phases on the\n    chain still get their flowComplete() delivered instead of\n    being skipped by a thrown AIOOBE.\n\nDeliberately NOT done:\n\n  * The original ticket proposed swapping\n    MessageContext.getCurrentPhaseIndex/setCurrentPhaseIndex for\n    their get/setCurrentHandlerIndex counterparts. Those two\n    fields have historically misleading names: currentPhaseIndex\n    tracks the handler index *within the current Phase*, while\n    currentHandlerIndex tracks the phase index *within the\n    execution chain* (see AxisEngine.invoke()). Swapping them\n    would be a regression on the common path, not a fix. The\n    cap addresses the crash without touching the field semantics.\n  * No investigation of *how* a stale currentPhaseIndex leaks\n    across phases -- after 9 years the ticket still has no\n    reproducer, so we harden the boundary rather than chase a\n    ghost. If a reproducer surfaces later the root-cause fix is\n    additive on top of this guard.\n\nPhaseFlowCompleteTest adds five kernel-level unit tests covering:\n\n  - the happy path (reverse unwind on normal phase completion)\n  - empty phase with stale index (the AXIS2-5862 symptom)\n  - phase with real handlers but over-run inbound index\n  - exact-boundary inbound index (\u003d\u003d handlers.size())\n  - mid-phase failure with a legitimate non-zero index\n\nAll 393 kernel tests continue to pass.\n"
    },
    {
      "commit": "e4923cde53ee6978adb56d8df3a6a79872568aca",
      "tree": "e4f734f70078c619f98ad15f1f9c4d305091e524",
      "parents": [
        "905b30e4fd2efdc78c3dfa1e310f453e0839cc3d"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 13 08:09:05 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 13 08:09:05 2026 -1000"
      },
      "message": "AXIS2-5788 Unit tests for getServiceGroupContext touch semantics\n\nCovers all branches of the two overloads:\n\n- null id returns null from both overloads (no NPE, no mutation)\n- unknown id returns null from both overloads\n- legacy single-arg lookup touches lastTouchedTime (back-compat)\n- two-arg lookup with touch\u003dtrue matches the legacy behaviour\n- two-arg lookup with touch\u003dfalse LEAVES lastTouchedTime alone -- the\n  actual AXIS2-5788 fix\n- the no-touch contract holds for both SOAP-session-scoped contexts\n  (serviceGroupContextMap) and application-session-scoped contexts\n  (applicationSessionServiceGroupContexts)\n- repeated no-touch lookups stay read-only (guard against a future\n  refactor that re-introduces the observer effect for only the first\n  call)\n\nThe mutation check is done by forcing lastTouchedTime to 0L before the\nlookup and asserting it is either still 0L (no touch) or \u003e 0L (touched)\nafter -- avoids flakiness from the millisecond resolution of\nSystem.currentTimeMillis() that a \"before vs after\" comparison would\nhave.\n"
    },
    {
      "commit": "905b30e4fd2efdc78c3dfa1e310f453e0839cc3d",
      "tree": "67884724a94e3ad91db1de9924720ae55dc1dab8",
      "parents": [
        "29d29c98871df1013ad711a9eef168470843176c"
      ],
      "author": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 13 07:53:33 2026 -1000"
      },
      "committer": {
        "name": "Robert Lazarski",
        "email": "robertlazarski@gmail.com",
        "time": "Mon Apr 13 07:53:33 2026 -1000"
      },
      "message": "AXIS2-5788 Add non-touching overload of getServiceGroupContext\n\nConfigurationContext.getServiceGroupContext(id) always calls\nServiceGroupContext.touch() on a hit, which resets lastTouchedTime.\nThat is an \"observer effect\": any caller that wants to inspect a\ncontext (e.g. a session-cleanup sweep evaluating staleness against\nlastTouchedTime) mutates the very field it is trying to read and\nends up keeping the context alive forever.\n\nAdd an overload that takes an explicit touchServiceGroupContext flag:\n\n    ServiceGroupContext getServiceGroupContext(String id,\n                                               boolean touchServiceGroupContext)\n\nThe existing single-arg method is preserved and delegates with\ntouch\u003dtrue, so legacy callers see no behaviour change. Callers that\nwant a read-only peek pass touch\u003dfalse.\n\nAlso fix the stale Javadoc on getServiceGroupContextIDs() noted in\nthe same ticket (it claimed to return a hashmap; it returns a\nString[]).\n\nNo functional change to the lookup itself beyond collapsing the\nduplicated touch() call at the two hit sites into a single branch.\n"
    },
    {
      "commit": "8228a3c910c6c823afa8ccee95d8ee89e8103ffc",
      "tree": "01b0e4b60693c994d5d8f3fb1f9c1e91eaee888e",
      "parents": [
        "29d29c98871df1013ad711a9eef168470843176c"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Apr 13 14:57:57 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 13 14:57:57 2026 +0000"
      },
      "message": "build(deps): bump org.springframework.boot:spring-boot-dependencies\n\nBumps [org.springframework.boot:spring-boot-dependencies](https://github.com/spring-projects/spring-boot) from 3.4.3 to 4.0.5.\n- [Release notes](https://github.com/spring-projects/spring-boot/releases)\n- [Commits](https://github.com/spring-projects/spring-boot/compare/v3.4.3...v4.0.5)\n\n---\nupdated-dependencies:\n- dependency-name: org.springframework.boot:spring-boot-dependencies\n  dependency-version: 4.0.5\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    }
  ],
  "next": "645a3464c5de5e639c1df6a89eac39c2e4a82abb"
}
