Skip to content

App Config - Head Requests#48899

Open
mrm9084 wants to merge 10 commits into
Azure:mainfrom
mrm9084:AppConfigHeadRequests
Open

App Config - Head Requests#48899
mrm9084 wants to merge 10 commits into
Azure:mainfrom
mrm9084:AppConfigHeadRequests

Conversation

@mrm9084
Copy link
Copy Markdown
Member

@mrm9084 mrm9084 commented Apr 22, 2026

Description

Adds head request support to the Java SDK.

See Python: Azure/azure-sdk-for-python#45858
See JS: Azure/azure-sdk-for-js#36959

All SDK Contribution checklist:

  • The pull request does not introduce [breaking changes]
  • CHANGELOG is updated for new features, bug fixes or other significant changes.
  • I have read the contribution guidelines.

General Guidelines and Best Practices

  • Title of the pull request is clear and informative.
  • There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For more information on cleaning up the commits in your PR, see this page.

Testing Guidelines

  • Pull request includes test coverage for the included changes.

Copilot AI review requested due to automatic review settings April 22, 2026 19:18
@github-actions github-actions Bot added the App Configuration Azure.ApplicationModel.Configuration label Apr 22, 2026
Copy link
Copy Markdown
Contributor

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 adds HEAD-request support to the Azure App Configuration Java SDK to enable efficient change detection via page-level ETags, without downloading response bodies.

Changes:

  • Added checkConfigurationSettings APIs to both sync (ConfigurationClient) and async (ConfigurationAsyncClient) clients, backed by the service’s HEAD /kv endpoint.
  • Added unit tests covering HEAD paging behavior (empty items, page ETag presence) and ETag change detection.
  • Added a new sample demonstrating polling-style change detection with cached page ETags, and updated the changelog.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 14 comments.

Show a summary per file
File Description
sdk/appconfiguration/azure-data-appconfiguration/src/main/java/com/azure/data/appconfiguration/ConfigurationClient.java Adds sync checkConfigurationSettings API and JavaDoc samples.
sdk/appconfiguration/azure-data-appconfiguration/src/main/java/com/azure/data/appconfiguration/ConfigurationAsyncClient.java Adds async checkConfigurationSettings API and JavaDoc samples.
sdk/appconfiguration/azure-data-appconfiguration/src/main/java/com/azure/data/appconfiguration/implementation/Utility.java Adds helpers to translate HEAD responses into PagedResponse and handle 304 for HEAD, plus continuation parsing.
sdk/appconfiguration/azure-data-appconfiguration/src/test/java/com/azure/data/appconfiguration/ConfigurationClientTest.java Adds sync tests for HEAD paging and ETag change detection.
sdk/appconfiguration/azure-data-appconfiguration/src/test/java/com/azure/data/appconfiguration/ConfigurationAsyncClientTest.java Adds async tests for HEAD paging and ETag change detection.
sdk/appconfiguration/azure-data-appconfiguration/src/samples/java/com/azure/data/appconfiguration/CheckConfigurationSettingsForChanges.java New sample demonstrating HEAD-based change detection using page ETags + If-None-Match.
sdk/appconfiguration/azure-data-appconfiguration/src/main/java/com/azure/data/appconfiguration/package-info.java Updates package-level instantiation snippets.
sdk/appconfiguration/azure-data-appconfiguration/src/main/java/com/azure/data/appconfiguration/ConfigurationClientBuilder.java Updates builder JavaDoc instantiation/pipeline snippets.
sdk/appconfiguration/azure-data-appconfiguration/CHANGELOG.md Documents the new checkConfigurationSettings feature.

Comment on lines +219 to +220
// Parse the 'after' query parameter value from the Link header.
// Link header format: </kv?api-version=2023-10-01&$Select=&after=a2V5MTg4Cg%3D%3D>; rel="next"
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Why do we need a new parse method for after token? Dont we already support pagination for GET requests? Can we reuse that parsing code?

Copy link
Copy Markdown
Member Author

@mrm9084 mrm9084 May 4, 2026

Choose a reason for hiding this comment

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

Something about how the Java stuff is built makes this part be built into how the @Get that is used works. So no as it doesn't exist in our code.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Not sure I follow. There is a parseNextLink method that is being used in the existing code. Why is that not enough for HEAD requests? Why do we need after token value specifically for HEAD?

Comment on lines +236 to +238
} catch (java.io.UnsupportedEncodingException e) {
// UTF-8 is always supported
throw new RuntimeException(e);
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Is this an existing pattern in other SDKs? Catch and rethrow?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

The main pattern I see is silently failing and returning null. And having someone downstream deal with it. Would you prefer that?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

App Configuration Azure.ApplicationModel.Configuration

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants