package tc.oc.api.model; import com.google.common.util.concurrent.ListenableFuture; import tc.oc.api.docs.virtual.Model; import tc.oc.api.docs.virtual.PartialModel; import tc.oc.api.message.types.PartialModelUpdate; public interface ModelService<Complete extends Model, Partial extends PartialModel> extends QueryService<Complete>, UpdateService<Partial> { @Override ListenableFuture<Complete> update(String id, PartialModelUpdate<Partial> request); @Override default ListenableFuture<Complete> update(String id, Partial partial) { return (ListenableFuture<Complete>) UpdateService.super.update(id, partial); } @Override default ListenableFuture<Complete> update(Partial partial) { return (ListenableFuture<Complete>) UpdateService.super.update(partial); } }