modules/core/domain/src/main/java/org/rhq/core/domain/util/StringUtils.java
| 4 +
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NotificationsAlertDefinitionForm.java
| 40 +++++++---
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/AlertDefinitionGWTService.java
| 3
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AlertDefinitionGWTServiceImpl.java
| 18 ++++
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
| 30 +++++++
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerLocal.java
| 3
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerRemote.java
| 6 +
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/webservices/WebservicesManagerBean.java
| 16 ++--
8 files changed, 105 insertions(+), 15 deletions(-)
New commits:
commit b6bf65f099863bb16d5bc920be9ad29eb5b1d3ce
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Wed Sep 29 17:30:21 2010 -0400
alert def / notification editor's list now shows the sender config preview in the
config column
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NotificationsAlertDefinitionForm.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NotificationsAlertDefinitionForm.java
index 18931c0..cffdd78 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NotificationsAlertDefinitionForm.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NotificationsAlertDefinitionForm.java
@@ -26,6 +26,7 @@ package org.rhq.enterprise.gui.coregui.client.alert.definitions;
import java.util.ArrayList;
import java.util.List;
+import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.data.DSRequest;
import com.smartgwt.client.data.DSResponse;
import com.smartgwt.client.data.fields.DataSourceTextField;
@@ -38,9 +39,11 @@ import com.smartgwt.client.widgets.grid.ListGridRecord;
import org.rhq.core.domain.alert.AlertDefinition;
import org.rhq.core.domain.alert.notification.AlertNotification;
+import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.components.table.Table;
import org.rhq.enterprise.gui.coregui.client.components.table.TableAction;
import org.rhq.enterprise.gui.coregui.client.components.table.Table.SelectionEnablement;
+import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
import org.rhq.enterprise.gui.coregui.client.util.RPCDataSource;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableWindow;
@@ -226,20 +229,39 @@ public class NotificationsAlertDefinitionForm extends
LocatableVLayout implement
@Override
public ListGridRecord copyValues(AlertNotification from) {
ListGridRecord record = new ListGridRecord();
- record.setAttribute(FIELD_SENDER, from.getSenderName());
- record.setAttribute(FIELD_CONFIGURATION,
from.getConfiguration().toString(false));
- // TODO configuration should be the string of
-
//getAlertManager().getAlertPluginManager().getAlertSenderForNotification(alertNotification).previewConfiguration()
- // TODO what's this extra configuration in the notification?
-
record.setAttribute(FIELD_OBJECT, from);
+ record.setAttribute(FIELD_SENDER, from.getSenderName());
+ // our executeFetch will fill in the real value for FIELD_CONFIGURATION
+ record.setAttribute(FIELD_CONFIGURATION, "(unknown)");
+ // TODO what's the extraConfiguration the notification?
return record;
}
@Override
- protected void executeFetch(DSRequest request, DSResponse response) {
- response.setData(buildRecords(notifications));
- processResponse(request.getRequestId(), response);
+ protected void executeFetch(final DSRequest request, final DSResponse response)
{
+ final ListGridRecord[] records = buildRecords(notifications); // partially
builds the records, but we need to do another remote call to get the config preview
+
+ AlertNotification[] notifs = notifications.toArray(new
AlertNotification[notifications.size()]);
+
GWTServiceLookup.getAlertDefinitionService().getAlertNotificationConfigurationPreview(notifs,
+ new AsyncCallback<String[]>() {
+ @Override
+ public void onSuccess(String[] result) {
+ int i = 0;
+ for (ListGridRecord record : records) {
+ record.setAttribute(FIELD_CONFIGURATION, result[i++]);
+ }
+ response.setData(records);
+ processResponse(request.getRequestId(), response);
+ }
+
+ @Override
+ public void onFailure(Throwable caught) {
+ CoreGUI.getErrorHandler().handleError("Failed to get
notification configuration preview",
+ caught);
+ response.setData(records);
+ processResponse(request.getRequestId(), response);
+ }
+ });
}
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/AlertDefinitionGWTService.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/AlertDefinitionGWTService.java
index e0d4e94..4819bac 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/AlertDefinitionGWTService.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/AlertDefinitionGWTService.java
@@ -21,6 +21,7 @@ package org.rhq.enterprise.gui.coregui.client.gwt;
import com.google.gwt.user.client.rpc.RemoteService;
import org.rhq.core.domain.alert.AlertDefinition;
+import org.rhq.core.domain.alert.notification.AlertNotification;
import org.rhq.core.domain.criteria.AlertDefinitionCriteria;
import org.rhq.core.domain.util.PageList;
@@ -38,4 +39,6 @@ public interface AlertDefinitionGWTService extends RemoteService {
int disableAlertDefinitions(Integer[] alertDefinitionIds) throws Exception;
int removeAlertDefinitions(Integer[] alertDefinitionIds) throws Exception;
+
+ String[] getAlertNotificationConfigurationPreview(AlertNotification[] notifs) throws
Exception;
}
\ No newline at end of file
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AlertDefinitionGWTServiceImpl.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AlertDefinitionGWTServiceImpl.java
index 392e710..d1f492b 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AlertDefinitionGWTServiceImpl.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AlertDefinitionGWTServiceImpl.java
@@ -19,6 +19,7 @@
package org.rhq.enterprise.gui.coregui.server.gwt;
import org.rhq.core.domain.alert.AlertDefinition;
+import org.rhq.core.domain.alert.notification.AlertNotification;
import org.rhq.core.domain.criteria.AlertDefinitionCriteria;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.util.exception.ThrowableUtil;
@@ -32,6 +33,7 @@ public class AlertDefinitionGWTServiceImpl extends
AbstractGWTServiceImpl implem
private AlertDefinitionManagerLocal alertDefManager =
LookupUtil.getAlertDefinitionManager();
+ @Override
public PageList<AlertDefinition>
findAlertDefinitionsByCriteria(AlertDefinitionCriteria criteria) {
try {
PageList<AlertDefinition> results =
this.alertDefManager.findAlertDefinitionsByCriteria(
@@ -42,6 +44,7 @@ public class AlertDefinitionGWTServiceImpl extends
AbstractGWTServiceImpl implem
}
}
+ @Override
public int createAlertDefinition(AlertDefinition alertDefinition, Integer resourceId)
throws Exception {
try {
int results = alertDefManager.createAlertDefinition(getSessionSubject(),
alertDefinition, resourceId);
@@ -51,6 +54,7 @@ public class AlertDefinitionGWTServiceImpl extends
AbstractGWTServiceImpl implem
}
}
+ @Override
public AlertDefinition updateAlertDefinition(int alertDefinitionId, AlertDefinition
alertDefinition,
boolean updateInternals) throws Exception {
try {
@@ -62,6 +66,7 @@ public class AlertDefinitionGWTServiceImpl extends
AbstractGWTServiceImpl implem
}
}
+ @Override
public int enableAlertDefinitions(Integer[] alertDefinitionIds) throws Exception {
try {
int results = alertDefManager.enableAlertDefinitions(getSessionSubject(),
alertDefinitionIds);
@@ -71,6 +76,7 @@ public class AlertDefinitionGWTServiceImpl extends
AbstractGWTServiceImpl implem
}
}
+ @Override
public int disableAlertDefinitions(Integer[] alertDefinitionIds) throws Exception {
try {
int results = alertDefManager.disableAlertDefinitions(getSessionSubject(),
alertDefinitionIds);
@@ -80,6 +86,7 @@ public class AlertDefinitionGWTServiceImpl extends
AbstractGWTServiceImpl implem
}
}
+ @Override
public int removeAlertDefinitions(Integer[] alertDefinitionIds) throws Exception {
try {
int results = alertDefManager.removeAlertDefinitions(getSessionSubject(),
alertDefinitionIds);
@@ -88,4 +95,15 @@ public class AlertDefinitionGWTServiceImpl extends
AbstractGWTServiceImpl implem
throw new RuntimeException(ThrowableUtil.getAllMessages(e));
}
}
+
+ @Override
+ public String[] getAlertNotificationConfigurationPreview(AlertNotification[] notifs)
throws Exception {
+ try {
+ String[] results =
alertDefManager.getAlertNotificationConfigurationPreview(getSessionSubject(), notifs);
+ return SerialUtility.prepare(results,
"getAlertNotificationConfigurationPreview");
+ } catch (Exception e) {
+ throw new RuntimeException(ThrowableUtil.getAllMessages(e));
+ }
+ }
+
}
\ No newline at end of file
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
index 3c41812..a221d96 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
@@ -32,6 +32,8 @@ import javax.persistence.Query;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.jboss.annotation.IgnoreDependency;
+
import org.rhq.core.domain.alert.AlertCondition;
import org.rhq.core.domain.alert.AlertConditionCategory;
import org.rhq.core.domain.alert.AlertConditionLog;
@@ -55,6 +57,8 @@ import org.rhq.enterprise.server.alert.engine.AlertDefinitionEvent;
import org.rhq.enterprise.server.authz.AuthorizationManagerLocal;
import org.rhq.enterprise.server.authz.PermissionException;
import org.rhq.enterprise.server.cloud.StatusManagerLocal;
+import org.rhq.enterprise.server.plugin.pc.alert.AlertSender;
+import org.rhq.enterprise.server.plugin.pc.alert.AlertSenderPluginManager;
import org.rhq.enterprise.server.util.CriteriaQueryGenerator;
import org.rhq.enterprise.server.util.CriteriaQueryRunner;
@@ -74,6 +78,9 @@ public class AlertDefinitionManagerBean implements
AlertDefinitionManagerLocal,
private AuthorizationManagerLocal authorizationManager;
@EJB
private AlertDefinitionManagerLocal alertDefinitionManager;
+ @EJB
+ @IgnoreDependency
+ private AlertManagerLocal alertManager;
@EJB
private StatusManagerLocal agentStatusManager;
@@ -696,4 +703,27 @@ public class AlertDefinitionManagerBean implements
AlertDefinitionManagerLocal,
CriteriaQueryRunner<AlertDefinition> queryRunner = new
CriteriaQueryRunner(criteria, generator, entityManager);
return queryRunner.execute();
}
+
+ @Override
+ public String[] getAlertNotificationConfigurationPreview(Subject sessionSubject,
AlertNotification[] notifications) {
+ if (notifications == null || notifications.length == 0) {
+ return new String[0];
+ }
+
+ AlertSenderPluginManager alertPluginManager =
alertManager.getAlertPluginManager();
+
+ String[] previews = new String[notifications.length];
+ int i = 0;
+ for (AlertNotification notif : notifications) {
+ AlertSender<?> sender =
alertPluginManager.getAlertSenderForNotification(notif);
+ if (sender != null) {
+ previews[i++] = sender.previewConfiguration();
+ } else {
+ previews[i++] = "n/a (unknown sender)";
+ }
+ }
+
+ return previews;
+ }
+
}
\ No newline at end of file
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerLocal.java
index 6908301..cca307f 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerLocal.java
@@ -23,6 +23,7 @@ import java.util.List;
import javax.ejb.Local;
import org.rhq.core.domain.alert.AlertDefinition;
+import org.rhq.core.domain.alert.notification.AlertNotification;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.common.composite.IntegerOptionItem;
import org.rhq.core.domain.criteria.AlertDefinitionCriteria;
@@ -81,4 +82,6 @@ public interface AlertDefinitionManagerLocal {
int disableAlertDefinitions(Subject subject, Integer[] alertDefinitionIds);
int removeAlertDefinitions(Subject subject, Integer[] alertDefinitionIds);
+
+ String[] getAlertNotificationConfigurationPreview(Subject sessionSubject,
AlertNotification[] notifications);
}
\ No newline at end of file
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerRemote.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerRemote.java
index 3ed890b..3280d70 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerRemote.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerRemote.java
@@ -25,6 +25,7 @@ import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import org.rhq.core.domain.alert.AlertDefinition;
+import org.rhq.core.domain.alert.notification.AlertNotification;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.criteria.AlertDefinitionCriteria;
import org.rhq.core.domain.util.PageList;
@@ -59,4 +60,9 @@ public interface AlertDefinitionManagerRemote {
@WebParam(name = "subject") Subject subject, //
@WebParam(name = "alertDefinitionIds") Integer[] alertDefinitionIds);
+ @WebMethod
+ String[] getAlertNotificationConfigurationPreview(//
+ @WebParam(name = "subject") Subject subject, //
+ @WebParam(name = "notifications") AlertNotification[] notifications);
+
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/webservices/WebservicesManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/webservices/WebservicesManagerBean.java
index 0062843..d5f3cce 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/webservices/WebservicesManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/webservices/WebservicesManagerBean.java
@@ -30,7 +30,6 @@ import java.util.Map;
import java.util.Set;
import javax.ejb.Stateless;
-import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlSeeAlso;
@@ -38,6 +37,7 @@ import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.rhq.core.domain.alert.Alert;
import org.rhq.core.domain.alert.AlertDefinition;
+import org.rhq.core.domain.alert.notification.AlertNotification;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.authz.Role;
import org.rhq.core.domain.bundle.Bundle;
@@ -166,7 +166,7 @@ import org.rhq.enterprise.server.util.LookupUtil;
*/
@Stateless
@WebService(endpointInterface =
"org.rhq.enterprise.server.webservices.WebservicesRemote", targetNamespace =
ServerVersion.namespace)
-@XmlSeeAlso({ PropertyDefinition.class, PropertyDefinitionSimple.class,
PropertyDefinitionList.class,
+@XmlSeeAlso( { PropertyDefinition.class, PropertyDefinitionSimple.class,
PropertyDefinitionList.class,
PropertyDefinitionMap.class })
public class WebservicesManagerBean implements WebservicesRemote {
@@ -229,6 +229,10 @@ public class WebservicesManagerBean implements WebservicesRemote {
return alertDefinitionManager.removeAlertDefinitions(subject,
alertDefinitionIds);
}
+ public String[] getAlertNotificationConfigurationPreview(Subject subject,
AlertNotification[] alertNotifications) {
+ return alertDefinitionManager.getAlertNotificationConfigurationPreview(subject,
alertNotifications);
+ }
+
//ALERTDEFINITIONMANAGER: END ----------------------------------
//AVAILABILITYMANAGER: BEGIN ----------------------------------
@@ -784,14 +788,14 @@ public class WebservicesManagerBean implements WebservicesRemote {
//REPOMANAGER: END ----------------------------------
//RESOURCEFACTORYMANAGER: BEGIN ----------------------------------
- public CreateResourceHistory createResource(Subject subject, int parentResourceId,
int resourceTypeId, String resourceName,
- Configuration pluginConfiguration, Configuration resourceConfiguration) {
+ public CreateResourceHistory createResource(Subject subject, int parentResourceId,
int resourceTypeId,
+ String resourceName, Configuration pluginConfiguration, Configuration
resourceConfiguration) {
return resourceFactoryManager.createResource(subject, parentResourceId,
resourceTypeId, resourceName,
pluginConfiguration, resourceConfiguration);
}
- public CreateResourceHistory createPackageBackedResource(Subject subject, int
parentResourceId, int newResourceTypeId,
- String newResourceName,//
+ public CreateResourceHistory createPackageBackedResource(Subject subject, int
parentResourceId,
+ int newResourceTypeId, String newResourceName,//
@XmlJavaTypeAdapter(value = ConfigurationAdapter.class)//
Configuration pluginConfiguration, String packageName, String packageVersion,
Integer architectureId,//
@XmlJavaTypeAdapter(value = ConfigurationAdapter.class)//
commit 6ecb7125e01e08584558b6d5176f85ef0ecf7e54
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Wed Sep 29 17:28:00 2010 -0400
fix NPE
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/util/StringUtils.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/util/StringUtils.java
index 88c08ee..336aff1 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/util/StringUtils.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/util/StringUtils.java
@@ -38,6 +38,10 @@ public class StringUtils {
* Take something that is camel-cased, add spaces between the words, and capitalize
each word.
*/
public static String deCamelCase(String target) {
+ if (target == null) {
+ return null;
+ }
+
if (target.length() == 0) {
return "";
}