Skip to content

NPE in toString method of generated decoder #708

Closed
@fzn7

Description

@fzn7

It seems java codegen tool not fully aware of optional fields. We are getting NPE during decode our new traceContext2 field. This field is available since version 3 of our schema and marked as optional.

<field xmlns="" name="traceContext2" id="4" type="TraceContext" description="Distributed Trace Context" presence="optional" sinceVersion="3"/>

If we will try to send message with version 2 and call toString we will obtain an NPE

Reported exception:
java.lang.NullPointerException
        at com.mlp.ctp.generic.MessageAckDecoder.appendTo(MessageAckDecoder.java:352)
        at com.mlp.ctp.generic.MessageAckDecoder.toString(MessageAckDecoder.java:308)

Generated code:

toString:

builder.append('|');
builder.append("traceContext2=");
this.traceContext2().appendTo(builder);

traceContext2() method:

public TraceContextDecoder traceContext2() {
    if (this.parentMessage.actingVersion < 3) {
        return null;
    } else {
        this.traceContext2.wrap(this.buffer, this.offset + 16);
        return this.traceContext2;
    }
}

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions