Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Compile-time annotation-processor tool to clientcore #43457

Merged
merged 8 commits into from
Jan 9, 2025

Conversation

samvaity
Copy link
Member

@samvaity samvaity commented Dec 18, 2024

Description

Creates a new /sdk/clientcore/tools package named annotation-processor, which serves as a shippable replacement for the in-house RestProxy annotation processing utilities used to generate HTTP client service implementations.

This package addresses common challenges with service client implementations relying on the intermediate RestProxy layer, which introduces reflection-based inefficiencies, negatively impacts performance, and produces less readable stack traces. Instead, annotation-processor uses JavaPoet to process annotations and generate service client implementations. Currently, it generates the respective service client implementation in ${project.build.directory}/generated-sources/.

Remaining Work:

  • Enhance response body handling to manage complex cases.
  • Address minor issues in public API generation.
  • Generate comprehensive Javadocs for generated code.

This implementation currently supports end-to-end functionality for the OpenAI getChatCompletions API as a proof of concept.

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.

eng/versioning/external_dependencies.txt Outdated Show resolved Hide resolved
sdk/clientcore/tools/pom.xml Outdated Show resolved Hide resolved
sdk/clientcore/tools/sdk-codegen-tool/README.md Outdated Show resolved Hide resolved
sdk/clientcore/tools/sdk-codegen-tool/README.md Outdated Show resolved Hide resolved
sdk/clientcore/tools/sdk-codegen-tool/README.md Outdated Show resolved Hide resolved
sdk/clientcore/tools/sdk-codegen-tool/README.md Outdated Show resolved Hide resolved
@samvaity samvaity force-pushed the compile-time-codegen branch from cadcf9b to 149a750 Compare December 19, 2024 22:45
@samvaity samvaity changed the title Add compile time sdk-codegen-tool Add Compile-time annotation-processor tool to clientcore Dec 19, 2024
@samvaity samvaity requested a review from JonathanGiles January 7, 2025 23:14
@samvaity samvaity marked this pull request as ready for review January 7, 2025 23:18
@samvaity samvaity self-assigned this Jan 7, 2025
Copy link
Member

@alzimmermsft alzimmermsft left a comment

Choose a reason for hiding this comment

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

Approving even though further review could be done as unblocking this to begin generating SDKs with this is more important and will find more issues than code review.

@samvaity samvaity merged commit 5495b4c into Azure:main Jan 9, 2025
40 checks passed
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