Ravi Nori has uploaded a new change for review.

Change subject: webadmin: Dashboard results an error, when reports is not 
deployed
......................................................................

webadmin: Dashboard results an error, when reports is not deployed

Reports tab shows error page when accessed after a server restart
before the reports web app has been deployed

A new Status servlet has been added to Reports app which is
used by the webadmin to check the status of the report webapp
before showing the reports web app in reports tab

Change-Id: Ib6f63fe75110a6f799d355e78ed1fc0af2bd7d06
Bug-Url: https://bugzilla.redhat.com/1037667
Signed-off-by: Ravi Nori <[email protected]>
---
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabReportsView.java
1 file changed, 58 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/79/22279/1

diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabReportsView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabReportsView.java
index 2ae1dcc..d29c680 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabReportsView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabReportsView.java
@@ -4,7 +4,14 @@
 import java.util.Map;
 import java.util.Map.Entry;
 
+import com.google.gwt.http.client.Request;
+import com.google.gwt.http.client.RequestBuilder;
+import com.google.gwt.http.client.RequestCallback;
+import com.google.gwt.http.client.RequestException;
+import com.google.gwt.http.client.Response;
 import org.ovirt.engine.ui.common.view.AbstractView;
+import org.ovirt.engine.ui.uicommonweb.ErrorPopupManager;
+import org.ovirt.engine.ui.uicommonweb.TypeResolver;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabReportsPresenter;
 import org.ovirt.engine.ui.webadmin.widget.form.PostableFrame;
 
@@ -19,18 +26,68 @@
     @UiField(provided = true)
     PostableFrame reportPostableFrame;
 
+    private static final String REPORTS_WEBAPP_ERROR_MSG = "Error getting 
status of Reports Webapp"; //$NON-NLS-1$
+    private static final String REPORTS_WEBAPP_DEPLOYED_MSG = "Reports Webapp 
Deployed"; //$NON-NLS-1$
+    private static final String REPORTS_WEBAPP_NOT_DEPLOYED_MSG = "Reports 
Webapp not deployed, please try later."; //$NON-NLS-1$
+    private static boolean reportsWebappDeployed = false;
+    private static ErrorPopupManager errorPopupManager;
+
     interface MainTabReportsViewUiBinder extends UiBinder<Widget, 
MainTabReportsView> {
     }
 
     public MainTabReportsView() {
         reportPostableFrame = new PostableFrame("dashboard"); //$NON-NLS-1$
         initWidget(uiBinder.createAndBindUi(this));
-
+        if (errorPopupManager == null) {
+            errorPopupManager = (ErrorPopupManager) 
TypeResolver.getInstance().resolve(ErrorPopupManager.class);
+        }
     }
 
     @Override
     public void updateReportsPanel(String url,
             Map<String, List<String>> params) {
+        if (!reportsWebappDeployed) {
+            checkUpdateReportsPanel(url, params);
+        } else {
+            doUpdateReportsPanel(url, params);
+        }
+    }
+
+    private void checkUpdateReportsPanel(final String url,
+                                         final Map<String, List<String>> 
params) {
+        RequestBuilder requestBuilder =
+                new RequestBuilder(RequestBuilder.GET, buildStatusUrl(url)); 
//$NON-NLS-1$
+        try {
+            requestBuilder.setTimeoutMillis(1000);
+            requestBuilder.sendRequest(null, new RequestCallback() {
+                @Override
+                public void onError(Request request, Throwable exception) {
+                    errorPopupManager.show(REPORTS_WEBAPP_NOT_DEPLOYED_MSG);
+                }
+
+                @Override
+                public void onResponseReceived(Request request, Response 
response) {
+                    if (response.getStatusCode() == Response.SC_OK
+                            && 
response.getText().trim().equals(REPORTS_WEBAPP_DEPLOYED_MSG)) {
+                        reportsWebappDeployed = true;
+                        doUpdateReportsPanel(url, params);
+                    } else {
+                        
errorPopupManager.show(REPORTS_WEBAPP_NOT_DEPLOYED_MSG);
+                    }
+                }
+            });
+        } catch (RequestException e) {
+            errorPopupManager.show(REPORTS_WEBAPP_ERROR_MSG);
+        }
+    }
+
+    private String buildStatusUrl(String url) {
+        int index = url.lastIndexOf("/"); //$NON-NLS-1$
+        return url.substring(0, index+1) + "Status"; //$NON-NLS-1$
+    }
+
+    private void doUpdateReportsPanel(String url,
+                                   Map<String, List<String>> params) {
         reportPostableFrame.setUrl(url);
 
         // Set parameters


-- 
To view, visit http://gerrit.ovirt.org/22279
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib6f63fe75110a6f799d355e78ed1fc0af2bd7d06
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Ravi Nori <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to