While working through changes for CALCITE-640, I've noticed what appears to be a failure to isolate RPC concerns from the interfaces they expose. The code smell I noticed is that we need to have Jackson annotations for serialization of objects in both Meta and Service interfaces. IMHO, this should be isolated to just one place or the other. It's not a terrible concern today, but I think it will become so once we want to support alternative encoding formats (i.e., protobuf, thrift, avro). These systems force a clear distinction of what is serializable through their use of an IDL.
Thoughts? -n
