[
https://issues.apache.org/jira/browse/BEAM-12736?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17549473#comment-17549473
]
Danny McCormick commented on BEAM-12736:
----------------------------------------
This issue has been migrated to https://github.com/apache/beam/issues/21066
> Protobuf schema provider row functions break on camel-case field names
> ----------------------------------------------------------------------
>
> Key: BEAM-12736
> URL: https://issues.apache.org/jira/browse/BEAM-12736
> Project: Beam
> Issue Type: Bug
> Components: extensions-java-protobuf
> Affects Versions: 2.31.0
> Reporter: Chris Hinds
> Priority: P3
> Original Estimate: 24h
> Time Spent: 3h 10m
> Remaining Estimate: 20h 50m
>
> ProtoByteBuddyUtils.protoGetterName() _depends_ on field names being
> snake-case. But the Protobuf style guide only _recommends_ that field names
> are so defined.
> Snake-case is not enforced by protoc and my team have always created proto
> field names in camel-case (perhaps we didn't understand that protoc would
> automatically rewrite field names for us). It is likely that we are not alone.
> If one calls a row function against a proto instance whose field were defined
> in camel-case, an IllegalArgumentException results from the
> ProtoByteBuddyUtils snake-case assumption.
> {code:java}
> SerializableFunction myRowFunction = new
> ProtoMessageSchema().toRowFunction(new
> TypeDescriptor<MyDataModel.ProtoPayload>() {});
> MyDataModel.ProtoPayload payload = …
> Row row = (Row) myRowFunction.apply(payload);
> {code}
--
This message was sent by Atlassian Jira
(v8.20.7#820007)