Skip to content

Add configurable token providers#346

Merged
figueredo merged 1 commit into
masterfrom
feat/manual-token-provider
Apr 17, 2026
Merged

Add configurable token providers#346
figueredo merged 1 commit into
masterfrom
feat/manual-token-provider

Conversation

@figueredo
Copy link
Copy Markdown
Contributor

@figueredo figueredo commented Apr 8, 2026

Summary

  • Allow client to configure token provider
  • Provide a token provider that refreshes the token only when desired
  • Update README with usage instructions

@figueredo figueredo requested a review from a team as a code owner April 8, 2026 23:06
@figueredo figueredo self-assigned this Apr 8, 2026
@figueredo figueredo force-pushed the feat/manual-token-provider branch 2 times, most recently from 240909e to f6d973b Compare April 8, 2026 23:30
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Basically the previous TokenProvider with a new name

Copilot AI review requested due to automatic review settings April 17, 2026 18:58
@figueredo figueredo force-pushed the feat/manual-token-provider branch from f6d973b to 34cdb29 Compare April 17, 2026 18:58
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a pluggable token acquisition strategy by replacing the previous built-in token logic with a TokenProvider interface, plus default (auto-refresh) and manual-refresh implementations. It updates the API client initialization path to accept a custom provider via CustomOptions, and adjusts tests/docs accordingly.

Changes:

  • Replace the old concrete TokenProvider class with a TokenProvider interface plus AutoRefreshTokenProvider and ManualRefreshTokenProvider implementations.
  • Update IncogniaAPI/TokenAwareNetworkingClient to use an injected token provider (defaulting to auto-refresh when none is configured).
  • Update/add tests and README documentation for the new configuration and manual refresh workflow.

Reviewed changes

Copilot reviewed 17 out of 17 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
src/test/java/com/incognia/api/clients/TokenProviderTest.java Removes legacy token provider tests tied to the old implementation.
src/test/java/com/incognia/api/clients/TokenAwareNetworkingClientTest.java Adds coverage for manual-refresh behavior and fail-fast scenarios.
src/test/java/com/incognia/api/clients/ManualRefreshTokenProviderTest.java Adds unit tests for manual refresh provider semantics.
src/test/java/com/incognia/api/clients/AutoRefreshTokenProviderTest.java Adds unit tests for auto-refresh provider semantics.
src/test/java/com/incognia/api/IncogniaAPITest.java Adds tests for wiring custom/default token providers into IncogniaAPI.
src/main/java/com/incognia/common/utils/CustomOptions.java Adds tokenProvider option for client initialization.
src/main/java/com/incognia/common/exceptions/TokenNotFoundException.java Introduces exception for “manual provider has no cached token”.
src/main/java/com/incognia/common/exceptions/TokenExpiredException.java Introduces exception for “manual provider token is expired”.
src/main/java/com/incognia/common/Token.java Adds a new value type representing token + expiry.
src/main/java/com/incognia/api/clients/TokenResponse.java Removes computed expiresAt from the raw token endpoint DTO.
src/main/java/com/incognia/api/clients/TokenRequester.java Extracts token HTTP request logic into a dedicated helper.
src/main/java/com/incognia/api/clients/TokenProvider.java Converts token provider into a public interface returning Token.
src/main/java/com/incognia/api/clients/TokenAwareNetworkingClient.java Uses injected provider to build auth headers per request.
src/main/java/com/incognia/api/clients/ManualRefreshTokenProvider.java Adds manual refresh provider (explicit refresh(), fail-fast getToken()).
src/main/java/com/incognia/api/clients/AutoRefreshTokenProvider.java Adds auto-refresh provider (refresh-on-demand with locking).
src/main/java/com/incognia/api/IncogniaAPI.java Wires CustomOptions.tokenProvider, defaulting to auto-refresh.
README.md Documents how to configure and schedule manual token refresh.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/test/java/com/incognia/api/IncogniaAPITest.java Outdated
Comment thread README.md
Comment thread src/test/java/com/incognia/api/clients/AutoRefreshTokenProviderTest.java Outdated
Comment thread src/main/java/com/incognia/api/clients/TokenAwareNetworkingClient.java Outdated
@figueredo figueredo force-pushed the feat/manual-token-provider branch from 34cdb29 to d800412 Compare April 17, 2026 19:04
@figueredo figueredo mentioned this pull request Apr 17, 2026
3 tasks
Copilot AI review requested due to automatic review settings April 17, 2026 20:57
@figueredo figueredo force-pushed the feat/manual-token-provider branch 2 times, most recently from 1463c5b to fcba6e1 Compare April 17, 2026 20:57
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a pluggable token-provider mechanism so SDK users can either use the default auto-refresh behavior or supply their own token lifecycle strategy (including a manual-refresh provider), with docs and tests updated accordingly.

Changes:

  • Replaces the concrete TokenProvider implementation with a TokenProvider interface plus AutoRefreshTokenProvider and ManualRefreshTokenProvider implementations.
  • Wires CustomOptions/IncogniaAPI to accept an optional custom TokenProvider, defaulting to auto-refresh.
  • Updates tests and README to cover/manual-refresh usage and new behaviors.

Reviewed changes

Copilot reviewed 17 out of 18 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/test/java/com/incognia/api/clients/TokenProviderTest.java Removes legacy TokenProvider tests (replaced by new provider tests).
src/test/java/com/incognia/api/clients/TokenAwareNetworkingClientTest.java Adds coverage for manual provider behavior and fail-fast cases.
src/test/java/com/incognia/api/clients/ManualRefreshTokenProviderTest.java Adds tests for manual token refresh, missing token, and expired token.
src/test/java/com/incognia/api/clients/AutoRefreshTokenProviderTest.java Adds tests for auto-refresh provider caching and refresh behavior.
src/test/java/com/incognia/api/IncogniaAPITest.java Adds tests verifying custom token provider injection via CustomOptions.
src/main/java/com/incognia/common/utils/CustomOptions.java Adds tokenProvider option for client configuration.
src/main/java/com/incognia/common/exceptions/TokenNotFoundException.java Introduces exception for missing manually-managed token.
src/main/java/com/incognia/common/exceptions/TokenExpiredException.java Introduces exception for expired manually-managed token.
src/main/java/com/incognia/common/Token.java Adds new immutable token model with expiresAt and isExpired().
src/main/java/com/incognia/api/clients/TokenResponse.java Simplifies token response model (removes computed expiresAt).
src/main/java/com/incognia/api/clients/TokenRequester.java Adds internal helper to request tokens and map to Token.
src/main/java/com/incognia/api/clients/TokenProvider.java Converts to public TokenProvider interface returning Token.
src/main/java/com/incognia/api/clients/TokenAwareNetworkingClient.java Accepts a TokenProvider and builds auth headers from returned Token.
src/main/java/com/incognia/api/clients/ManualRefreshTokenProvider.java Adds provider that only refreshes when refresh() is called.
src/main/java/com/incognia/api/clients/AutoRefreshTokenProvider.java Adds provider that auto-refreshes when nearing expiry.
src/main/java/com/incognia/api/IncogniaAPI.java Uses optional custom TokenProvider, otherwise creates default auto-refresh provider.
build.gradle Bumps version to 3.17.0.
README.md Documents manual-refresh token provider usage and updates dependency versions.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/main/java/com/incognia/api/clients/TokenRequester.java Outdated
@figueredo figueredo force-pushed the feat/manual-token-provider branch from fcba6e1 to 4c56675 Compare April 17, 2026 21:16
Copilot AI review requested due to automatic review settings April 17, 2026 21:33
@figueredo figueredo force-pushed the feat/manual-token-provider branch from 4c56675 to f133d1d Compare April 17, 2026 21:33
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a configurable TokenProvider abstraction so consumers can plug in custom token retrieval/refresh strategies while keeping the default behavior (auto-refresh) unchanged for existing users.

Changes:

  • Replaced the previous concrete TokenProvider implementation with a public TokenProvider interface returning a new com.incognia.common.Token value type.
  • Added AutoRefreshTokenProvider (default) and ManualRefreshTokenProvider (caller-controlled refresh) plus supporting TokenRequester.
  • Wired token-provider configuration through CustomOptions and updated docs/tests accordingly.

Reviewed changes

Copilot reviewed 18 out of 19 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/test/java/com/incognia/api/clients/TokenProviderTest.java Removed old tests tied to the previous concrete TokenProvider class.
src/test/java/com/incognia/api/clients/TokenAwareNetworkingClientTest.java Added coverage for manual refresh behavior and invalid custom providers.
src/test/java/com/incognia/api/clients/TokenAwareDispatcher.java Updated Basic auth decoding to match standard Base64 encoding.
src/test/java/com/incognia/api/clients/ManualRefreshTokenProviderTest.java New tests for manual refresh provider behavior and constructor options.
src/test/java/com/incognia/api/clients/AutoRefreshTokenProviderTest.java New tests for auto-refresh provider caching/refresh/concurrency behavior.
src/test/java/com/incognia/api/IncogniaAPITest.java Added tests ensuring IncogniaAPI uses custom token providers when configured.
src/main/java/com/incognia/common/utils/CustomOptions.java Added optional tokenProvider and enabled toBuilder() for convenient overrides.
src/main/java/com/incognia/common/exceptions/TokenNotFoundException.java New exception for missing manual token.
src/main/java/com/incognia/common/exceptions/TokenExpiredException.java New exception for expired manual token.
src/main/java/com/incognia/common/Token.java New immutable token value type with expiresAt and isExpired().
src/main/java/com/incognia/api/clients/TokenResponse.java Simplified token response DTO (removed computed expiresAt).
src/main/java/com/incognia/api/clients/TokenRequester.java New internal helper to request tokens and convert responses to Token.
src/main/java/com/incognia/api/clients/TokenProvider.java Converted to a public interface returning Token.
src/main/java/com/incognia/api/clients/TokenAwareNetworkingClient.java Accepts a TokenProvider, validates token output, and builds auth headers from Token.
src/main/java/com/incognia/api/clients/ManualRefreshTokenProvider.java New provider that requires explicit refresh() and fails fast when missing/expired.
src/main/java/com/incognia/api/clients/AutoRefreshTokenProvider.java New default provider that refreshes on-demand with concurrency control.
src/main/java/com/incognia/api/IncogniaAPI.java Uses CustomOptions.tokenProvider when present; otherwise constructs default auto-refresh provider.
build.gradle Version bump to 3.17.0.
README.md Updated authentication docs and added manual-refresh usage example.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/main/java/com/incognia/api/IncogniaAPI.java
@figueredo figueredo force-pushed the feat/manual-token-provider branch from f133d1d to f4bf72a Compare April 17, 2026 21:42
@figueredo figueredo merged commit c7c08a8 into master Apr 17, 2026
6 checks passed
@figueredo figueredo deleted the feat/manual-token-provider branch May 13, 2026 18:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants