package <%= caches_package %>;
import java.util.List;
import javax.inject.Inject; import javax.inject.Singleton;
import <%= events_package %>.<%= class_name %>Event; import <%= events_package %>.<%= class_name %>EventHandler; import <%= models_package %>.<%= class_name %>; import <%= models_package %>.User; import <%= restservices_package %>.<%= class_name.pluralize %>RestService;
import com.google.gwt.event.shared.EventBus; import com.google.gwt.event.shared.GwtEvent;
import <%= gwt_rails_package %>.caches.AbstractModelCache; import <%= gwt_rails_package %>.events.ModelEvent; import <%= gwt_rails_package %>.events.ModelEvent.Action; import <%= gwt_rails_package %>.session.SessionManager;
@Singleton public class <%= class_name.pluralize %>Cache extends AbstractModelCache<<%= class_name %>>{
private final <%= class_name.pluralize %>RestService restService; @Inject <%= class_name.pluralize %>Cache(SessionManager<User> manager, EventBus eventBus, <%= class_name.pluralize %>RestService restService) { super(manager, eventBus); this.restService = restService; eventBus.addHandler(<%= class_name %>Event.TYPE, new <%= class_name %>EventHandler() { public void onModelEvent(ModelEvent<<%= class_name %>> event) { <%= class_name.pluralize %>Cache.this.onModelEvent(event); } }); } protected void loadModels() { restService.index(newMethodCallback()); } protected <%= class_name %> newModel() { return new <%= class_name %>(); } @Override protected GwtEvent<?> newEvent(List<<%= class_name %>> response) { return new <%= class_name %>Event(response, Action.LOAD); }
}