Skip to content

dbeaver/pro#11108 Add External DAM transport contracts and backend client - #16

Open
vkirst wants to merge 4 commits into
develfrom
dbeaver/pro#11108-desktop-websocket-transport
Open

vkirst wants to merge 4 commits into
develfrom
dbeaver/pro#11108-desktop-websocket-transport

Conversation

@vkirst

@vkirst vkirst commented Oct 20, 2026

Copy link
Copy Markdown
Member

Summary

  • Add shared Desktop WebSocket contracts: hello/ready registration, connection identity, topic-based messages and subscriptions.
  • Add a backend Java client for the service-authenticated External DAM GraphQL API.
  • Scope connection listing and targeted sends by account; keep service credentials separate from Desktop JWT authentication.
  • Add protocol, model and client tests, and document the API contract and delivery guarantees.

Closes dbeaver/pro#11108

@vkirst
vkirst marked this pull request as ready for review October 20, 2026 08:32
@vkirst
vkirst requested a balanced review from Copilot October 20, 2026 08:43

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔵 Needs a closer look

Protocol separation and OSGi visibility need correction, while shared-client transport guarantees still require human validation.

2 open issues
What changed in this PR

Adds an External DAM API module for Desktop messaging contracts and backend service integration.

Changes:

  • Defines WebSocket registration, connection identity, and topic-based messaging contracts.
  • Adds an account-scoped GraphQL client with separate service authentication.
  • Includes validation tests, delivery documentation, and Maven/OSGi integration.
File Description
apis/​pom.xml Registers the new module.
apis/​com.dbeaver.datadam.external.api/​src/​test/​java/​com/​dbeaver/​datadam/​external/​api/​model/​DDMessageTest.java Tests payload isolation and validation.
apis/​com.dbeaver.datadam.external.api/​src/​test/​java/​com/​dbeaver/​datadam/​external/​api/​model/​DDExternalDamConnectionTest.java Tests connection metadata.
apis/​com.dbeaver.datadam.external.api/​src/​test/​java/​com/​dbeaver/​datadam/​external/​api/​DDExternalDamProtocolTest.java Tests message encoding and decoding.
apis/​com.dbeaver.datadam.external.api/​src/​test/​java/​com/​dbeaver/​datadam/​external/​api/​DDExternalDamApiTest.java Tests service-secret validation.
apis/​com.dbeaver.datadam.external.api/​src/​test/​java/​com/​dbeaver/​datadam/​external/​api/​client/​DDExternalDamClientTest.java Tests requests, authentication, and failures.
apis/​com.dbeaver.datadam.external.api/​src/​main/​java/​com/​dbeaver/​datadam/​external/​api/​transport/​DDSubscription.java Defines subscription cleanup.
apis/​com.dbeaver.datadam.external.api/​src/​main/​java/​com/​dbeaver/​datadam/​external/​api/​transport/​DDMessageListener.java Defines message callbacks.
apis/​com.dbeaver.datadam.external.api/​src/​main/​java/​com/​dbeaver/​datadam/​external/​api/​transport/​DDMessageChannel.java Defines messaging and subscriptions.
apis/​com.dbeaver.datadam.external.api/​src/​main/​java/​com/​dbeaver/​datadam/​external/​api/​transport/​DDConnectionListener.java Defines connection callbacks.
apis/​com.dbeaver.datadam.external.api/​src/​main/​java/​com/​dbeaver/​datadam/​external/​api/​model/​DDReady.java Models registration acknowledgment.
apis/​com.dbeaver.datadam.external.api/​src/​main/​java/​com/​dbeaver/​datadam/​external/​api/​model/​DDMessage.java Models messages with isolated payloads.
apis/​com.dbeaver.datadam.external.api/​src/​main/​java/​com/​dbeaver/​datadam/​external/​api/​model/​DDHello.java Models Desktop registration metadata.
apis/​com.dbeaver.datadam.external.api/​src/​main/​java/​com/​dbeaver/​datadam/​external/​api/​model/​DDExternalDamConnection.java Models backend connection results.
apis/​com.dbeaver.datadam.external.api/​src/​main/​java/​com/​dbeaver/​datadam/​external/​api/​model/​DDConnectionInfo.java Models connection identity.
apis/​com.dbeaver.datadam.external.api/​src/​main/​java/​com/​dbeaver/​datadam/​external/​api/​exception/​DDExternalDamException.java Defines client exceptions.
apis/​com.dbeaver.datadam.external.api/​src/​main/​java/​com/​dbeaver/​datadam/​external/​api/​DDExternalDamProtocol.java Implements WebSocket message serialization.
apis/​com.dbeaver.datadam.external.api/​src/​main/​java/​com/​dbeaver/​datadam/​external/​api/​DDExternalDamApi.java Defines endpoint and authentication constants.
apis/​com.dbeaver.datadam.external.api/​src/​main/​java/​com/​dbeaver/​datadam/​external/​api/​client/​DDExternalDamClient.java Implements account-scoped GraphQL operations.
apis/​com.dbeaver.datadam.external.api/​README.md Documents authentication and delivery guarantees.
apis/​com.dbeaver.datadam.external.api/​pom.xml Configures dependencies and tests.
apis/​com.dbeaver.datadam.external.api/​META-INF/​MANIFEST.MF Declares OSGi exports and dependencies.
apis/​com.dbeaver.datadam.external.api/​build.properties Configures bundle packaging.

Review effort: Balanced

Comment thread apis/com.dbeaver.datadam.external.api/META-INF/MANIFEST.MF Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants