marcoferrer / kroto-plus

gRPC Kotlin Coroutines, Protobuf DSL, Scripting for Protoc
Apache License 2.0
493 stars 28 forks source link

CoroutineGrpc generated only when asciipb format is used #58

Open AlexeySoshin opened 5 years ago

AlexeySoshin commented 5 years ago

Object named <ServiceName>CoroutineGrpc is generated only when ascipb format is used. In both json and yml formats it's not present. Example project: https://github.com/alexeysoshin/KotlinGrpcKroto

My guess is that it has something to do with upper-case and lower case names.

AlexeySoshin commented 5 years ago

Has to do with empty arrays: "grpcCoroutines": [] doesn't generate the file, but "grpcCoroutines": [{}] does, in JSON format.

marcoferrer commented 5 years ago

Looking at it now, it makes sense. The generator being enabled relies on the existence of at least one configuration being present. The empty {} serializes to one configuration. These two configurations are equivalent.

// asciipb
grpc_coroutines{}
grpc_coroutines{}
{
    "grpcCoroutines":[
       {},
       {}
    ]
}

To your point though, the configuration for json and yaml is confusing. I think this could potentially be fixed by checking if the message is set in the filter utils, but this would need to be tested. In theory it should work since message fields still support hasX checks in proto3. https://github.com/protocolbuffers/protobuf/issues/249

malachid commented 5 years ago

grpcCoroutines: [] is working in yaml version with proto3 with 0.5.0