modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/Footer.java | 36 +-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java | 152 ++++++----
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/UserSessionManager.java | 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RoleLdapGroupSelector.java | 37 +-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java | 42 +-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertPortletDataSource.java | 37 +-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/imported/RecentlyAddedResourceDS.java | 74 +---
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/operation/RecentOperationsDataSource.java | 47 +--
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/operation/ScheduledOperationsDataSource.java | 44 +-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/resource/ProblemResourcesDataSource.java | 45 +-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java | 15
11 files changed, 313 insertions(+), 218 deletions(-)
New commits:
commit 96463b629a150b7df7792d0b23040851470ed96e
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Wed Oct 13 17:24:00 2010 -0400
i)new user registration validation ii)check client side for loggedIn before fetches.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java
index 69ff0ae..97a97d9 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java
@@ -22,9 +22,11 @@
*/
package org.rhq.enterprise.gui.coregui.client;
+import java.util.ArrayList;
import java.util.EnumSet;
import java.util.Map;
+import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestBuilder;
@@ -55,6 +57,8 @@ import com.smartgwt.client.widgets.form.fields.SubmitItem;
import com.smartgwt.client.widgets.form.fields.TextItem;
import com.smartgwt.client.widgets.form.fields.events.KeyPressEvent;
import com.smartgwt.client.widgets.form.fields.events.KeyPressHandler;
+import com.smartgwt.client.widgets.form.validator.LengthRangeValidator;
+import com.smartgwt.client.widgets.form.validator.RegExpValidator;
import com.smartgwt.client.widgets.layout.HStack;
import com.smartgwt.client.widgets.layout.VLayout;
@@ -81,6 +85,21 @@ public class LoginView extends Canvas {
public LoginView() {
}
+ //registration fields
+ private TextItem first;
+ private TextItem last;
+ private TextItem email;
+ private TextItem phone;
+ private TextItem department;
+ private ArrayList<DynamicForm> forms;
+ private static final String FIRST = "first";
+ private static final String LAST = "last";
+ private static final String USERNAME = "username";
+ private static final String EMAIL = "email";
+ private static final String PHONE = "phone";
+ private static final String DEPARTMENT = "department";
+ private static final String SESSIONID = "sessionid";
+
public void showLoginDialog() {
if (!loginShowing) {
loginShowing = true;
@@ -166,6 +185,8 @@ public class LoginView extends Canvas {
if (!loginShowing) {
loginShowing = true;
+ forms = new ArrayList<DynamicForm>();
+
form = new DynamicForm();
form.setMargin(25);
form.setAutoFocus(true);
@@ -179,18 +200,18 @@ public class LoginView extends Canvas {
+ "<br/> Once you click \"OK\" you will be logged in.<br/><br/>");
column.addMember(wrapInDynamicForm(1, header));
//build ui elements for registration screen
- final TextItem first = new TextItem("first", "First Name");
+ first = new TextItem(FIRST, "First Name");
{
first.setRequired(true);
first.setWrapTitle(false);
first.setWidth(100);
}
- final TextItem last = new TextItem("last", "Last Name");
+ last = new TextItem(LAST, "Last Name");
{
last.setWrapTitle(false);
last.setWidth(100);
}
- final TextItem username = new TextItem("username", "Username");
+ final TextItem username = new TextItem(USERNAME, "Username");
{
username.setRequired(true);
username.setValue(user);
@@ -198,12 +219,12 @@ public class LoginView extends Canvas {
username.setWidth(100);
column.addMember(wrapInDynamicForm(6, first, last, username));
}
- final TextItem email = new TextItem("email", "Email");
+ email = new TextItem(EMAIL, "Email");
email.setRequired(true);
email.setWidth(100);
- final TextItem phone = new TextItem("phone", "Phone");
+ phone = new TextItem(PHONE, "Phone");
phone.setWidth(100);
- final TextItem department = new TextItem("department", "Department");
+ department = new TextItem(DEPARTMENT, "Department");
department.setWidth(100);
SpacerItem space = new SpacerItem();
space.setColSpan(1);
@@ -219,20 +240,30 @@ public class LoginView extends Canvas {
IButton okButton = new IButton("OK");
okButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
- //pull in all relevant fields and do regular create
- //TODO: validation
- if (form.validate()) {
+ //validation
+ if (validateForms(forms)) {
+ Log.trace("Successfully validated all forms");
//populate form
- form.setValue("first", String.valueOf(first.getValue()));
- form.setValue("last", String.valueOf(last.getValue()));
- form.setValue("username", String.valueOf(username.getValue()));
- form.setValue("email", String.valueOf(email.getValue()));
- form.setValue("phone", String.valueOf(phone.getValue()));
- form.setValue("department", String.valueOf(department.getValue()));
- form.setValue("sessionid", sessionId);
+ form.setValue(FIRST, String.valueOf(first.getValue()));
+ form.setValue(LAST, String.valueOf(last.getValue()));
+ form.setValue(USERNAME, String.valueOf(username.getValue()));
+ form.setValue(EMAIL, String.valueOf(email.getValue()));
+ form.setValue(PHONE, String.valueOf(phone.getValue()));
+ form.setValue(DEPARTMENT, String.valueOf(department.getValue()));
+ form.setValue(SESSIONID, sessionId);
registerLdapUser(form, callback);
}
}
+
+ private boolean validateForms(ArrayList<DynamicForm> forms) {
+ boolean allValid = true;
+ for (DynamicForm form : forms) {
+ if (!form.validate()) {
+ allValid = false;
+ }
+ }
+ return allValid;
+ }
});
row.addMember(okButton);
@@ -251,7 +282,6 @@ public class LoginView extends Canvas {
IButton logout = new IButton("Logout");
logout.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
- // System.out.println("---------- CLICKED logout");
UserSessionManager.logout();
window.destroy();
loginShowing = false;
@@ -281,15 +311,6 @@ public class LoginView extends Canvas {
window.addItem(form);
window.show();
-
- // form.addSubmitValuesHandler(new SubmitValuesHandler() {
- // public void onSubmitValues(SubmitValuesEvent submitValuesEvent) {
- // System.out.println("IN SUBMIT HANDER");
- // if (form.validate()) {
- // login(form.getValueAsString("user"), form.getValueAsString("password"));
- // }
- // }
- // });
}
}
@@ -298,36 +319,36 @@ public class LoginView extends Canvas {
//insert some required data checking
boolean proceed = true;
- String retrieved = populatedForm.getValueAsString("username");
+ String retrieved = populatedForm.getValueAsString(USERNAME);
if ((retrieved == null) || retrieved.isEmpty() || retrieved.equalsIgnoreCase("null")) {
proceed = false;
}
- retrieved = populatedForm.getValueAsString("sessionid");
+ retrieved = populatedForm.getValueAsString(SESSIONID);
if ((retrieved == null) || retrieved.isEmpty() || retrieved.equalsIgnoreCase("null")) {
proceed = false;
}
- newSubject.setName(populatedForm.getValueAsString("username"));
- newSubject.setSessionId(Integer.valueOf(populatedForm.getValueAsString("sessionid")));
+ newSubject.setName(populatedForm.getValueAsString(USERNAME));
+ newSubject.setSessionId(Integer.valueOf(populatedForm.getValueAsString(SESSIONID)));
//don't load null values not set or returned from ldap server
- retrieved = populatedForm.getValueAsString("first");
+ retrieved = populatedForm.getValueAsString(FIRST);
if ((retrieved != null) && (!retrieved.equalsIgnoreCase("null")))
- newSubject.setFirstName(populatedForm.getValueAsString("first"));
- retrieved = populatedForm.getValueAsString("last");
+ newSubject.setFirstName(populatedForm.getValueAsString(FIRST));
+ retrieved = populatedForm.getValueAsString(LAST);
if ((retrieved != null) && (!retrieved.equalsIgnoreCase("null")))
- newSubject.setLastName(populatedForm.getValueAsString("last"));
+ newSubject.setLastName(populatedForm.getValueAsString(LAST));
- retrieved = populatedForm.getValueAsString("department");
+ retrieved = populatedForm.getValueAsString(DEPARTMENT);
if ((retrieved != null) && (!retrieved.equalsIgnoreCase("null")))
- newSubject.setDepartment(populatedForm.getValueAsString("department"));
+ newSubject.setDepartment(populatedForm.getValueAsString(DEPARTMENT));
- retrieved = populatedForm.getValueAsString("email");
+ retrieved = populatedForm.getValueAsString(EMAIL);
if ((retrieved != null) && (!retrieved.equalsIgnoreCase("null")))
- newSubject.setEmailAddress(populatedForm.getValueAsString("email"));
+ newSubject.setEmailAddress(populatedForm.getValueAsString(EMAIL));
- retrieved = populatedForm.getValueAsString("phone");
+ retrieved = populatedForm.getValueAsString(PHONE);
if ((retrieved != null) && (!retrieved.equalsIgnoreCase("null")))
- newSubject.setPhoneNumber(populatedForm.getValueAsString("phone"));
+ newSubject.setPhoneNumber(populatedForm.getValueAsString(PHONE));
// newSubject.setSmsAddress(populatedForm.getValueAsString("sms"));
newSubject.setFactive(true);
@@ -360,8 +381,10 @@ public class LoginView extends Canvas {
CoreGUI.getErrorHandler().handleError("Failed to create ldap Subject.", caught);
}
});
- } else {
+ } else {//log them out then reload LoginView
com.allen_sauer.gwt.log.client.Log.warn("Failed to locate username required to create LDAP subject.");
+ UserSessionManager.logout();
+ new LoginView().showLoginDialog();
}
}
@@ -373,15 +396,51 @@ public class LoginView extends Canvas {
*/
private Canvas wrapInDynamicForm(int columnCount, FormItem... header) {
DynamicForm form = new DynamicForm();
- if (columnCount < 1) {//default to label and details for each form item
- form.setNumCols(header.length * 2);
- } else {
- form.setNumCols(columnCount);
+ if (header != null) {
+ if (columnCount < 1) {//default to label and details for each form item
+ form.setNumCols(header.length * 2);
+ } else {
+ form.setNumCols(columnCount);
+ }
+ form.setFields(header);
+ //store away all forms for final validation
+ forms.add(form);
+ //load validators for form
+ loadValidators(form);
}
- form.setFields(header);
return form;
}
+ /**Build and loads the custom validators for each of the formItems
+ *
+ * @param form
+ */
+ private void loadValidators(DynamicForm form) {
+ if (form != null) {
+ for (FormItem item : form.getFields()) {
+ String name = item.getName();
+ if ((name != null) && (!name.isEmpty())) {
+ if (name.equals(USERNAME)) {
+ LengthRangeValidator validator = new LengthRangeValidator();
+ validator.setMin(6);
+ item.setValidators(validator);
+ }
+ if (name.equals(FIRST)) {
+ LengthRangeValidator validator = new LengthRangeValidator();
+ validator.setMin(1);
+ item.setValidators(validator);
+ }
+ if (name.equals(EMAIL)) {
+ RegExpValidator emailValidator = new RegExpValidator();
+ emailValidator.setErrorMessage("Invalid email address");
+ emailValidator.setExpression("^([a-zA-Z0-9_.\\-+])+(a)(([a-zA-Z0-9\\-])+\\.)+[a-zA-Z0-9]{2,4}$");
+ item.setValidators(emailValidator);
+ }
+ }
+ }
+ }
+ }
+
private void login(final String user, final String password) {
BrowserUtility.forceIe6Hacks();
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RoleLdapGroupSelector.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RoleLdapGroupSelector.java
index 82305b3..2443c5b 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RoleLdapGroupSelector.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RoleLdapGroupSelector.java
@@ -104,26 +104,27 @@ public class RoleLdapGroupSelector extends AbstractSelector<HashSet<Map<String,
if ((currentlyAssignedLdapGroups != null)
&& (!currentlyAssignedLdapGroups.isEmpty())) {
RecordList loaded = availableGrid.getDataAsRecordList();
- ArrayList<Integer> located = new ArrayList<Integer>();
- // for (LdapGroup group : currentlyAssignedLdapGroups) {
- for (Map groupMap : currentlyAssignedLdapGroups) {
- int index = loaded.findIndex(name, (String) groupMap.get(name));
- if (index > -1) {
- located.add(Integer.valueOf(index));
+ if (loaded != null) {
+ ArrayList<Integer> located = new ArrayList<Integer>();
+ for (Map groupMap : currentlyAssignedLdapGroups) {
+ int index = loaded.findIndex(name, (String) groupMap.get(name));
+ if (index > -1) {
+ located.add(Integer.valueOf(index));
+ }
}
+ int[] records = new int[located.size()];
+ int i = 0;
+ for (Integer index : located) {
+ records[i++] = index.intValue();
+ }
+ availableGrid.selectRecords(records);
+ //now simulate button push
+ assignedGrid.transferSelectedData(availableGrid);
+ initialLdapSelectionsLoad = false;
+ select(assignedGrid.getSelection());
+ updateButtons();
+ assignedGrid.deselectAllRecords();
}
- int[] records = new int[located.size()];
- int i = 0;
- for (Integer index : located) {
- records[i++] = index.intValue();
- }
- availableGrid.selectRecords(records);
- //now simulate button push
- assignedGrid.transferSelectedData(availableGrid);
- initialLdapSelectionsLoad = false;
- select(assignedGrid.getSelection());
- updateButtons();
- assignedGrid.deselectAllRecords();
}
}
});
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/imported/RecentlyAddedResourceDS.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/imported/RecentlyAddedResourceDS.java
index 17b4074..7d4ab76 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/imported/RecentlyAddedResourceDS.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/imported/RecentlyAddedResourceDS.java
@@ -27,6 +27,7 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
+import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.data.DSRequest;
@@ -42,6 +43,7 @@ import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.domain.resource.composite.RecentlyAddedResourceComposite;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
+import org.rhq.enterprise.gui.coregui.client.UserSessionManager;
import org.rhq.enterprise.gui.coregui.client.dashboard.Portlet;
import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
import org.rhq.enterprise.gui.coregui.client.util.MeasurementUtility;
@@ -126,59 +128,35 @@ public class RecentlyAddedResourceDS extends DataSource {
// TODO GH: Enhance resourceCriteria query to support itime based filtering for
// "Recently imported" resources
- // GWTServiceLookup.getResourceService().findRecentlyAddedResources(0, 100,
- GWTServiceLookup.getResourceService().findRecentlyAddedResources(ctime, maxItems,
- new AsyncCallback<List<RecentlyAddedResourceComposite>>() {
- public void onFailure(Throwable throwable) {
- CoreGUI.getErrorHandler().handleError("Failed to load recently added resources", throwable);
- }
+ //if logged in then proceed making server side calls
+ if (UserSessionManager.isLoggedIn()) {
+ GWTServiceLookup.getResourceService().findRecentlyAddedResources(ctime, maxItems,
+ new AsyncCallback<List<RecentlyAddedResourceComposite>>() {
+ public void onFailure(Throwable throwable) {
+ CoreGUI.getErrorHandler().handleError("Failed to load recently added resources", throwable);
+ }
- public void onSuccess(List<RecentlyAddedResourceComposite> recentlyAddedList) {
- List<RecentlyAddedResourceComposite> list = new ArrayList<RecentlyAddedResourceComposite>();
+ public void onSuccess(List<RecentlyAddedResourceComposite> recentlyAddedList) {
+ List<RecentlyAddedResourceComposite> list = new ArrayList<RecentlyAddedResourceComposite>();
- for (RecentlyAddedResourceComposite recentlyAdded : recentlyAddedList) {
- list.add(recentlyAdded);
- list.addAll(recentlyAdded.getChildren());
- }
+ for (RecentlyAddedResourceComposite recentlyAdded : recentlyAddedList) {
+ list.add(recentlyAdded);
+ list.addAll(recentlyAdded.getChildren());
+ }
- response.setData(buildNodes(list));
- response.setTotalRows(list.size());
- processResponse(request.getRequestId(), response);
- }
- });
- //
- // GWTServiceLookup.getResourceService().findResourcesByCriteria(c, new AsyncCallback<PageList<Resource>>() {
- // public void onFailure(Throwable caught) {
- // CoreGUI.getErrorHandler().handleError("Failed to load recently added resources data",caught);
- // response.setStatus(DSResponse.STATUS_FAILURE);
- // processResponse(request.getRequestId(), response);
- // }
- //
- // public void onSuccess(PageList<Resource> result) {
- // PageList<Resource> all = new PageList<Resource>();
- //
- // for (Resource root : result) {
- // all.add(root);
- // if (root.getChildResources() != null)
- // all.addAll(root.getChildResources());
- // }
- //
- //
- // response.setData(buildNodes(all));
- // response.setTotalRows(all.getTotalSize());
- // processResponse(request.getRequestId(), response);
- // }
- // });
+ response.setData(buildNodes(list));
+ response.setTotalRows(list.size());
+ processResponse(request.getRequestId(), response);
+ }
+ });
+ } else {//
+ Log.debug("user is not logged in. Not fetching recently added resource now.");
+ //answer the datasource
+ response.setTotalRows(0);
+ processResponse(request.getRequestId(), response);
+ }
}
- // private TreeNode[] buildNodes(PageList<Resource> list) {
- // TreeNode[] treeNodes = new TreeNode[list.size()];
- // for (int i = 0; i < list.size(); ++i) {
- // treeNodes[i] = new ResourceTreeNode(list.get(i));
- // }
- // return treeNodes;
- // }
-
private TreeNode[] buildNodes(List<RecentlyAddedResourceComposite> list) {
TreeNode[] treeNodes = new TreeNode[list.size()];
for (int i = 0; i < list.size(); ++i) {
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/operation/RecentOperationsDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/operation/RecentOperationsDataSource.java
index 863afe2..c79dbd5 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/operation/RecentOperationsDataSource.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/operation/RecentOperationsDataSource.java
@@ -21,6 +21,7 @@ package org.rhq.enterprise.gui.coregui.client.operation;
import java.util.Date;
import java.util.List;
+import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.data.DSRequest;
import com.smartgwt.client.data.DSResponse;
@@ -132,28 +133,36 @@ public class RecentOperationsDataSource extends
}
}
- GWTServiceLookup.getOperationService().findRecentCompletedOperations(pageSize,
- new AsyncCallback<List<DisambiguationReport<ResourceOperationLastCompletedComposite>>>() {
+ if (userStillLoggedIn()) {//check session validity
+ GWTServiceLookup.getOperationService().findRecentCompletedOperations(pageSize,
+ new AsyncCallback<List<DisambiguationReport<ResourceOperationLastCompletedComposite>>>() {
- public void onFailure(Throwable throwable) {
- CoreGUI.getErrorHandler().handleError("Failed to load recently completed operations.", throwable);
- }
-
- public void onSuccess(
- List<DisambiguationReport<ResourceOperationLastCompletedComposite>> recentOperationsList) {
+ public void onFailure(Throwable throwable) {
+ CoreGUI.getErrorHandler().handleError("Failed to load recently completed operations.",
+ throwable);
+ }
- //translate DisambiguationReport into dataset entries
- response.setData(buildList(recentOperationsList));
- //entry count
- if (null != recentOperationsList) {
- response.setTotalRows(recentOperationsList.size());
- } else {
- response.setTotalRows(0);
+ public void onSuccess(
+ List<DisambiguationReport<ResourceOperationLastCompletedComposite>> recentOperationsList) {
+
+ //translate DisambiguationReport into dataset entries
+ response.setData(buildList(recentOperationsList));
+ //entry count
+ if (null != recentOperationsList) {
+ response.setTotalRows(recentOperationsList.size());
+ } else {
+ response.setTotalRows(0);
+ }
+ //pass off for processing
+ processResponse(request.getRequestId(), response);
}
- //pass off for processing
- processResponse(request.getRequestId(), response);
- }
- });
+ });
+ } else {
+ Log.debug("user not logged in. Not fetching recently completed operations.");
+ //answer datasource
+ response.setTotalRows(0);
+ processResponse(request.getRequestId(), response);
+ }
}
/** Translates the DisambiguationReport of ResourceOperationLastCompletedComposites into specific
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/operation/ScheduledOperationsDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/operation/ScheduledOperationsDataSource.java
index ebb1185..ad86135 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/operation/ScheduledOperationsDataSource.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/operation/ScheduledOperationsDataSource.java
@@ -21,6 +21,7 @@ package org.rhq.enterprise.gui.coregui.client.operation;
import java.util.Date;
import java.util.List;
+import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.data.DSRequest;
import com.smartgwt.client.data.DSResponse;
@@ -125,27 +126,34 @@ public class ScheduledOperationsDataSource extends
}
}
- GWTServiceLookup.getOperationService().findScheduledOperations(pageSize,
- new AsyncCallback<List<DisambiguationReport<ResourceOperationScheduleComposite>>>() {
+ if (userStillLoggedIn()) {
+ GWTServiceLookup.getOperationService().findScheduledOperations(pageSize,
+ new AsyncCallback<List<DisambiguationReport<ResourceOperationScheduleComposite>>>() {
- public void onFailure(Throwable throwable) {
- CoreGUI.getErrorHandler().handleError("Failed to load scheduled operations.", throwable);
- }
-
- public void onSuccess(List<DisambiguationReport<ResourceOperationScheduleComposite>> scheduledOpsList) {
+ public void onFailure(Throwable throwable) {
+ CoreGUI.getErrorHandler().handleError("Failed to load scheduled operations.", throwable);
+ }
- //translate DisambiguationReport into dataset entries
- response.setData(buildList(scheduledOpsList));
- //entry count
- if (null != scheduledOpsList) {
- response.setTotalRows(scheduledOpsList.size());
- } else {
- response.setTotalRows(0);
+ public void onSuccess(
+ List<DisambiguationReport<ResourceOperationScheduleComposite>> scheduledOpsList) {
+
+ //translate DisambiguationReport into dataset entries
+ response.setData(buildList(scheduledOpsList));
+ //entry count
+ if (null != scheduledOpsList) {
+ response.setTotalRows(scheduledOpsList.size());
+ } else {
+ response.setTotalRows(0);
+ }
+ //pass off for processing
+ processResponse(request.getRequestId(), response);
}
- //pass off for processing
- processResponse(request.getRequestId(), response);
- }
- });
+ });
+ } else {
+ Log.debug("user not logged in. Not fetching scheduled operations.");
+ response.setTotalRows(0);
+ processResponse(request.getRequestId(), response);
+ }
}
/** Translates the DisambiguationReport of ProblemResourceComposites into specific
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/resource/ProblemResourcesDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/resource/ProblemResourcesDataSource.java
index 38c316b..af364e1 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/resource/ProblemResourcesDataSource.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/resource/ProblemResourcesDataSource.java
@@ -21,6 +21,7 @@ package org.rhq.enterprise.gui.coregui.client.resource;
import java.util.List;
+import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.data.DSRequest;
import com.smartgwt.client.data.DSResponse;
@@ -123,28 +124,34 @@ public class ProblemResourcesDataSource extends RPCDataSource<DisambiguationRepo
}
}
- GWTServiceLookup.getResourceService().findProblemResources(ctime, maxItems,
- new AsyncCallback<List<DisambiguationReport<ProblemResourceComposite>>>() {
+ if (userStillLoggedIn()) {
+ GWTServiceLookup.getResourceService().findProblemResources(ctime, maxItems,
+ new AsyncCallback<List<DisambiguationReport<ProblemResourceComposite>>>() {
- public void onFailure(Throwable throwable) {
- CoreGUI.getErrorHandler().handleError("Failed to load resources with alerts/unavailability.",
- throwable);
- }
-
- public void onSuccess(List<DisambiguationReport<ProblemResourceComposite>> problemResourcesList) {
+ public void onFailure(Throwable throwable) {
+ CoreGUI.getErrorHandler().handleError("Failed to load resources with alerts/unavailability.",
+ throwable);
+ }
- //translate DisambiguationReport into dataset entries
- response.setData(buildList(problemResourcesList));
- //entry count
- if (null != problemResourcesList) {
- response.setTotalRows(problemResourcesList.size());
- } else {
- response.setTotalRows(0);
+ public void onSuccess(List<DisambiguationReport<ProblemResourceComposite>> problemResourcesList) {
+
+ //translate DisambiguationReport into dataset entries
+ response.setData(buildList(problemResourcesList));
+ //entry count
+ if (null != problemResourcesList) {
+ response.setTotalRows(problemResourcesList.size());
+ } else {
+ response.setTotalRows(0);
+ }
+ //pass off for processing
+ processResponse(request.getRequestId(), response);
}
- //pass off for processing
- processResponse(request.getRequestId(), response);
- }
- });
+ });
+ } else {
+ Log.debug("user not logged in. Not fetching resources with alerts/unavailability.");
+ response.setTotalRows(0);
+ processResponse(request.getRequestId(), response);
+ }
}
/** Translates the DisambiguationReport of ProblemResourceComposites into specific
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java
index 014ce99..46f37b9 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java
@@ -24,7 +24,6 @@ import java.util.Collection;
import java.util.List;
import java.util.Map;
-import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.core.client.JavaScriptObject;
import com.smartgwt.client.data.Criteria;
import com.smartgwt.client.data.DSRequest;
@@ -319,7 +318,6 @@ public abstract class RPCDataSource<T> extends DataSource {
* @return boolean indication of logged in status.
*/
protected boolean userStillLoggedIn() {
- Log.debug("User still logged in:" + UserSessionManager.isLoggedIn());
return UserSessionManager.isLoggedIn();
}
commit a377d0793945449b692773321e346c0bd5874c0d
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Wed Oct 13 13:51:16 2010 -0400
i)inserted client side checking to lower amount of invalid requests for alerts ii)modified RPCDataSource to include login check method for all DataSources
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/Footer.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/Footer.java
index d7121e3..53e1ba4 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/Footer.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/Footer.java
@@ -18,6 +18,7 @@
*/
package org.rhq.enterprise.gui.coregui.client;
+import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.rpc.AsyncCallback;
@@ -149,22 +150,27 @@ public class Footer extends LocatableToolStrip {
// last eight hours
alertCriteria.addFilterStartTime(System.currentTimeMillis() - (1000L * 60 * 60 * 8));
- GWTServiceLookup.getAlertService().findAlertsByCriteria(alertCriteria,
- new AsyncCallback<PageList<Alert>>() {
- public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError("Latest alerts lookup failed", caught);
- }
-
- public void onSuccess(PageList<Alert> result) {
- if (result.isEmpty()) {
- setContents("no recent alerts");
- setIcon("subsystems/alert/Alert_LOW_16.png");
- } else {
- setContents(result.getTotalSize() + " recent alerts");
- setIcon("subsystems/alert/Alert_HIGH_16.png");
+ //check for still logged in before submitting server side request
+ if (UserSessionManager.isLoggedIn()) {
+ GWTServiceLookup.getAlertService().findAlertsByCriteria(alertCriteria,
+ new AsyncCallback<PageList<Alert>>() {
+ public void onFailure(Throwable caught) {
+ CoreGUI.getErrorHandler().handleError("Latest alerts lookup failed", caught);
+ }
+
+ public void onSuccess(PageList<Alert> result) {
+ if (result.isEmpty()) {
+ setContents("no recent alerts");
+ setIcon("subsystems/alert/Alert_LOW_16.png");
+ } else {
+ setContents(result.getTotalSize() + " recent alerts");
+ setIcon("subsystems/alert/Alert_HIGH_16.png");
+ }
}
- }
- });
+ });
+ } else {//dump request
+ Log.debug("user not logged in. Not fetching any alerts now.");
+ }
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java
index f6ca18f..69ff0ae 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java
@@ -294,7 +294,6 @@ public class LoginView extends Canvas {
}
protected void registerLdapUser(DynamicForm populatedForm, final AsyncCallback<Void> callback) {
- System.out.println("--------- In registerLdapUser:");
Subject newSubject = new Subject();
//insert some required data checking
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 7d7e738..2722ea4 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
@@ -54,7 +54,6 @@ import org.rhq.enterprise.gui.coregui.client.util.preferences.UserPreferences;
* @author Joseph Marques
*/
public class UserSessionManager {
-
private static int SESSION_TIMEOUT = 29 * 60 * 1000; // 29 mins, just shorter than the 30-min web session timeout
private static int LOGOUT_DELAY = 5 * 1000; // wait 5 seconds for in-flight requests to complete before logout
@@ -237,7 +236,6 @@ public class UserSessionManager {
}
});
} else {
- // System.out.println("--------------- Registration needed.");
Log.info("Proceeding with registration for ldap user '" + user + "'.");
loggedIn = true;
new LoginView().showRegistrationDialog(user, sessionId, callback);
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java
index a950c34..c8dbad3 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java
@@ -24,6 +24,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
@@ -143,23 +144,31 @@ public class AlertDataSource extends RPCDataSource<Alert> {
AlertCriteria criteria = getCriteria(request);
- this.alertService.findAlertsByCriteria(criteria, new AsyncCallback<PageList<Alert>>() {
+ //check for still logged in before submitting server side request
+ if (userStillLoggedIn()) {
+ this.alertService.findAlertsByCriteria(criteria, new AsyncCallback<PageList<Alert>>() {
- public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError("Failed to fetch alerts data", caught);
- response.setStatus(RPCResponse.STATUS_FAILURE);
- processResponse(request.getRequestId(), response);
- }
+ public void onFailure(Throwable caught) {
+ CoreGUI.getErrorHandler().handleError("Failed to fetch alerts data", caught);
+ response.setStatus(RPCResponse.STATUS_FAILURE);
+ processResponse(request.getRequestId(), response);
+ }
+
+ public void onSuccess(PageList<Alert> result) {
+ long fetchTime = System.currentTimeMillis() - start;
+ com.allen_sauer.gwt.log.client.Log.info(result.size() + " alerts fetched in: " + fetchTime + "ms");
+ response.setData(buildRecords(result));
+ // For paging to work, we have to specify size of full result set.
+ response.setTotalRows(result.getTotalSize());
+ processResponse(request.getRequestId(), response);
+ }
+ });
+ } else {//dump request
+ response.setTotalRows(0);
+ processResponse(request.getRequestId(), response);
+ Log.debug("user not logged in. Not fetching any alerts now.");
+ }
- public void onSuccess(PageList<Alert> result) {
- long fetchTime = System.currentTimeMillis() - start;
- com.allen_sauer.gwt.log.client.Log.info(result.size() + " alerts fetched in: " + fetchTime + "ms");
- response.setData(buildRecords(result));
- // For paging to work, we have to specify size of full result set.
- response.setTotalRows(result.getTotalSize());
- processResponse(request.getRequestId(), response);
- }
- });
}
protected AlertCriteria getCriteria(DSRequest request) {
@@ -284,7 +293,8 @@ public class AlertDataSource extends RPCDataSource<Alert> {
CoreGUI.getMessageCenter().notify(
new Message("Acknowledged [" + alertIds.length + "] alerts", Message.Severity.Info));
- com.allen_sauer.gwt.log.client.Log.info("Acknowledged Alerts with id's: " + Arrays.toString(alertIds) + ".");
+ com.allen_sauer.gwt.log.client.Log.info("Acknowledged Alerts with id's: " + Arrays.toString(alertIds)
+ + ".");
alertsView.refresh();
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertPortletDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertPortletDataSource.java
index ad825a9..28da47f 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertPortletDataSource.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertPortletDataSource.java
@@ -1,5 +1,6 @@
package org.rhq.enterprise.gui.coregui.client.alert;
+import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.data.DSRequest;
import com.smartgwt.client.data.DSResponse;
@@ -86,22 +87,30 @@ public class AlertPortletDataSource extends AlertDataSource {
criteria.addFilterPriority(AlertPriority.getByLegacyIndex(getAlertPriorityIndex()));
}
- getAlertService().findAlertsByCriteria(criteria, new AsyncCallback<PageList<Alert>>() {
+ //check for still logged in before submitting server side request
+ if (userStillLoggedIn()) {
+ getAlertService().findAlertsByCriteria(criteria, new AsyncCallback<PageList<Alert>>() {
- public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError("Failed to fetch alerts data", caught);
- response.setStatus(RPCResponse.STATUS_FAILURE);
- processResponse(request.getRequestId(), response);
- }
+ public void onFailure(Throwable caught) {
+ CoreGUI.getErrorHandler().handleError("Failed to fetch alerts data", caught);
+ response.setStatus(RPCResponse.STATUS_FAILURE);
+ processResponse(request.getRequestId(), response);
+ }
- public void onSuccess(PageList<Alert> result) {
- long fetchTime = System.currentTimeMillis() - start;
- com.allen_sauer.gwt.log.client.Log.info(result.size() + " alerts fetched in: " + fetchTime + "ms");
- response.setData(buildRecords(result));
- response.setTotalRows(result.size());
- processResponse(request.getRequestId(), response);
- }
- });
+ public void onSuccess(PageList<Alert> result) {
+ long fetchTime = System.currentTimeMillis() - start;
+ Log.info(result.size() + " alerts fetched in: " + fetchTime + "ms");
+ response.setData(buildRecords(result));
+ response.setTotalRows(result.size());
+ processResponse(request.getRequestId(), response);
+ }
+ });
+ } else {//dump request
+ response.setTotalRows(0);
+ processResponse(request.getRequestId(), response);
+ //TODO: spinder 10/13/10: not sure if we should log anything here. Could be noisy in log with not a lot of gain.
+ Log.debug("user not logged in. Not fetching any alerts now.");
+ }
}
public int getAlertRangeCompleted() {
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java
index 86ab57e..014ce99 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java
@@ -18,12 +18,13 @@
*/
package org.rhq.enterprise.gui.coregui.client.util;
-import java.util.Arrays;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Map;
+import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.core.client.JavaScriptObject;
import com.smartgwt.client.data.Criteria;
import com.smartgwt.client.data.DSRequest;
@@ -39,6 +40,7 @@ import com.smartgwt.client.widgets.grid.ListGridRecord;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageOrdering;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
+import org.rhq.enterprise.gui.coregui.client.UserSessionManager;
import org.rhq.enterprise.gui.coregui.client.util.effects.ColoringUtility;
/**
@@ -229,7 +231,7 @@ public abstract class RPCDataSource<T> extends DataSource {
addField(field);
}
}
-
+
public void addFields(DataSourceField... fields) {
addFields(Arrays.asList(fields));
}
@@ -310,4 +312,15 @@ public abstract class RPCDataSource<T> extends DataSource {
return result;
}
+
+ /** Quick method to determine if current user is still logged in.
+ * Builds a
+ *
+ * @return boolean indication of logged in status.
+ */
+ protected boolean userStillLoggedIn() {
+ Log.debug("User still logged in:" + UserSessionManager.isLoggedIn());
+ return UserSessionManager.isLoggedIn();
+ }
+
}