Add initial version of Web PubSub Chat service client - #50347
Add initial version of Web PubSub Chat service client#50347yzt (Y-Sindo) wants to merge 4 commits into
Conversation
|
Azure Pipelines: Successfully started running 1 pipeline(s). 34 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
There was a problem hiding this comment.
🟡 Changes recommended
The new builder’s connection-string validation logic can allow invalid inputs and then fail with confusing downstream exceptions.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
This PR introduces the initial Java client library for Azure Web PubSub Chat under sdk/webpubsub/azure-messaging-webpubsub-chat, along with CI/test wiring and test-resource updates to provision a Chat-enabled hub with persistent storage.
Changes:
- Added the new
azure-messaging-webpubsub-chatMaven module with generated service clients/models plus handwritten auth, reverse-proxy, and client-access-token helpers. - Added unit tests, live/playback tests, and samples/README for the new Chat client library.
- Updated
webpubsubservice-area CI/test pipelines and Bicep test resources to include the new package and Chat hub + storage dependencies.
File summaries
| File | Description |
|---|---|
| sdk/webpubsub/tests.yml | Adds azure-messaging-webpubsub-chat to the service-area test pipeline artifacts. |
| sdk/webpubsub/test-resources.bicep | Provisions storage + role assignments + Chat persistent storage and Chat-enabled hub; updates Web PubSub resource API version/identity. |
| sdk/webpubsub/ci.yml | Adds azure-messaging-webpubsub-chat to CI/release matrix parameters and artifacts. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/tsp-location.yaml | Defines the TypeSpec source location for Chat SDK generation. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/WebPubSubChatServiceClientBuilderTests.java | Unit tests for builder behaviors (credentials, connection string, reverse proxy, validation). |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/WebPubSubChatClientAccessTokenTests.java | Unit tests for Chat client access-token generation semantics. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/models/ChatRolesAndPermissionsTests.java | Verifies built-in role/permission wire values. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/WebPubSubChatServiceClientTestBase.java | Generated test base for reference (disabled generated tests). |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/UpdateMessageTests.java | Generated reference test (disabled). |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/ListRoomMembersTests.java | Generated reference test (disabled). |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/ListRolesTests.java | Generated reference test (disabled). |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/ListMessagesTests.java | Generated reference test (disabled). |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/GetUserTests.java | Generated reference test (disabled). |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/GetRoomTests.java | Generated reference test (disabled). |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/GetRoleTests.java | Generated reference test (disabled). |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/GetConversationTests.java | Generated reference test (disabled). |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/DeleteUserTests.java | Generated reference test (disabled). |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/DeleteRoomTests.java | Generated reference test (disabled). |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/DeleteRoomMemberTests.java | Generated reference test (disabled). |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/DeleteRoleTests.java | Generated reference test (disabled). |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/DeleteMessageTests.java | Generated reference test (disabled). |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/CreateOrReplaceUserTests.java | Generated reference test (disabled). |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/CreateOrReplaceRoomTests.java | Generated reference test (disabled). |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/CreateOrReplaceRoomMemberTests.java | Generated reference test (disabled). |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/generated/CreateOrReplaceRoleTests.java | Generated reference test (disabled). |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/ChatServiceClientTestBase.java | Shared base for recorded/live Chat tests using TestProxy. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/ChatServiceClientLiveTests.java | Sync live/playback tests for roles/rooms/users/messages. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/ChatServiceAsyncClientLiveTests.java | Async live/playback tests for roles/rooms/users/messages. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/test/java/com/azure/messaging/webpubsub/chat/ChatMessageSeeder.java | WebSocket-based helper to seed messages for message-history tests. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/WebPubSubChatSamples.java | README snippet source demonstrating typical client usage. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/ReadmeSamples.java | Generated placeholder snippet file for docs tooling. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/UpdateMessage.java | Generated reference sample. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/ListRoomMembers.java | Generated reference sample. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/ListRoles.java | Generated reference sample. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/ListMessages.java | Generated reference sample. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/GetUser.java | Generated reference sample. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/GetRoom.java | Generated reference sample. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/GetRole.java | Generated reference sample. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/GetConversation.java | Generated reference sample. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/DeleteUser.java | Generated reference sample. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/DeleteRoomMember.java | Generated reference sample. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/DeleteRoom.java | Generated reference sample. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/DeleteRole.java | Generated reference sample. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/DeleteMessage.java | Generated reference sample. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/CreateOrReplaceUser.java | Generated reference sample. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/CreateOrReplaceRoomMember.java | Generated reference sample. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/CreateOrReplaceRoom.java | Generated reference sample. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/samples/java/com/azure/messaging/webpubsub/chat/generated/CreateOrReplaceRole.java | Generated reference sample. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/resources/META-INF/azure-messaging-webpubsub-chat_metadata.json | Generator metadata describing produced API surface and mappings. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/resources/azure-messaging-webpubsub-chat.properties | SDK name/version properties for user-agent and diagnostics. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/module-info.java | Java module definition (requires azure-core + nimbus-jose-jwt). |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/WebPubSubTokenGenerator.java | Shared JWT signing helper for key-based auth and local token generation. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/WebPubSubClientAccessTokenFactory.java | Implements Chat client-access token creation (local signing vs service delegation). |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/WebPubSubChatServiceVersion.java | Defines the supported REST API version enum. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/WebPubSubChatServiceClientBuilder.java | Builder wiring for endpoint/hub, key/connection-string, Entra ID, reverse proxy, pipeline. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/WebPubSubAuthenticationPolicy.java | Key-based auth policy for Chat REST operations. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/ReverseProxyPolicy.java | Per-call policy to route requests through a reverse proxy endpoint. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/package-info.java | Package-level JavaDoc for the Chat client package. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/models/WebPubSubClientAccessToken.java | Public model for token + WebSocket URL returned by getClientAccessToken. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/models/package-info.java | Package-level JavaDoc for Chat models. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/models/MessageContent.java | Generated model for message content (text/binary) including merge-patch support. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/models/HumanChatUser.java | Generated discriminated subtype for chat user payloads. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/models/GetClientAccessTokenOptions.java | Handwritten options type for Chat client access-token creation. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/models/ChatUserKind.java | Generated discriminator enum for user kinds. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/models/ChatUser.java | Generated base model for users with discriminator handling. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/models/ChatRoomMember.java | Generated model for room membership. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/models/ChatRoom.java | Generated model for rooms. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/models/ChatRole.java | Generated model for roles. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/models/ChatPermission.java | Generated permission enum values (ExpandableStringEnum). |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/models/ChatMessage.java | Generated model for messages including merge-patch support. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/models/ChatConversation.java | Generated model for conversations. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/models/BuiltInChatRoles.java | Handwritten constants for built-in Chat role names. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/implementation/package-info.java | Implementation package JavaDoc. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/implementation/models/package-info.java | Implementation-models package JavaDoc. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/implementation/models/GenerateClientTokenResponse.java | Generated internal model for service token response payload. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/implementation/JsonMergePatchHelper.java | Generated helper enabling merge-patch serialization behavior. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/README.md | New package README (auth, concepts, examples, links). |
| sdk/webpubsub/azure-messaging-webpubsub-chat/pom.xml | New module POM with dependencies and build configuration. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/customization/src/main/java/WebPubSubChatCustomization.java | Post-generation customizations (builder shape, token API, paging sample fixes). |
| sdk/webpubsub/azure-messaging-webpubsub-chat/customization/pom.xml | Customization project POM. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/customization.md | Post-generation instructions/reference behavior for the Chat SDK. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/checkstyle-suppressions.xml | Adds the standard ReverseProxyPolicy suppression, matching service SDK pattern. |
| sdk/webpubsub/azure-messaging-webpubsub-chat/CHANGELOG.md | Introduces changelog for the new package (1.0.0-beta.1). |
| sdk/webpubsub/azure-messaging-webpubsub-chat/assets.json | Adds assets tag metadata for test recordings. |
| eng/ignore-links.txt | Temporarily ignores new package links until published/available. |
Review details
Suppressed comments (2)
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/WebPubSubChatServiceClientBuilder.java:394
- The JavaDoc
@returntag is incorrect here (@return null ...). This method returns the builder instance, so the JavaDoc should not claim it returnsnull.
*
* @param connectionString The Web PubSub connection string.
* @return null The updated builder.
*/
sdk/webpubsub/azure-messaging-webpubsub-chat/src/main/java/com/azure/messaging/webpubsub/chat/WebPubSubChatServiceClientBuilder.java:425
- The JavaDoc
@returntag is incorrect here (@return null ...). This method returns the builder instance, so the JavaDoc should not claim it returnsnull.
* Sets the reverse proxy endpoint.
*
* @param reverseProxyEndpoint The reverse proxy endpoint.
* @return null The updated builder.
*/
- Files reviewed: 52/88 changed files
- Comments generated: 3
- Review effort level: Lite
💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.
b89ea7f to
b1577b5
Compare
b1577b5 to
b7a3f22
Compare
Description
Add an initial version of Web PubSub Chat service client.
ApiView Link: https://spa.apiview.dev/review/8465e7e6e391403e97e5411ae37ffb7e?activeApiRevisionId=774995090eb445f98b998b35168e84ac&activeSamplesRevisionId=6d1a0217058447daabcc88665e08435a
Generated from Spec
All SDK Contribution checklist:
General Guidelines and Best Practices
Testing Guidelines