Skip to content

Adding gRPC Client generation from the existing protobuff files#493

Draft
jenspapenhagen wants to merge 1 commit intoOpen-J-Proxy:mainfrom
jenspapenhagen:grpc-clients
Draft

Adding gRPC Client generation from the existing protobuff files#493
jenspapenhagen wants to merge 1 commit intoOpen-J-Proxy:mainfrom
jenspapenhagen:grpc-clients

Conversation

@jenspapenhagen
Copy link
Copy Markdown
Contributor

@jenspapenhagen jenspapenhagen commented May 6, 2026

With bufhttps://github.com/bufbuild/buf,
implementing it for other programming languages was much easier than expected.

first Draft

@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud Bot commented May 6, 2026

@jenspapenhagen jenspapenhagen marked this pull request as draft May 6, 2026 15:43
@rrobetti
Copy link
Copy Markdown
Contributor

rrobetti commented May 6, 2026

@jenspapenhagen what is the goal of this PR?

@jenspapenhagen
Copy link
Copy Markdown
Contributor Author

To use OJP in other programming languages, such as Go, Rust, or Node.js.
Because not all of a company's microservices are written in Java, but connect to a DB

@rrobetti
Copy link
Copy Markdown
Contributor

rrobetti commented May 6, 2026

@jenspapenhagen if this is only compiling the gRPC protocol, we won't be committing the result of the grpc compilation.

For comparison, in Java we don't have the grpc client stubs committed; they are compiled every time the client is compiled. This is standard for gRPC. Having stubs of a gRPC interface compiled is extremely cheap; the challenges in creating a client in another language are:
1st - To find the right interfaces to implement; for example, .NET uses ADO.NET, can we create an implementation of ADO.NET that using the OJP gRPC protocol to interact with OJP Server?
2nd - Use JDBC integration tests we currently have as a starting point to test the new client.
3rd - Analyse how concerns like transactions, load balancing, and failover can be implemented in the new interfaces.

Maybe repurpose this PR to do an attempt to implement a module for a new client; start small with a simple CRUD integration?

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