Just small note to all you guys if you are using google protobuf library for communicating with server.

Lets say you have simple protobuf message with one optional numeric field:

If you are using some dynamic language in your server backend, you can end up having code like this:

Now question, what value of limit variable will be, if message will not have limit field set? Answer is: 0. Not null.

This is happening because actual return value for getLimit() is primitive long, not object. I assume google guys did that for performance reasons.

You can easily solve it using ?: operator:

Summary: working with protobuf, always remember that it is using primitives for numeric types and you have to use has methods to avoid getting zeros instead of nulls.