package org.ovirt.engine.ui.common.system; import java.util.logging.Logger; import org.ovirt.engine.ui.common.CommonApplicationMessages; import org.ovirt.engine.ui.common.gin.AssetProvider; import org.ovirt.engine.ui.uicommonweb.ErrorPopupManager; import com.google.gwt.event.shared.EventBus; import com.google.inject.Inject; import com.gwtplatform.mvp.client.proxy.AsyncCallFailEvent; import com.gwtplatform.mvp.client.proxy.AsyncCallFailHandler; /** * Handles cases when GWTP MVP fails to call the server asynchronously. * <p> * This typically happens when a presenter sitting behind a split point fails to load asynchronously. * * @see AsyncCallFailEvent */ public class AsyncCallFailureHandler implements AsyncCallFailHandler { private static final Logger logger = Logger.getLogger(AsyncCallFailureHandler.class.getName()); private final ErrorPopupManager errorPopupManager; private static final CommonApplicationMessages messages = AssetProvider.getMessages(); @Inject public AsyncCallFailureHandler(EventBus eventBus, ErrorPopupManager errorPopupManager) { this.errorPopupManager = errorPopupManager; eventBus.addHandler(AsyncCallFailEvent.getType(), this); } @Override public void onAsyncCallFail(AsyncCallFailEvent event) { Throwable caught = event.getCaught(); logger.warning("Error while performing async call: " + caught.getLocalizedMessage()); //$NON-NLS-1$ errorPopupManager.show(messages.asyncCallFailure(caught.getLocalizedMessage())); } }