package scrum.client.core; import ilarkesto.core.scope.Scope; import scrum.client.Dao; import scrum.client.DataTransferObject; import scrum.client.ScrumGwtApplication; import scrum.client.ScrumService; import scrum.client.ScrumServiceAsync; import scrum.client.common.AScrumWidget; import scrum.client.communication.ServerDataReceivedEvent; public class ServiceCaller extends GServiceCaller { private int activeServiceCallCount; private AScrumWidget statusWidget; private ScrumServiceAsync scrumService; protected int conversationNumber = -1; public final ScrumServiceAsync getService() { if (scrumService == null) { scrumService = com.google.gwt.core.client.GWT.create(ScrumService.class); ((com.google.gwt.user.client.rpc.ServiceDefTarget) scrumService) .setServiceEntryPoint(com.google.gwt.core.client.GWT.getModuleBaseURL() + "scrum"); } return scrumService; } public void onServiceCallSuccess(DataTransferObject data) { onServiceCallReturn(); if (data.conversationNumber != null) { conversationNumber = data.conversationNumber; log.info("conversatioNumber received:", conversationNumber); } Scope.get().getComponent(Dao.class).handleDataFromServer(data); ScrumGwtApplication app = ScrumGwtApplication.get(); if (data.applicationInfo != null) { app.applicationInfo = data.applicationInfo; log.debug("applicationInfo:", data.applicationInfo); // Scope.get().putComponent(data.applicationInfo); } else { assert app.applicationInfo != null; } new ServerDataReceivedEvent(data).fireInCurrentScope(); } public void onServiceCallFailure(AServiceCall serviceCall, Throwable ex) { onServiceCallReturn(); log.error("Service call failed:", serviceCall); ScrumGwtApplication.get().handleCommunicationError(ex); } public void onServiceCall() { activeServiceCallCount++; if (statusWidget != null) statusWidget.update(); } public void onServiceCallReturn() { activeServiceCallCount--; if (activeServiceCallCount < 0) activeServiceCallCount = 0; if (statusWidget != null) statusWidget.update(); } public int getActiveServiceCallCount() { return activeServiceCallCount; } public int getConversationNumber() { return conversationNumber; } public void resetConversation() { conversationNumber = -1; } public void setStatusWidget(AScrumWidget statusWidget) { this.statusWidget = statusWidget; } }