modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/UserSessionManager.java
| 10 +
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/NamedTab.java
| 9 +
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/NamedTabSet.java
| 10 +
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/AutoRefreshPortlet.java
| 7 -
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
| 12 +
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardsView.java
| 5
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/TableOrCanvasAutoRefresh.java
| 69 ----------
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/queue/AutodiscoveryPortlet.java
| 34 +++-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/resource/FavoriteResourcesPortlet.java
| 33 +++-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/RecentAlertsPortlet.java
| 36 +++--
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/imported/RecentlyAddedResourcesPortlet.java
| 34 +++-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/OperationsPortlet.java
| 34 +++-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/problems/ProblemResourcesPortlet.java
| 36 +++--
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/summary/InventorySummaryPortlet.java
| 53 ++++---
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/rpc/TrackingRequestCallback.java
| 8 -
15 files changed, 231 insertions(+), 159 deletions(-)
New commits:
commit eab08df7274ae63bd6891cf9572589306f546a09
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Tue Jan 18 18:10:16 2011 -0500
Dashboard/Selenium work
- Fix a problem with AutoRefreshPortlets which were refreshing in the
background even after navigating away from the dashboards page. The
refresh timers needed to be explicitly destroyed.
- Add destroy support for NamedTabSets (such as the dashboards view)
- For some reason, maybe a smartgwt bug, trying to destroy a Tab's pane
(canvas) was re-calling the canvas's onInit method. Protected as needed
in DashboardView. Also other widget cleanup added here.
- remove unused TableOrCanvasAutoRefresh.java
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/NamedTab.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/NamedTab.java
index 848d760..7f7a77f 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/NamedTab.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/NamedTab.java
@@ -1,5 +1,7 @@
package org.rhq.enterprise.gui.coregui.client.components.tab;
+import com.smartgwt.client.widgets.Canvas;
+
import org.rhq.enterprise.gui.coregui.client.components.view.ViewName;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableTab;
@@ -30,4 +32,11 @@ public class NamedTab extends LocatableTab {
return viewName.getTitle();
}
+ protected void destroy() {
+ Canvas pane = getPane();
+ if (null != pane) {
+ pane.destroy();
+ }
+ }
+
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/NamedTabSet.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/NamedTabSet.java
index 494f815..d0a0b9e 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/NamedTabSet.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/NamedTabSet.java
@@ -52,4 +52,14 @@ public class NamedTabSet extends LocatableTabSet {
return null;
}
+ @Override
+ protected void onDestroy() {
+
+ for (NamedTab tab : getTabs()) {
+ tab.destroy();
+ }
+
+ super.onDestroy();
+ }
+
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/AutoRefreshPortlet.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/AutoRefreshPortlet.java
index 2dca467..9b23871 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/AutoRefreshPortlet.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/AutoRefreshPortlet.java
@@ -27,10 +27,9 @@ package org.rhq.enterprise.gui.coregui.client.dashboard;
*/
public interface AutoRefreshPortlet extends Portlet {
- int refreshCycle = 60000;//ms
-
- /** Each portlet implements to define the refresh cycle. See
- * TableOrCanvasAutoRefresh for sample implementation.
+ /**
+ * Each portlet implements to define the refresh cycle. Note that once refresh is
started it
+ * should be canceled when the portlet goes out of scope (typically in an onDestroy()
override).
*/
void startRefreshCycle();
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
index ea18f1a..078f483 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
@@ -92,6 +92,10 @@ public class DashboardView extends LocatableVLayout {
private LocatableIMenuButton refreshMenuButton;
private HashMap<String, PortletViewFactory> portletMap = null;
+ // this is used to prevent an odd smartgwt problem where onInit() can get called
multiple times if
+ // the view is set to a Tab's pane.
+ private boolean isInitialized = false;
+
public DashboardView(String locatorId, DashboardsView dashboardsView, Dashboard
storedDashboard) {
super(locatorId);
@@ -104,12 +108,17 @@ public class DashboardView extends LocatableVLayout {
@Override
protected void onInit() {
super.onInit();
- buildEditForm();
+
+ if (!isInitialized) {
+ addMember(buildEditForm());
+ isInitialized = true;
+ }
}
public void redraw() {
for (Canvas c : getChildren()) {
c.removeFromParent();
+ c.destroy();
}
buildPortlets();
@@ -133,7 +142,6 @@ public class DashboardView extends LocatableVLayout {
loadPortletWindows();
- addMember(editForm);
addMember(portalLayout);
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardsView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardsView.java
index d5fe712..dbe0505 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardsView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardsView.java
@@ -33,6 +33,7 @@ import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.types.Overflow;
import com.smartgwt.client.util.BooleanCallback;
import com.smartgwt.client.util.SC;
+import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.IButton;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
@@ -159,7 +160,9 @@ public class DashboardsView extends LocatableVLayout implements
BookmarkableView
}
private void updateDashboards(List<Dashboard> dashboards) {
- removeMembers(getMembers());
+ Canvas[] members = getMembers();
+ removeMembers(members);
+
this.dashboardsByName = new HashMap<String, Dashboard>(dashboards.size());
for (Dashboard dashboard : dashboards) {
this.dashboardsByName.put(dashboard.getName(), dashboard);
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/TableOrCanvasAutoRefresh.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/TableOrCanvasAutoRefresh.java
deleted file mode 100644
index 75f15c0..0000000
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/TableOrCanvasAutoRefresh.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * RHQ Management Platform
- * Copyright (C) 2005-2010 Red Hat, Inc.
- * All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-package org.rhq.enterprise.gui.coregui.client.dashboard;
-
-import com.google.gwt.user.client.Timer;
-import com.smartgwt.client.widgets.Canvas;
-
-import org.rhq.enterprise.gui.coregui.client.UserSessionManager;
-import org.rhq.enterprise.gui.coregui.client.components.table.Table;
-import org.rhq.enterprise.gui.coregui.client.util.MeasurementUtility;
-
-/**An implementation of a shared portet refresh utility.
- * @author Simeon Pinder
- */
-public class TableOrCanvasAutoRefresh {
-
- private Timer reloader;
-
- /** reloads the Table or Canvas page based on the pageRefreshInterval saved to the
- * current user's settings.
- */
- public TableOrCanvasAutoRefresh(final Canvas toBeReloaded) {
- if (toBeReloaded != null) {
- //current setting
- final int retrievedRefreshInterval =
UserSessionManager.getUserPreferences().getPageRefreshInterval();
- if (this.reloader != null) {
- this.reloader.cancel();
- }
- if (retrievedRefreshInterval >= MeasurementUtility.MINUTES) {
- this.reloader = new Timer() {
- public void run() {
- if (toBeReloaded instanceof Table) {
- ((Table) toBeReloaded).refresh();
- } else {
- ((Canvas) toBeReloaded).redraw();
- }
-
- //launch again until shedule stopped or GC.
- reloader.schedule(retrievedRefreshInterval);
- }
- };
- this.reloader.schedule(retrievedRefreshInterval);
- }
- }
- }
-
- //stops the timer from previous run.
- public void stopTimer() {
- if (this.reloader != null) {
- this.reloader.cancel();
- }
- }
-}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/queue/AutodiscoveryPortlet.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/queue/AutodiscoveryPortlet.java
index 33c0afa..efa62f7 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/queue/AutodiscoveryPortlet.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/queue/AutodiscoveryPortlet.java
@@ -65,7 +65,7 @@ public class AutodiscoveryPortlet extends ResourceAutodiscoveryView
implements C
private PortletWindow portletWindow;
private AutodiscoveryQueueDataSource dataSource;
- private Timer defaultReloader;
+ private Timer refreshTimer;
public AutodiscoveryPortlet(String locatorId) {
super(locatorId, true);
@@ -200,20 +200,34 @@ public class AutodiscoveryPortlet extends ResourceAutodiscoveryView
implements C
@Override
public void startRefreshCycle() {
//current setting
- final int retrievedRefreshInterval =
UserSessionManager.getUserPreferences().getPageRefreshInterval();
- //cancel previous operation
- if (defaultReloader != null) {
- defaultReloader.cancel();
+ final int refreshInterval =
UserSessionManager.getUserPreferences().getPageRefreshInterval();
+
+ //cancel any existing timer
+ if (refreshTimer != null) {
+ refreshTimer.cancel();
}
- if (retrievedRefreshInterval >= MeasurementUtility.MINUTES) {
- defaultReloader = new Timer() {
+
+ if (refreshInterval >= MeasurementUtility.MINUTES) {
+
+ refreshTimer = new Timer() {
public void run() {
+
redraw();
- //launch again until portlet reference and child references GC.
- defaultReloader.schedule(retrievedRefreshInterval);
}
};
- defaultReloader.schedule(retrievedRefreshInterval);
+
+ refreshTimer.scheduleRepeating(refreshInterval);
+ }
+ }
+
+ @Override
+ protected void onDestroy() {
+ if (refreshTimer != null) {
+
+ refreshTimer.cancel();
}
+
+ super.onDestroy();
}
+
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/resource/FavoriteResourcesPortlet.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/resource/FavoriteResourcesPortlet.java
index 7bb67c4..dcf5c60 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/resource/FavoriteResourcesPortlet.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/resource/FavoriteResourcesPortlet.java
@@ -57,7 +57,7 @@ public class FavoriteResourcesPortlet extends ResourceSearchView
implements Auto
// set on initial configuration, the window for this portlet view.
private PortletWindow portletWindow;
- private Timer defaultReloader;
+ private Timer refreshTimer;
public FavoriteResourcesPortlet(String locatorId) {
super(locatorId);
@@ -126,20 +126,33 @@ public class FavoriteResourcesPortlet extends ResourceSearchView
implements Auto
@Override
public void startRefreshCycle() {
//current setting
- final int retrievedRefreshInterval =
UserSessionManager.getUserPreferences().getPageRefreshInterval();
- //cancel previous operation
- if (defaultReloader != null) {
- defaultReloader.cancel();
+ final int refreshInterval =
UserSessionManager.getUserPreferences().getPageRefreshInterval();
+
+ //cancel any existing timer
+ if (refreshTimer != null) {
+ refreshTimer.cancel();
}
- if (retrievedRefreshInterval >= MeasurementUtility.MINUTES) {
- defaultReloader = new Timer() {
+
+ if (refreshInterval >= MeasurementUtility.MINUTES) {
+
+ refreshTimer = new Timer() {
public void run() {
+
redraw();
- //launch again until portlet reference and child references GC.
- defaultReloader.schedule(retrievedRefreshInterval);
}
};
- defaultReloader.schedule(retrievedRefreshInterval);
+
+ refreshTimer.scheduleRepeating(refreshInterval);
}
}
+
+ @Override
+ protected void onDestroy() {
+ if (refreshTimer != null) {
+
+ refreshTimer.cancel();
+ }
+
+ super.onDestroy();
+ }
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/RecentAlertsPortlet.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/RecentAlertsPortlet.java
index 8edef2d..bcc79be 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/RecentAlertsPortlet.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/RecentAlertsPortlet.java
@@ -110,7 +110,8 @@ public class RecentAlertsPortlet extends AlertHistoryView implements
CustomSetti
private AlertPortletDataSource dataSource;
//instance ui widgets
private Canvas containerCanvas;
- private Timer defaultReloader;
+
+ private Timer refreshTimer;
public RecentAlertsPortlet(String locatorId) {
super(locatorId);
@@ -571,24 +572,37 @@ public class RecentAlertsPortlet extends AlertHistoryView implements
CustomSetti
@Override
public void startRefreshCycle() {
//current setting
- final int retrievedRefreshInterval =
UserSessionManager.getUserPreferences().getPageRefreshInterval();
- //cancel previous operation
- if (defaultReloader != null) {
- defaultReloader.cancel();
+ final int refreshInterval =
UserSessionManager.getUserPreferences().getPageRefreshInterval();
+
+ //cancel any existing timer
+ if (refreshTimer != null) {
+ refreshTimer.cancel();
}
- if (retrievedRefreshInterval >= MeasurementUtility.MINUTES) {
- defaultReloader = new Timer() {
+
+ if (refreshInterval >= MeasurementUtility.MINUTES) {
+
+ refreshTimer = new Timer() {
public void run() {
- refresh();
- //launch again until portlet reference and child references GC.
- defaultReloader.schedule(retrievedRefreshInterval);
+
+ redraw();
}
};
- defaultReloader.schedule(retrievedRefreshInterval);
+
+ refreshTimer.scheduleRepeating(refreshInterval);
}
}
@Override
+ protected void onDestroy() {
+ if (refreshTimer != null) {
+
+ refreshTimer.cancel();
+ }
+
+ super.onDestroy();
+ }
+
+ @Override
protected void setupTableInteractions(boolean hasWriteAccess) {
// The portlet is a "subsystem" view. Meaning the alerts displayed can
be from any accessible group for
// the user. This means the user can have varying permissions on the underlying
groups and/or resources,
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/imported/RecentlyAddedResourcesPortlet.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/imported/RecentlyAddedResourcesPortlet.java
index 2e5b3ba..e63c0c7 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/imported/RecentlyAddedResourcesPortlet.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/imported/RecentlyAddedResourcesPortlet.java
@@ -67,7 +67,8 @@ public class RecentlyAddedResourcesPortlet extends LocatableVLayout
implements C
private RecentlyAddedResourceDS dataSource;
private TreeGrid treeGrid = null;
private boolean simple = true;
- private Timer defaultReloader;
+
+ private Timer refreshTimer;
public RecentlyAddedResourcesPortlet(String locatorId) {
super(locatorId);
@@ -254,20 +255,33 @@ public class RecentlyAddedResourcesPortlet extends LocatableVLayout
implements C
@Override
public void startRefreshCycle() {
//current setting
- final int retrievedRefreshInterval =
UserSessionManager.getUserPreferences().getPageRefreshInterval();
- //cancel previous operation
- if (defaultReloader != null) {
- defaultReloader.cancel();
+ final int refreshInterval =
UserSessionManager.getUserPreferences().getPageRefreshInterval();
+
+ //cancel any existing timer
+ if (refreshTimer != null) {
+ refreshTimer.cancel();
}
- if (retrievedRefreshInterval >= MeasurementUtility.MINUTES) {
- defaultReloader = new Timer() {
+
+ if (refreshInterval >= MeasurementUtility.MINUTES) {
+
+ refreshTimer = new Timer() {
public void run() {
+
redraw();
- //launch again until portlet reference and child references GC.
- defaultReloader.schedule(retrievedRefreshInterval);
}
};
- defaultReloader.schedule(retrievedRefreshInterval);
+
+ refreshTimer.scheduleRepeating(refreshInterval);
}
}
+
+ @Override
+ protected void onDestroy() {
+ if (refreshTimer != null) {
+
+ refreshTimer.cancel();
+ }
+
+ super.onDestroy();
+ }
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/OperationsPortlet.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/OperationsPortlet.java
index 5f099a6..4961299 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/OperationsPortlet.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/OperationsPortlet.java
@@ -88,7 +88,8 @@ public class OperationsPortlet extends LocatableVLayout implements
CustomSetting
public static String unlimited = MSG.common_label_unlimited();
public static String defaultValue = unlimited;
public static boolean defaultEnabled = true;
- private Timer defaultReloader;
+
+ private Timer refreshTimer;
//default no-args constructor for serialization.
private OperationsPortlet() {
@@ -442,20 +443,33 @@ public class OperationsPortlet extends LocatableVLayout implements
CustomSetting
@Override
public void startRefreshCycle() {
//current setting
- final int retrievedRefreshInterval =
UserSessionManager.getUserPreferences().getPageRefreshInterval();
- //cancel previous operation
- if (defaultReloader != null) {
- defaultReloader.cancel();
+ final int refreshInterval =
UserSessionManager.getUserPreferences().getPageRefreshInterval();
+
+ //cancel any existing timer
+ if (refreshTimer != null) {
+ refreshTimer.cancel();
}
- if (retrievedRefreshInterval >= MeasurementUtility.MINUTES) {
- defaultReloader = new Timer() {
+
+ if (refreshInterval >= MeasurementUtility.MINUTES) {
+
+ refreshTimer = new Timer() {
public void run() {
+
redraw();
- //launch again until portlet reference and child references GC.
- defaultReloader.schedule(retrievedRefreshInterval);
}
};
- defaultReloader.schedule(retrievedRefreshInterval);
+
+ refreshTimer.scheduleRepeating(refreshInterval);
}
}
+
+ @Override
+ protected void onDestroy() {
+ if (refreshTimer != null) {
+
+ refreshTimer.cancel();
+ }
+
+ super.onDestroy();
+ }
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/problems/ProblemResourcesPortlet.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/problems/ProblemResourcesPortlet.java
index 4dfa109..8923333 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/problems/ProblemResourcesPortlet.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/problems/ProblemResourcesPortlet.java
@@ -78,7 +78,8 @@ public class ProblemResourcesPortlet extends Table implements
CustomSettingsPort
//constants
public static final String unlimited = MSG.common_label_unlimited();
public static final String defaultValue = unlimited;
- private Timer defaultReloader;
+
+ private Timer refreshTimer;
@SuppressWarnings("unchecked")
public ProblemResourcesPortlet(String locatorId) {
@@ -315,23 +316,36 @@ public class ProblemResourcesPortlet extends Table implements
CustomSettingsPort
@Override
public void startRefreshCycle() {
//current setting
- final int retrievedRefreshInterval =
UserSessionManager.getUserPreferences().getPageRefreshInterval();
- //cancel previous operation
- if (defaultReloader != null) {
- defaultReloader.cancel();
+ final int refreshInterval =
UserSessionManager.getUserPreferences().getPageRefreshInterval();
+
+ //cancel any existing timer
+ if (refreshTimer != null) {
+ refreshTimer.cancel();
}
- if (retrievedRefreshInterval >= MeasurementUtility.MINUTES) {
- defaultReloader = new Timer() {
+
+ if (refreshInterval >= MeasurementUtility.MINUTES) {
+
+ refreshTimer = new Timer() {
public void run() {
- refresh();
- //launch again until portlet reference and child references GC.
- defaultReloader.schedule(retrievedRefreshInterval);
+
+ redraw();
}
};
- defaultReloader.schedule(retrievedRefreshInterval);
+
+ refreshTimer.scheduleRepeating(refreshInterval);
}
}
+ @Override
+ protected void onDestroy() {
+ if (refreshTimer != null) {
+
+ refreshTimer.cancel();
+ }
+
+ super.onDestroy();
+ }
+
}
/**Construct table widget Label to display timerange settings used with latest datasource
query.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/summary/InventorySummaryPortlet.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/summary/InventorySummaryPortlet.java
index 27db931..f308609 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/summary/InventorySummaryPortlet.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/summary/InventorySummaryPortlet.java
@@ -59,26 +59,30 @@ public class InventorySummaryPortlet extends LocatableVLayout
implements AutoRef
private ResourceBossGWTServiceAsync resourceBossService =
GWTServiceLookup.getResourceBossService();
private LocatableDynamicForm form;
- private Timer defaultReloader;
- private Timer reloader;
+ private Timer refreshTimer;
public InventorySummaryPortlet(String locatorId) {
super(locatorId);
- loadInventoryViewDiata();
+ loadInventoryViewData();
}
- private void loadInventoryViewDiata() {
+ private void loadInventoryViewData() {
for (Canvas child : getChildren()) {
child.destroy();
}
+ //destroy form
+ if (form != null) {
+ form.destroy();
+ }
+
resourceBossService.getInventorySummaryForLoggedInUser(new
AsyncCallback<InventorySummary>() {
public void onFailure(Throwable throwable) {
CoreGUI.getErrorHandler().handleError(MSG.view_portlet_inventory_error1(), throwable);
}
public void onSuccess(InventorySummary summary) {
- form = new
LocatableDynamicForm(extendLocatorId("Portlet_Inventory_Summary"));
+ form = new LocatableDynamicForm(extendLocatorId("Form"));
List<FormItem> formItems = new ArrayList<FormItem>();
// HeaderItem headerItem = new
HeaderItem("header");
@@ -155,12 +159,9 @@ public class InventorySummaryPortlet extends LocatableVLayout
implements AutoRef
@Override
public void redraw() {
super.redraw();
- if (form != null) {
- //destroy form
- form.destroy();
- }
+
//now reload the data
- loadInventoryViewDiata();
+ loadInventoryViewData();
}
public static final class Factory implements PortletViewFactory {
@@ -174,20 +175,34 @@ public class InventorySummaryPortlet extends LocatableVLayout
implements AutoRef
@Override
public void startRefreshCycle() {
//current setting
- final int retrievedRefreshInterval =
UserSessionManager.getUserPreferences().getPageRefreshInterval();
- //cancel previous operation
- if (defaultReloader != null) {
- defaultReloader.cancel();
+ final int refreshInterval =
UserSessionManager.getUserPreferences().getPageRefreshInterval();
+
+ //cancel any existing timer
+ if (refreshTimer != null) {
+ refreshTimer.cancel();
}
- if (retrievedRefreshInterval >= MeasurementUtility.MINUTES) {
- defaultReloader = new Timer() {
+
+ if (refreshInterval >= MeasurementUtility.MINUTES) {
+
+ refreshTimer = new Timer() {
public void run() {
+
redraw();
- //launch again until portlet reference and child references GC.
- defaultReloader.schedule(retrievedRefreshInterval);
}
};
- defaultReloader.schedule(retrievedRefreshInterval);
+
+ refreshTimer.scheduleRepeating(refreshInterval);
+ }
+ }
+
+ @Override
+ protected void onDestroy() {
+ if (refreshTimer != null) {
+
+ refreshTimer.cancel();
}
+
+ super.onDestroy();
}
+
}
commit d46949b2ddde6f3de9cc860edd575339ca28af27
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Tue Jan 18 14:02:41 2011 -0500
Change to ensure the server side logout uses the doomed sessionId in the
request header. This makes sense, consider it the last call of the previous
session. Moreover it protects against a null sessionid if the user hits
a quick browser refresh after logout.
also a lttle more trace-level log wrapping
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/UserSessionManager.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/UserSessionManager.java
index d3fa43e..b345cff 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/UserSessionManager.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/UserSessionManager.java
@@ -458,6 +458,13 @@ public class UserSessionManager {
}
try {
+ // The logout() method should be called against the dying session. This makes
sense and
+ // also protects against the fact that sessionSubject may be null at the time
of this call.
+ // The sessionSubject is used to build the server request, so it must be
valid.
+ Subject tempSubject = sessionSubject;
+ sessionSubject = new Subject();
+ sessionSubject.setSessionId(doomedSessionId);
+
GWTServiceLookup.getSubjectService().logout(doomedSessionId, new
AsyncCallback<Void>() {
public void onFailure(Throwable caught) {
CoreGUI.getErrorHandler().handleError(MSG.util_userSession_logoutFail(), caught);
@@ -469,6 +476,9 @@ public class UserSessionManager {
}
}
});
+
+ // return sessionSubject to its actual value
+ sessionSubject = tempSubject;
} catch (Throwable caught) {
CoreGUI.getErrorHandler().handleError(MSG.util_userSession_logoutFail(),
caught);
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/rpc/TrackingRequestCallback.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/rpc/TrackingRequestCallback.java
index 8356223..44264bb 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/rpc/TrackingRequestCallback.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/rpc/TrackingRequestCallback.java
@@ -46,7 +46,9 @@ public class TrackingRequestCallback implements RequestCallback {
}
public void onError(Request request, Throwable exception) {
- Log.trace(toString() + ": onError " + exception.getMessage());
+ if (Log.isTraceEnabled()) {
+ Log.trace(toString() + ": onError " + exception.getMessage());
+ }
RemoteServiceStatistics.record(getName(), getAge());
RPCTracker.getInstance().failCall(this);
@@ -56,7 +58,9 @@ public class TrackingRequestCallback implements RequestCallback {
}
public void onResponseReceived(Request request, Response response) {
- Log.trace(toString() + ": " + response.getStatusCode() + "/"
+ response.getStatusText());
+ if (Log.isTraceEnabled()) {
+ Log.trace(toString() + ": " + response.getStatusCode() +
"/" + response.getStatusText());
+ }
RemoteServiceStatistics.record(getName(), getAge());
if (STATUS_CODE_OK == response.getStatusCode()) {