FasterXML / FasterXML/jackson-dataformats-binary

[protobuf] ObjectWriter fails to serialize depends on the order of messages

未關閉
#88 1 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
protobuf
主要語言
Java
星號
347
分支
156
平均合併
3 天 3 小時
30 天內合併 PR
22

描述

ObjectWriter fails to serialize depends on the order of messages defined in a proto file.

proto1 below works fine.
```
// proto1
message Main {
required Other o = 1;
}
message Other {
required int32 f = 1;
}
```

proto2 below fails. The only difference is the order of message types.
```
// proto2
message Other {
required int32 f = 1;
}
message Main {
required Other o = 1;
}
```

Stack trace
```
com.fasterxml.jackson.core.JsonGenerationException: Unrecognized field 'o' (in Message of type Other); known fields are: [Field 'f', tag=8, wireType=0, fieldType=VINT32_STD]

at com.fasterxml.jackson.core.JsonGenerator._reportError(JsonGenerator.java:1914)
at com.fasterxml.jackson.dataformat.protobuf.ProtobufGenerator.writeFieldName(ProtobufGenerator.java:299)
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:725)
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:716)
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155)
at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:481)
at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:401)
at com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1392)
at com.fasterxml.jackson.databind.ObjectWriter._configAndWriteValue(ObjectWriter.java:1120)
at com.fasterxml.jackson.databind.ObjectWriter.writeValueAsBytes(ObjectWriter.java:1017)
at com.fasterxml.jackson.dataformat.protobuf.schema.MessageResolutionTest.serializeTest(MessageResolutionTest.java:85)
```

Here is the [test case](https://gist.github.com/knoguchi/1ac2c621f27beeb3711fa397d06c31b1).

貢獻指南

這個儲存庫沒有索引到貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。