Migrate azure-search-documents to TypeSpec#47819
Migrate azure-search-documents to TypeSpec#47819alzimmermsft wants to merge 20 commits intoAzure:mainfrom
Conversation
API Change CheckAPIView identified API level changes in this PR and created the following API reviews |
There was a problem hiding this comment.
Pull request overview
Migrates azure-search-documents from AutoRest-generated code to TypeSpec-generated code as initial groundwork for the next major version.
Changes:
- Replace large portions of AutoRest-generated implementation and model surface with TypeSpec-generated equivalents.
- Update field-builder annotations and rework field building logic for the new model shape.
- Refactor buffered indexing senders/publishers to use
RequestOptionsand the new untyped/document-map representation.
Reviewed changes
Copilot reviewed 71 out of 710 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/implementation/SearchServiceClientImpl.java | Removes legacy AutoRest-generated service client implementation. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/SimpleField.java | Removes old annotation-based field builder API surface. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/SearchIndexerDataSources.java | Removes legacy convenience factory utilities. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/FieldBuilderIgnore.java | Removes old ignore marker annotation used by the previous field builder. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/ComplexField.java | Adds new field-builder annotation aligned with the new FieldBuilder implementation. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/indexes/BasicField.java | Replaces SearchableField semantics with the new BasicField annotation and nullable-boolean semantics. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/util/package-info.java | Removes legacy internal util package docs (package appears removed). |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/util/Utility.java | Removes legacy internal utility helpers used by AutoRest-era implementation. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/util/SpatialFormatter.java | Removes spatial OData encoding helper (previously used by SearchFilter). |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/util/SemanticSearchResultsAccessHelper.java | Removes internal accessor helper for semantic results. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/util/MappingUtils.java | Removes mapping helpers tied to deleted generated models. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/util/FieldBuilder.java | Removes old util FieldBuilder implementation in favor of new location/behavior. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/util/Constants.java | Removes internal logging constants helper. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/package-info.java | Updates package docs header to TypeSpec generator and broadens package description. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/models/package-info.java | Updates models package docs header to TypeSpec generator and broadens description. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/models/SuggestResult.java | Removes legacy generated SuggestResult model (now handled differently). |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/models/SuggestPostRequest.java | Updates generated request model shape (string lists → List<String>) and TypeSpec header. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/models/Speller.java | Removes legacy generated Speller model. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/models/SearchResult.java | Removes legacy generated SearchResult model. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/models/SearchFirstPageResponseWrapper.java | Removes legacy wrapper model. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/models/SearchError.java | Removes legacy error model. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/models/SearchContinuationToken.java | Removes legacy continuation token handling. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/models/RequestOptions.java | Removes legacy generated RequestOptions model. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/models/IndexAction.java | Removes legacy generated IndexAction model. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/models/ErrorResponseException.java | Removes legacy generated error exception model. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/models/ErrorResponse.java | Removes legacy generated error response model. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/models/ErrorDetail.java | Removes legacy generated error detail model. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/models/ErrorAdditionalInfo.java | Removes legacy generated error additional info model. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/models/AutocompletePostRequest.java | Updates generated request model shape (string lists → List<String>) and TypeSpec header. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/converters/package-info.java | Removes converter package docs (converters appear removed). |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/converters/SuggestResultHelper.java | Removes legacy model-to-public converter helper. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/converters/SuggestResultConverter.java | Removes legacy converter implementation. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/converters/SearchResultHelper.java | Removes legacy converter helper. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/converters/SearchResultConverter.java | Removes legacy converter implementation. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/converters/IndexActionHelper.java | Removes legacy converter helper. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/converters/IndexActionConverter.java | Removes legacy converter implementation. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/converters/AnalyzeRequestConverter.java | Removes legacy request converter. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/batching/TryTrackingIndexAction.java | Refactors batching tracking to new untyped IndexAction usage. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/batching/SearchIndexingPublisher.java | Refactors sync batching publisher to use SearchClient, RequestOptions, and untyped document shape. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/batching/SearchIndexingAsyncPublisher.java | Refactors async batching publisher to use SearchAsyncClient, RequestOptions, and untyped document shape. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/batching/IndexingDocumentManager.java | Refactors document manager to support untyped map-based key retrieval. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/SearchUtils.java | Adds new helpers to map public SearchOptions to generated SearchRequest and apply request headers. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/KnowledgeBaseRetrievalClientImpl.java | Adds TypeSpec-generated implementation client for knowledge base retrieval. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/implementation/FieldBuilder.java | Adds new FieldBuilder implementation compatible with BasicField/ComplexField. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/SearchServiceVersion.java | Updates service version enum to TypeSpec header and changes supported versions list. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/SearchIndexingBufferedSender.java | Refactors buffered sender to use RequestOptions and map-based IndexAction payloads. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/SearchIndexingBufferedAsyncSender.java | Refactors buffered async sender similarly and reworks API shapes around RequestOptions. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/SearchFilter.java | Removes legacy OData filter builder API. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/SearchDocument.java | Removes legacy untyped document container type. |
| sdk/search/azure-search-documents/src/main/java/com/azure/search/documents/SearchAudience.java | Moves SearchAudience into the root package. |
| sdk/search/azure-search-documents/spotbugs-exclude.xml | Updates SpotBugs suppressions (adds FieldBuilder suppression and adjusts test suppressions). |
| sdk/search/azure-search-documents/pom.xml | Bumps package version to 12.0.0-beta.1 and adjusts test module opens and dependencies. |
| sdk/search/azure-search-documents/customizations/src/main/java/SearchCustomizations.java | Adds generator customizations (hide APIs and patch SearchAudience scopes handling). |
| sdk/search/azure-search-documents/checkstyle-suppressions.xml | Updates suppressions to match renamed/moved testing models. |
| sdk/search/azure-search-documents/assets.json | Updates assets tag reference. |
| sdk/search/azure-search-documents/README.md | Updates samples and snippets to match new APIs and model shapes. |
| sdk/search/azure-search-documents/CHANGELOG.md | Updates unreleased version header to 12.0.0-beta.1. |
| eng/versioning/version_client.txt | Updates tracked version for azure-search-documents to 12.0.0-beta.1. |
| .vscode/cspell.json | Removes stray whitespace line and updates dictionary list for the package scope. |
| SuggestPostRequest deserializedSuggestPostRequest = new SuggestPostRequest(searchText, suggesterName); | ||
| deserializedSuggestPostRequest.filter = filter; | ||
| deserializedSuggestPostRequest.useFuzzyMatching = useFuzzyMatching; | ||
| deserializedSuggestPostRequest.highlightPostTag = highlightPostTag; | ||
| deserializedSuggestPostRequest.highlightPreTag = highlightPreTag; | ||
| deserializedSuggestPostRequest.minimumCoverage = minimumCoverage; | ||
| deserializedSuggestPostRequest.orderBy = orderBy; | ||
| deserializedSuggestPostRequest.searchFields = searchFields; | ||
| deserializedSuggestPostRequest.select = select; | ||
| deserializedSuggestPostRequest.top = top; | ||
| return deserializedSuggestPostRequest; |
There was a problem hiding this comment.
The previous implementation validated required JSON properties (e.g., search and suggesterName) and threw an IllegalStateException when missing. The updated fromJson now always constructs SuggestPostRequest even when required fields are absent, which can result in null required fields and harder-to-diagnose failures later. Restore the required-property tracking and throw a clear IllegalStateException listing missing required properties when they’re not found.
| AutocompletePostRequest deserializedAutocompletePostRequest | ||
| = new AutocompletePostRequest(searchText, suggesterName); | ||
| deserializedAutocompletePostRequest.autocompleteMode = autocompleteMode; | ||
| deserializedAutocompletePostRequest.filter = filter; | ||
| deserializedAutocompletePostRequest.useFuzzyMatching = useFuzzyMatching; | ||
| deserializedAutocompletePostRequest.highlightPostTag = highlightPostTag; | ||
| deserializedAutocompletePostRequest.highlightPreTag = highlightPreTag; | ||
| deserializedAutocompletePostRequest.minimumCoverage = minimumCoverage; | ||
| deserializedAutocompletePostRequest.searchFields = searchFields; | ||
| deserializedAutocompletePostRequest.top = top; | ||
| return deserializedAutocompletePostRequest; |
There was a problem hiding this comment.
Same issue as SuggestPostRequest.fromJson: required-property validation was removed (search and suggesterName). Please reintroduce the required-property checks and throw IllegalStateException when missing, to preserve previous behavior and fail fast on malformed payloads.
Description
Initial work to migrate
azure-search-documentsto TypeSpec.Further work is needed for the following:
WithResponseAPIs rather than usingBinaryDataAll SDK Contribution checklist:
General Guidelines and Best Practices
Testing Guidelines