Chris Hinds created BEAM-12736:
----------------------------------

             Summary: 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


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.3.4#803005)

Reply via email to