package scrum.client.core; import ilarkesto.core.scope.Scope; import ilarkesto.core.service.ServiceCall; import scrum.client.DataTransferObject; import com.google.gwt.user.client.rpc.AsyncCallback; public abstract class AServiceCall implements ServiceCall { protected ServiceCaller serviceCaller = Scope.get().getComponent(ServiceCaller.class); public void execute() { execute(null); } protected class DefaultCallback implements AsyncCallback<DataTransferObject> { private Runnable returnHandler; public DefaultCallback(Runnable returnHandler) { this.returnHandler = returnHandler; } public void onSuccess(DataTransferObject data) { serviceCaller.onServiceCallSuccess(data); if (returnHandler != null) returnHandler.run(); } public void onFailure(Throwable ex) { String serviceLabel = AServiceCall.this.toString(); serviceCaller.onServiceCallReturn(); serviceCaller.onServiceCallFailure(AServiceCall.this, ex); } } }