I agree, the setters should either throw NPE or should treat setFoo(null)
the same as clearField().

On Thu, Nov 13, 2008 at 7:39 AM, bivas <[EMAIL PROTECTED]> wrote:

>
> Hi,
> I'm using the Java output feature of protobuf for my app.
> I found that protobuf doesn't handle null values as well as i would
> expect it.
>
> for example:
>
> message MyMessage {
>   required int32 id = 1;
>   optional string code = 2;
> }
>
> in java:
>
> MyMessage message = MyMessage.newBuilder().setId(3).setCode(null).build
> ();
> message.writeTo(System.out); // <--- this will result a
> NullPointerException when trying to write the code field
>
> the reason is that in the created java source the setCode() method
> looks like this:
>
> public Builder setCode(java.lang.String value) {
>        result.hasCode = true; // the field flag indicate a value
> while there isn't!
>        result.code_ = value;
>        return this;
> }
>
> method should look like:
>
> // for optional fields
> public Builder setCode(java.lang.String value) {
>        result.hasCode = (value != null) ;
>        result.code_ = value;
>        return this;
> }
>
> // for required fields
> public Builder setCode(java.lang.String value) {
>        assert value != null;
>        result.hasCode = true;
>        result.code_ = value;
>        return this;
> }
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To post to this group, send email to protobuf@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/protobuf?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to