I've done some work on [1] in regards to coming up with a common sync data format for our clients, but I and messed it up [2]. Long story short is that I did not take into account some of client languages features. So here is a new suggestion that will hopefully work with all our client languages:

public interface SyncObject<T, ID> {
    ID objectId();
    String revision();
    T content();

What do people think about this?

[1] https://issues.jboss.org/browse/AEROGEAR-1406
[2] https://github.com/aerogear/aerogear.org/commit/5e81e5526b5850485eeb83a8ff7ddc1e4d6d2c40