mscheong01 / krotoDC

Protobuf Kotlin Dataclass, Converter & Custom Kotlin Coroutine gRPC Generator
Apache License 2.0
91 stars 8 forks source link

Support Protobuf Java V4+ #32

Open lockhartja opened 3 months ago

lockhartja commented 3 months ago

Seems to be a breaking change with the latest release of com.google.protobuf:protobuf-java, currently this code

@Target(AnnotationTarget.CLASS)
annotation class KrotoDC(
    val forProto: KClass<out GeneratedMessageV3>
)

breaks to due to a signature change to com.google.protobuf.GeneratedMessage....

here is a link to the change announcement [Java] The base class for generated messages will be GeneratedMessage, not GeneratedMessageV3. any plans to version bump the dependencies?

mscheong01 commented 3 months ago

Hi @lockhartja 👋 Thanks for informing me about this. I'll look into the protobuf-java updates and come up with a new release sometime soon.

pambrose commented 3 months ago

Along the same lines, I had to add com.google.protobuf:protobuf-java-util to my build.gradle.kts after the KrotoDC 1.1.1 update. Without it, import com.google.protobuf.util.JsonFormat was breaking in the generated files.

mscheong01 commented 3 months ago

@pambrose yes, it was added in 1.1.0 for json serialization support. I did write a heads up on the release note but it seems that I might have had to make it more noticeable 😢

mscheong01 commented 3 months ago

I've looked into the changes and found out that grpc-java hasn't yet upgraded to protobuf-java V4 (latest version uses 3.25.1). They seem to be unable to upgrade to v4 currently because of some major breaking changes. The progress is being tracked in this issue. I'll keep an eye on it and get krotoDC to support v4 once grpc-java gets updated.

mscheong01 commented 2 months ago
image

😃

lockhartja commented 2 months ago

@mscheong01 tracking the conversation -- are you able to move to the latest grpc-java...which should allow your community to move protobuf 4?

mscheong01 commented 2 months ago

@lockhartja I've currently identified a problem where the hasOptionalKeyword method has become private, which breaks the code where we access it 🥲. I haven't had the time to attempt a fix lately, but I'll keep this issue updated

lockhartja commented 1 month ago

@mscheong01 was just reviewing and wanted to inquire -- does this blocked by an upstream dependency or simply a waiting for your available bandwidth to increase

mscheong01 commented 1 month ago

Hi @lockhartja First of all, sorry about the delay 😞 As for the cause of krotoDC being stuck to v3, both reasons that you listed are correct. I had 0 spare time lately due to my new internship over the summer and have not been able to make required change requests to the upstream protobuf project. I've just opened a PR on protobuf repo: https://github.com/protocolbuffers/protobuf/pull/17714 (which definitely shouldn't have taken this long 😭 ) Which will eliminated our current existing identified blocker to v4 and hopefully we'll be able to move up to v4 once this is merged & released.