]
Nistor Adrian updated IPROTO-63:
--------------------------------
Fix Version/s: 4.3.1.Final
(was: 4.3.0.Final)
writeObject throws IllegalArgumentException with oneof label
------------------------------------------------------------
Key: IPROTO-63
URL:
https://issues.jboss.org/browse/IPROTO-63
Project: Infinispan ProtoStream
Issue Type: Bug
Reporter: Ryan Emerson
Assignee: Nistor Adrian
Priority: Major
Fix For: 4.3.0.Alpha14, 4.3.1.Final
The below schema results in the following exception:
Schema:
{code:java}
message EntryVersion {
oneof version {
NumericVersion numeric = 1;
ClusteredVersion clustered = 2;
}
// optional NumericVersion numeric = 1;
// optional ClusteredVersion clustered = 2;
}
message NumericVersion {
required int64 version = 1;
}
message ClusteredVersion {
required int64 version = 1;
required int32 topology = 2;
}
{code}
Exception:
{code:java}
java.lang.IllegalArgumentException: Declared field type is not a message or an enum :
numeric
{code}
It seems this is caused because the type for the field "numeric" is null in the
associated FieldDescriptor object that is retrieved in the [writeObject
impl|https://github.com/infinispan/protostream/blob/master/core/src/main/...].
If the oneof label is replaced with the commented optional fields, the marshallers work
as expected.