At closer look Append and Put are subtly different when it comes to version handling (so they probably will still need to have separate implementations of readFields and write (which is not the bulk of the class, as I moved the other common code into Mutation and OperationWithAttributes as part of
There're still opportunities to unify some common code between Put and Increment (and now Append), and as you say that is probably for another jira.
Yet another question is the use of Attributes to add flags to Operations (get/scan/put/increment/append). It's nice because it allows adding flags without changing RPC versions. On the other hand it relies on a user never using the attribute that we're using for a flag. I am wondering whether should eat an incompatibility once and add "system attributes" (or something) that are independent from the user attributes. Then we can add flags to these operation without RPC changes and with interfering with user attributes.
If we do this, it might be good to do that with 0.92.
I'd also like to understand what RWCC means for the upsert store operation.
That all said... I fixed the copyright notice and added more comments, and will check this into trunk soon.