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@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-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@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(); + } + }
rhq-commits@lists.fedorahosted.org