You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The reason will be displayed to describe this comment to others. Learn more.
🟡 Changes recommended
Unresolved content-type and encoding defects can misserialize or abort HTTP requests and alter query values, while cached OAuth secrets leave reused workflows with stale credentials after rotation.
Moves OAuth token acquisition into core and routes it through the shared HTTP request abstraction, addressing #1805’s goal of removing the Jakarta HTTP dependency from this path.
Changes:
Replaces Jakarta-specific token providers with a core implementation.
Adds form-urlencoded request bodies to both HTTP implementations and shares response handling.
Updates JWT conversion to accept token-response bytes and runs OAuth/OpenID tests with both HTTP backends.
The reason will be displayed to describe this comment to others. Learn more.
🟡 Changes recommended
A critical OAuth concurrency flaw can lose token parameters or fail requests, while issuer-state, null-form handling, header-mutability, and transport-dependency defects also remain unresolved.
OAuth still requires a JWTConverter, and the only implementation is in impl/jwt-impl, which depends on openworkflow-impl-http (impl/jwt-impl/pom.xml:14–17). Using OAuth with the default JDK transport therefore still brings in the Jakarta HTTP module, contrary to #1805's library-independence goal. Separate the HTTP-specific model adapter from the JWT module and remove that dependency.
Copy caller headers before adding incremental headers
The new incremental header method mutates the map passed to headers(...). Consequently, builder.headers(Map.of("Accept", "application/json")).header("Content-Type", "application/json") throws UnsupportedOperationException, and mutable caller-owned maps are modified unexpectedly. Copy the supplied map in headers(...) so the builder owns a mutable map.
The reason will be displayed to describe this comment to others. Learn more.
🟡 Changes recommended
Concurrent OAuth requests reuse a non-thread-safe builder, and the default OAuth path still lacks a JWT converter that works without additional Jakarta HTTP dependencies.
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
Active defects can make header additions fail or mutate caller maps, retain stale issuer restrictions after secret updates, and produce conflicting Content-Type headers that mismatch authentication request encoding.
The reason will be displayed to describe this comment to others. Learn more.
🟡 Changes recommended
Unresolved defects retain stale issuer restrictions after secret reloads, cause header configuration to fail or mutate caller-owned maps, and mismatch OAuth request body encoding with Content-Type.
The reason will be displayed to describe this comment to others. Learn more.
🟡 Changes recommended
Unresolved defects can produce payloads that mismatch declared content types, retain stale issuer allowlists after secret refreshes, and cause header additions to throw or mutate caller-owned maps.
The reason will be displayed to describe this comment to others. Learn more.
🟡 Changes recommended
Authentication errors are incorrectly remapped to HTTP 500, breaking status-specific handling, and OpenAPI paths with hyphenated parameter names now fail before requests are sent.
The reason will be displayed to describe this comment to others. Learn more.
🟡 Changes recommended
HTTP error handling can turn connection failures into a NullPointerException that bypasses workflow catch/retry handlers, while OpenAPI routing rejects valid hyphenated parameter names.
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
Required path arguments that resolve to null are silently omitted, potentially sending requests to an unintended endpoint instead of rejecting invalid input.
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
The shared resolver now encodes slashes in path-parameter values, changing requested endpoints and breaking nested-path APIs in both the default and Jakarta implementations.
The reason will be displayed to describe this comment to others. Learn more.
🟡 Changes recommended
The resolver now throws for undefined optional URI-template variables instead of omitting them under RFC 6570, breaking ordinary HTTP endpoints that rely on optional parameters.
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
Path expressions are evaluated twice through the lazy map, so a stateful value can pass validation and then become null, silently producing an incorrect request path.
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
The path-parameter resolver evaluates expressions twice, adding redundant work and potentially sending time-dependent values different from those checked for null.
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
Required path arguments supplied as expressions can resolve to null without validation, causing requests such as /pet/ to be sent instead of rejecting the missing identifier.
The reason will be displayed to describe this comment to others. Learn more.
🟡 Changes recommended
Content-Type detection casts object-valued headers to String, causing ClassCastException for valid values and preventing requests with bodies from being sent.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fix #1805