------------------Show Code ( lines)------------------
package com.todomvc.client;

import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Preconditions.checkState;

import java.util.logging.Logger;

import javax.annotation.Nullable;
import javax.inject.Inject;

import com.google.gwt.user.client.rpc.AsyncCallback;
import com.todomvc.shared.model.ToDo;
import com.todomvc.shared.model.ToDoList;
import com.todomvc.shared.service.ToDoServiceAsync;
1

Loads model objects from the server at building time and after that keeps a client side storage allowing to retrieve/add/remove model objects.

public class ModelCache {

    private static final Logger logger = Logger.getLogger(ModelCache.class.getName());

    private ToDoList toDoList;

    @Inject
    public ModelCache(ToDoServiceAsync toDoService) {
        checkNotNull(toDoService);
        toDoService.getSingletonList(new AsyncCallback<ToDoList>() {

            @Override
            public void onSuccess(ToDoList list) {
                toDoList = list;
            }

            @Override
            public void onFailure(Throwable t) {
                String errorMessage = "Failed to obtain to-do list: " + t.getLocalizedMessage();
                logger.severe(errorMessage);
                throw new RuntimeException(errorMessage);

                // TODO should retry?

            }
            
        });
    }

    public void addToDo(ToDo toDo) {
        checkNotNull(toDo);
        checkState(toDoList != null);
        toDoList.add(toDo);
    }
2

Removes a to-do. Silently ignores unknown ids.

    public void removeToDo(String id) {
        checkNotNull(id);
        checkState(toDoList != null);
        toDoList.remove(id);
    }

    @Nullable
    public ToDo getToDo(String id) {
        checkState(toDoList != null);
        return toDoList.getToDo(id);
    }

    @Nullable
    public ToDoList getToDoList() {
        checkState(toDoList != null);
        return toDoList;
    }

}