modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/alert/CustomContentUIBean.java
| 4
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertNotificationManagerBean.java
| 13 +-
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
| 12 +-
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerLocal.java
| 7 -
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/plugin/pc/alert/AlertSenderPluginManager.java
| 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/plugin/pc/alert/CustomAlertSenderBackingBean.java
| 14 --
modules/enterprise/server/plugins/alert-roles/pom.xml
| 7 -
modules/enterprise/server/plugins/alert-roles/src/main/java/org/rhq/enterprise/server/plugins/alertRoles/RolesBackingBean.java
| 11 --
modules/enterprise/server/plugins/alert-roles/src/main/java/org/rhq/enterprise/server/plugins/alertRoles/RolesSender.java
| 42 ++++++++
modules/enterprise/server/plugins/alert-roles/src/main/resources/roles.xhtml
| 30 +++---
modules/enterprise/server/plugins/alert-subject/pom.xml
| 15 ++-
modules/enterprise/server/plugins/alert-subject/src/main/java/org/rhq/enterprise/server/plugins/alertSubject/SubjectsBackingBean.java
| 50 +++++++++-
modules/enterprise/server/plugins/alert-subject/src/main/java/org/rhq/enterprise/server/plugins/alertSubject/SubjectsSender.java
| 29 +++++
modules/enterprise/server/plugins/alert-subject/src/main/resources/subjects.xhtml
| 42 +++++---
14 files changed, 201 insertions(+), 77 deletions(-)
New commits:
commit d5977e9bd0708ea9eb173bf5a2ee48c25393bd29
Author: Heiko W. Rupp <pilhuhn(a)fedorapeople.org>
Date: Fri Jan 29 17:56:26 2010 +0100
Now we also show the selected stuff in the custom UI panel.
diff --git
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/alert/CustomContentUIBean.java
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/alert/CustomContentUIBean.java
index c47666e..f58a9a3 100644
---
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/alert/CustomContentUIBean.java
+++
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/alert/CustomContentUIBean.java
@@ -61,7 +61,7 @@ public class CustomContentUIBean {
}
String backingBeanName =
alertNotificationManager.getBackingBeanNameForSender(this.senderName);
- CustomAlertSenderBackingBean backingBean =
alertNotificationManager.getBackingBeanForSender(this.senderName,
+ CustomAlertSenderBackingBean backingBean =
alertNotificationManager.getBackingBeanForSender(this.senderName, // TODO notificationId
may be stale after removal of notification
notificationId);
if (backingBeanName != null && backingBean != null) {
@@ -75,7 +75,7 @@ public class CustomContentUIBean {
* dynamically assign the component's name so that the plugin author can define
the
* name of bean, but this class is not an "official" seam component.
*/
- private void outjectBean(String name, Object bean) {
+ private void outjectBean(String name, CustomAlertSenderBackingBean bean) {
Context pageContext = Contexts.getPageContext();
pageContext.set(name, bean);
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertNotificationManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertNotificationManagerBean.java
index f45ef94..08cbe40 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertNotificationManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertNotificationManagerBean.java
@@ -431,21 +431,24 @@ public class AlertNotificationManagerBean implements
AlertNotificationManagerLoc
/**
- * Return the backing bean for the AlertSender with the passed shortName
+ * Return the backing bean for the AlertSender with the passed shortName. If a
notificationId is passed,
+ * we try to load the configuration for this notification and pass it to the
CustomAlertSenderBackingBean instance
* @param shortName name of a sender
- * @param alertNotificationId
+ * @param alertNotificationId id of the notification we assign this sender + its
backing bean to
* @return an initialized BackingBean or null in case of error
*/
public CustomAlertSenderBackingBean getBackingBeanForSender(String shortName, Integer
alertNotificationId) {
+
AlertSenderPluginManager pluginmanager = alertManager.getAlertPluginManager();
CustomAlertSenderBackingBean bean =
pluginmanager.getBackingBeanForSender(shortName);
if (alertNotificationId!=null) {
AlertNotification notification = entityManager.find(AlertNotification.class,
alertNotificationId);
if (notification!=null && bean != null) {
- Configuration config = notification.getConfiguration(); // TODO clone?
- config.getAllProperties().size(); // Eager load
- bean.setAlertParameters(config);
+ Configuration config = notification.getConfiguration();
+ Configuration config2 = config.deepCopy(true);
+
+ bean.setAlertParameters(config2);
}
}
return bean;
diff --git a/modules/enterprise/server/plugins/alert-roles/pom.xml
b/modules/enterprise/server/plugins/alert-roles/pom.xml
index 106738b..c456b3b 100644
--- a/modules/enterprise/server/plugins/alert-roles/pom.xml
+++ b/modules/enterprise/server/plugins/alert-roles/pom.xml
@@ -33,13 +33,6 @@
</dependency>
<dependency>
- <groupId>javax.mail</groupId>
- <artifactId>mail</artifactId>
- <version>1.3.1</version>
- <scope>provided</scope> <!-- by JBossAS -->
- </dependency>
-
- <dependency>
<groupId>org.rhq</groupId>
<artifactId>rhq-enterprise-server</artifactId>
<version>${project.version}</version>
diff --git
a/modules/enterprise/server/plugins/alert-roles/src/main/java/org/rhq/enterprise/server/plugins/alertRoles/RolesBackingBean.java
b/modules/enterprise/server/plugins/alert-roles/src/main/java/org/rhq/enterprise/server/plugins/alertRoles/RolesBackingBean.java
index ade82b0..d577120 100644
---
a/modules/enterprise/server/plugins/alert-roles/src/main/java/org/rhq/enterprise/server/plugins/alertRoles/RolesBackingBean.java
+++
b/modules/enterprise/server/plugins/alert-roles/src/main/java/org/rhq/enterprise/server/plugins/alertRoles/RolesBackingBean.java
@@ -55,12 +55,14 @@ public class RolesBackingBean extends CustomAlertSenderBackingBean {
String rolesString =
alertParameters.getSimpleValue("roleId","");
String[] roles = rolesString.split(",");
if (currentRoles==null)
- currentRoles = new ArrayList();
+ currentRoles = new ArrayList<String>();
for (String r : roles)
currentRoles.add(r);
}
public List<String> getCurrentRoles() {
+ if (currentRoles==null)
+ fillRolesFromAlertParameters();
return currentRoles;
}
@@ -76,6 +78,7 @@ public class RolesBackingBean extends CustomAlertSenderBackingBean {
PageList<Role> rolesList = mgr.findRoles(new PageControl());
for (Role role : rolesList) {
+ // TODO filter out all resources role
this.rolesMap.put(role.getName(), role.getId().toString());
}
}
@@ -85,8 +88,6 @@ public class RolesBackingBean extends CustomAlertSenderBackingBean {
public String submit() {
- System.out.println("In Submit");
-
System.out.println("Selected roles: ");
String roles="";
for (String role : currentRoles) {
@@ -109,10 +110,6 @@ public class RolesBackingBean extends CustomAlertSenderBackingBean {
fillRolesFromAlertParameters();
-
-
- // TODO: Customise this generated block
-
return "ALERT_NOTIFICATIONS";
}
diff --git a/modules/enterprise/server/plugins/alert-roles/src/main/resources/roles.xhtml
b/modules/enterprise/server/plugins/alert-roles/src/main/resources/roles.xhtml
index 4c47a1a..759b820 100644
--- a/modules/enterprise/server/plugins/alert-roles/src/main/resources/roles.xhtml
+++ b/modules/enterprise/server/plugins/alert-roles/src/main/resources/roles.xhtml
@@ -9,10 +9,10 @@
xmlns:a4j="https://richfaces.org/a4j"
xmlns:rich="http://richfaces.ajax4jsf.org/rich">
- <body>
- <h:panelGrid columns="3">
+<body>
+<h:panelGrid columns="3">
- <h:panelGroup>
+ <h:panelGroup>
<h:outputText value="Select the roles to add:" />
<br/>
@@ -20,17 +20,19 @@
<h:selectManyListbox id="mySenderList"
value="#{rolesBean.currentRoles}">
<f:selectItems value="#{rolesBean.rolesMap}"/>
</h:selectManyListbox>
- </h:panelGroup>
- <h:panelGroup>
+ </h:panelGroup>
+
+ <h:panelGroup>
<br />
<h:commandButton id="roles_submit"
- value="Add Roles"
- type="submit"
- action="#{rolesBean.submit}" />
- </h:panelGroup>
- <h:panelGroup>
- <h:outputText value="#{rolesBean.currentRoles}"/>
- </h:panelGroup>
- </h:panelGrid>
- </body>
+ value="Add Roles"
+ type="submit"
+ action="#{rolesBean.submit}" />
+ </h:panelGroup>
+
+ <h:panelGroup>
+ <h:outputText value="#{rolesBean.currentRoles}"/>
+ </h:panelGroup>
+</h:panelGrid>
+</body>
</html>
\ No newline at end of file
diff --git
a/modules/enterprise/server/plugins/alert-subject/src/main/java/org/rhq/enterprise/server/plugins/alertSubject/SubjectsBackingBean.java
b/modules/enterprise/server/plugins/alert-subject/src/main/java/org/rhq/enterprise/server/plugins/alertSubject/SubjectsBackingBean.java
index b52c6e3..5af59ca 100644
---
a/modules/enterprise/server/plugins/alert-subject/src/main/java/org/rhq/enterprise/server/plugins/alertSubject/SubjectsBackingBean.java
+++
b/modules/enterprise/server/plugins/alert-subject/src/main/java/org/rhq/enterprise/server/plugins/alertSubject/SubjectsBackingBean.java
@@ -65,6 +65,8 @@ public class SubjectsBackingBean extends CustomAlertSenderBackingBean {
}
public List<String> getCurrentSubjects() {
+ if (currentSubjects==null)
+ fillSubjectsFromAlertParameters();
return currentSubjects;
}
commit caa20c37e0c8bc9a71b82be73e59582988b081cc
Author: Heiko W. Rupp <pilhuhn(a)fedorapeople.org>
Date: Fri Jan 29 17:07:06 2010 +0100
Get the subject sender to basically work
diff --git a/modules/enterprise/server/plugins/alert-subject/pom.xml
b/modules/enterprise/server/plugins/alert-subject/pom.xml
index 13b3b95..511dac3 100644
--- a/modules/enterprise/server/plugins/alert-subject/pom.xml
+++ b/modules/enterprise/server/plugins/alert-subject/pom.xml
@@ -24,6 +24,7 @@
<properties>
<scm.module.path>modules/enterprise/server/plugins/alert-subject/</scm.module.path>
+ <seam.version>2.1.0.SP1</seam.version>
</properties>
<dependencies>
@@ -34,7 +35,7 @@
<version>${project.version}</version>
<scope>provided</scope> <!-- by ear -->
</dependency>
-
+
<dependency>
<groupId>org.rhq</groupId>
<artifactId>rhq-enterprise-server</artifactId>
@@ -43,6 +44,18 @@
<!-- by JBossAS -->
</dependency>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>jboss-seam</artifactId>
+ <version>${seam.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>xml-apis</groupId>
+ <artifactId>xml-apis</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
<!-- This is a fix for the Javac bug requiring annotations to be
available when compiling dependent classes. -->
diff --git
a/modules/enterprise/server/plugins/alert-subject/src/main/java/org/rhq/enterprise/server/plugins/alertSubject/SubjectsBackingBean.java
b/modules/enterprise/server/plugins/alert-subject/src/main/java/org/rhq/enterprise/server/plugins/alertSubject/SubjectsBackingBean.java
index 1e870ba..b52c6e3 100644
---
a/modules/enterprise/server/plugins/alert-subject/src/main/java/org/rhq/enterprise/server/plugins/alertSubject/SubjectsBackingBean.java
+++
b/modules/enterprise/server/plugins/alert-subject/src/main/java/org/rhq/enterprise/server/plugins/alertSubject/SubjectsBackingBean.java
@@ -18,6 +18,7 @@
*/
package org.rhq.enterprise.server.plugins.alertSubject;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -26,22 +27,42 @@ import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.jboss.seam.annotations.Create;
+
import org.rhq.core.domain.auth.Subject;
+import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.enterprise.server.auth.SubjectManagerLocal;
+import org.rhq.enterprise.server.plugin.pc.alert.CustomAlertSenderBackingBean;
import org.rhq.enterprise.server.util.LookupUtil;
/**
* Backing Bean for the subjects sender alert sender plugin custom UI
* @author Heiko W. Rupp
*/
-public class SubjectsBackingBean {
+public class SubjectsBackingBean extends CustomAlertSenderBackingBean {
private final Log log = LogFactory.getLog(SubjectsBackingBean.class);
private Map<String, String> subjectsMap;
private List<String> currentSubjects;
+ private static final String SUBJECT_ID = "subjectId";
+
+ @Create
+ public void init() {
+ getSubjectsMap();
+ fillSubjectsFromAlertParameters();
+ }
+
+ private void fillSubjectsFromAlertParameters() {
+ String rolesString = alertParameters.getSimpleValue(SUBJECT_ID,"");
+ String[] subjects = rolesString.split(",");
+ if (currentSubjects==null)
+ currentSubjects = new ArrayList<String>();
+ for (String r : subjects)
+ currentSubjects.add(r);
+ }
public List<String> getCurrentSubjects() {
return currentSubjects;
@@ -61,7 +82,7 @@ public class SubjectsBackingBean {
PageList<Subject> subjectList = mgr.findAllSubjects(new
PageControl());
Map<String,String> ret = new HashMap<String, String>();
for (Subject subject : subjectList) {
- subjectsMap.put(subject.getName(),subject.getName());
+ subjectsMap.put(subject.getName(),String.valueOf(subject.getId()));
}
}
return subjectsMap;
@@ -69,7 +90,28 @@ public class SubjectsBackingBean {
}
public String submit() {
- // TODO: Customise this generated block
+
+ System.out.println("Selected subjects: ");
+ String subjects="";
+ for (String subject : currentSubjects) {
+ System.out.println(subject);
+ subjects += subject;
+ subjects += ",";
+ }
+ if (subjects.endsWith(","))
+ subjects = subjects.substring(0,subjects.length()-1);
+
+ PropertySimple p = alertParameters.getSimple(SUBJECT_ID);
+ if (p==null) {
+ p = new PropertySimple(SUBJECT_ID,subjects);
+ alertParameters.put(p);
+ }
+ else
+ p.setStringValue(subjects);
+
+ alertParameters = persistConfiguration(alertParameters);
+
+ fillSubjectsFromAlertParameters();
return "ALERT_NOTIFICATIONS";
}
diff --git
a/modules/enterprise/server/plugins/alert-subject/src/main/resources/subjects.xhtml
b/modules/enterprise/server/plugins/alert-subject/src/main/resources/subjects.xhtml
index 156fe56..92852bf 100644
--- a/modules/enterprise/server/plugins/alert-subject/src/main/resources/subjects.xhtml
+++ b/modules/enterprise/server/plugins/alert-subject/src/main/resources/subjects.xhtml
@@ -9,21 +9,29 @@
xmlns:a4j="https://richfaces.org/a4j"
xmlns:rich="http://richfaces.ajax4jsf.org/rich">
- <body>
- <rich:panel id="subject_config_panel">
- <f:facet name="header">
- <h:outputText>Select the subjects to add:</h:outputText>
- </f:facet>
- <h:selectManyMenu id="mySenderList"
value="#{subjectsBean.currentSubjects}">
- <f:selectItems value="#{subjectsBean.subjectMap}"/>
- </h:selectManyMenu>
- <br/>
- <h:commandButton
- id="subjects_submit"
- value="Add Subjects"
- type="submit"
- action="#{subjectsBean.submit}"
- />
- </rich:panel>
- </body>
+<body>
+<h:panelGrid columns="3">
+ <h:panelGroup>
+ <h:outputText>Select the subjects to add:</h:outputText>
+ <br/>
+ <h:selectManyListbox id="mySenderList"
value="#{subjectsBean.currentSubjects}">
+ <f:selectItems value="#{subjectsBean.subjectsMap}"/>
+ </h:selectManyListbox>
+ </h:panelGroup>
+
+ <h:panelGroup>
+ <br/>
+ <h:commandButton
+ id="subjects_submit"
+ value="Add Subjects"
+ type="submit"
+ action="#{subjectsBean.submit}"
+ />
+ </h:panelGroup>
+
+ <h:panelGroup>
+ <h:outputText value="${subjectsBean.currentSubjects}"/>
+ </h:panelGroup>
+</h:panelGrid>
+</body>
</html>
\ No newline at end of file
commit d081350a41087845649c979a0d42cca2179ed1e1
Author: Heiko W. Rupp <pilhuhn(a)fedorapeople.org>
Date: Fri Jan 29 15:44:23 2010 +0100
Perist config updates.
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/plugin/pc/alert/CustomAlertSenderBackingBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/plugin/pc/alert/CustomAlertSenderBackingBean.java
index ae1d674..af5928c 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/plugin/pc/alert/CustomAlertSenderBackingBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/plugin/pc/alert/CustomAlertSenderBackingBean.java
@@ -18,13 +18,8 @@
*/
package org.rhq.enterprise.server.plugin.pc.alert;
-import javax.persistence.EntityManager;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
import org.rhq.core.domain.configuration.Configuration;
-import org.rhq.enterprise.server.alert.AlertNotificationManagerLocal;
+import org.rhq.enterprise.server.configuration.ConfigurationManagerLocal;
import org.rhq.enterprise.server.util.LookupUtil;
/**
@@ -47,11 +42,8 @@ public class CustomAlertSenderBackingBean {
protected Configuration persistConfiguration(Configuration config) {
-// AlertNotificationManagerLocal alNo = LookupUtil.getAlertNotificationManager();
-// alNo.updateConfiguration(config);
-
- EntityManager em = LookupUtil.getEntityManager();
- config = em.merge(config);
+ ConfigurationManagerLocal mgr = LookupUtil.getConfigurationManager();
+ config = mgr.mergeConfiguration(config);
return config;
commit 3c6bf7ff7f517624e538189124265813b70c112b
Author: Heiko W. Rupp <pilhuhn(a)fedorapeople.org>
Date: Fri Jan 29 15:43:01 2010 +0100
Add a method to just merge changes to a passed Configuration.
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
index fbae47d..d081931 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
@@ -177,9 +177,9 @@ public class ConfigurationManagerBean implements
ConfigurationManagerLocal, Conf
configurationManager.completePluginConfigurationUpdate(update);
}
- /*
+ /*
* this method will not fire off the update asynchronously (like the
completeResourceConfigurationUpdate method
- * does); instead, it will block until an update response is retrieved from the
agent-side resource
+ * does); instead, it will block until an update response is retrieved from the
agent-side resource
*/
public void completePluginConfigurationUpdate(PluginConfigurationUpdate update) {
// use EJB3 reference to ourself so that transaction semantics are correct
@@ -1202,7 +1202,7 @@ public class ConfigurationManagerBean implements
ConfigurationManagerLocal, Conf
update.setStatus(response.getStatus());
update.setErrorMessage(response.getErrorMessage());
- /*
+ /*
* instead of checking for completed group resource configuration updates here,
let our caller (the
* ConfigurationServerService) do it so that this transaction completes before
the check begins
*/
@@ -1944,4 +1944,10 @@ public class ConfigurationManagerBean implements
ConfigurationManagerLocal, Conf
}
}
+ public Configuration mergeConfiguration(Configuration config) {
+
+ Configuration out = entityManager.merge(config);
+ return out;
+ }
+
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerLocal.java
index f54254c..94168aa 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerLocal.java
@@ -96,7 +96,7 @@ public interface ConfigurationManagerLocal {
*/
Configuration getLiveResourceConfiguration(Subject subject, int resourceId, boolean
pingAgentFirst)
throws Exception;
-
+
Configuration getLiveResourceConfiguration(Subject subject, int resourceId, boolean
pingAgentFirst,
boolean fromStructured) throws Exception;
@@ -346,7 +346,7 @@ public interface ConfigurationManagerLocal {
* @param subject the current subject
* @param groupId the id of the compatible group
* @return
- * @throws ConfigurationUpdateInProgressException if config updates, for the group or
any member, are in progress,
+ * @throws ConfigurationUpdateInProgressException if config updates, for the group or
any member, are in progress,
* @throws Exception if 1) one or more of the group's members are DOWN, or 2) we
fail to retrieve one or more member
* live configs from the corresponding Agents
*/
@@ -464,7 +464,7 @@ public interface ConfigurationManagerLocal {
* @param resourceId identifies the resource to be updated
* @param newConfiguration the resource's desired new configuration
*
- * @return the resource configuration update item corresponding to this request. null
+ * @return the resource configuration update item corresponding to this request.
null
* if newConfiguration is equal to the existing configuration.
*/
@Nullable
@@ -489,4 +489,5 @@ public interface ConfigurationManagerLocal {
Configuration translateResourceConfiguration(Subject subject, int resourceId,
Configuration configuration,
boolean fromStructured) throws ResourceNotFoundException,
TranslationNotSupportedException;
+ Configuration mergeConfiguration(Configuration config);
}
\ No newline at end of file
commit d59759c5526e93a5f203cc50a85bff80d6b4de68
Author: Heiko W. Rupp <pilhuhn(a)fedorapeople.org>
Date: Fri Jan 29 15:41:58 2010 +0100
Implement the sending part
diff --git
a/modules/enterprise/server/plugins/alert-roles/src/main/java/org/rhq/enterprise/server/plugins/alertRoles/RolesSender.java
b/modules/enterprise/server/plugins/alert-roles/src/main/java/org/rhq/enterprise/server/plugins/alertRoles/RolesSender.java
index 4940923..7992fdd 100644
---
a/modules/enterprise/server/plugins/alert-roles/src/main/java/org/rhq/enterprise/server/plugins/alertRoles/RolesSender.java
+++
b/modules/enterprise/server/plugins/alert-roles/src/main/java/org/rhq/enterprise/server/plugins/alertRoles/RolesSender.java
@@ -18,14 +18,22 @@
*/
package org.rhq.enterprise.server.plugins.alertRoles;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.rhq.core.domain.alert.Alert;
+import org.rhq.core.domain.auth.Subject;
+import org.rhq.core.domain.authz.Role;
import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.enterprise.server.authz.RoleManagerLocal;
import org.rhq.enterprise.server.plugin.pc.alert.AlertSender;
import org.rhq.enterprise.server.plugin.pc.alert.ResultState;
import org.rhq.enterprise.server.plugin.pc.alert.SenderResult;
+import org.rhq.enterprise.server.util.LookupUtil;
/**
* AlertSender that notifies RHQ roles by gathering the email addresses of the
@@ -41,8 +49,38 @@ public class RolesSender extends AlertSender {
@Override
public SenderResult send(Alert alert) {
- PropertySimple subjectIdProp = alertParameters.getSimple("roleId");
+ SenderResult noRecipients = new SenderResult(ResultState.FAILURE, "No
recipient roles defined");
+
+ PropertySimple rolesIdProp = alertParameters.getSimple("roleId");
+ if (rolesIdProp==null)
+ return noRecipients;
+
+ String rolesIds = rolesIdProp.getStringValue();
+ if (rolesIds==null)
+ return noRecipients;
+
+ String[] roles = rolesIds.split(",");
+ if (roles.length==0)
+ return noRecipients;
+
+ List<String> emails = new ArrayList<String>();
+ RoleManagerLocal roleManager = LookupUtil.getRoleManager();
+ Subject overlord = LookupUtil.getSubjectManager().getOverlord();
+
+ for (String r: roles) {
+
+ Role role = roleManager.getRole(overlord,Integer.parseInt(r));
+ Set<Subject> subjects = role.getSubjects();
+ for (Subject subject : subjects) {
+ String email = subject.getEmailAddress();
+ if (email!=null)
+ emails.add(email);
+ else
+ if (log.isDebugEnabled())
+ log.debug("Subject " + subject.getId() + " has no
email associated ");
+ }
+ }
- return new SenderResult(ResultState.FAILURE,"Not yet implemented");
+ return new SenderResult(ResultState.DEFERRED_EMAIL,"Sending to roles "
+ rolesIds,emails);
}
}
diff --git
a/modules/enterprise/server/plugins/alert-subject/src/main/java/org/rhq/enterprise/server/plugins/alertSubject/SubjectsSender.java
b/modules/enterprise/server/plugins/alert-subject/src/main/java/org/rhq/enterprise/server/plugins/alertSubject/SubjectsSender.java
index 3736c12..354db91 100644
---
a/modules/enterprise/server/plugins/alert-subject/src/main/java/org/rhq/enterprise/server/plugins/alertSubject/SubjectsSender.java
+++
b/modules/enterprise/server/plugins/alert-subject/src/main/java/org/rhq/enterprise/server/plugins/alertSubject/SubjectsSender.java
@@ -18,14 +18,20 @@
*/
package org.rhq.enterprise.server.plugins.alertSubject;
+import java.util.ArrayList;
+import java.util.List;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.rhq.core.domain.alert.Alert;
+import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.enterprise.server.auth.SubjectManagerLocal;
import org.rhq.enterprise.server.plugin.pc.alert.AlertSender;
import org.rhq.enterprise.server.plugin.pc.alert.ResultState;
import org.rhq.enterprise.server.plugin.pc.alert.SenderResult;
+import org.rhq.enterprise.server.util.LookupUtil;
/**
* AlertSender that notifies RHQ subjects by gathering the email addresses of the
@@ -41,9 +47,30 @@ public class SubjectsSender extends AlertSender {
@Override
public SenderResult send(Alert alert) {
+ SenderResult noSubjects = new SenderResult(ResultState.FAILURE,"No subjects
defined");
PropertySimple subjectIdProp = alertParameters.getSimple("subjectId");
+ if (subjectIdProp==null )
+ return noSubjects;
+
+ String subjectIdString = subjectIdProp.getStringValue();
+ if (subjectIdString==null)
+ return noSubjects;
+
+ String[] subjectIds = subjectIdString.split(",");
+
+ List<String> emails = new ArrayList<String>(subjectIds.length);
+ SubjectManagerLocal subjectMgr = LookupUtil.getSubjectManager();
+ for (String subjectId : subjectIds ) {
+ Subject subject = subjectMgr.getSubjectById(Integer.parseInt(subjectId));
+ String emailAddress = subject.getEmailAddress();
+ if (emailAddress!=null)
+ emails.add(emailAddress);
+ else
+ if (log.isDebugEnabled())
+ log.debug("Subject " + subject.getId() + " has no
email associated ");
+ }
- return new SenderResult(ResultState.FAILURE,"Not yet implemented");
+ return new SenderResult(ResultState.DEFERRED_EMAIL,"Sending to subject ids
" + subjectIdString , emails);
}
}
commit f5a0771580f24869dfe96c6b09f8c8a56a933197
Author: Heiko W. Rupp <pilhuhn(a)fedorapeople.org>
Date: Thu Jan 28 17:50:46 2010 +0100
Prevent NPE when the bean could not be instantiated.
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/plugin/pc/alert/AlertSenderPluginManager.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/plugin/pc/alert/AlertSenderPluginManager.java
index f1b6fd7..aa9c6c9 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/plugin/pc/alert/AlertSenderPluginManager.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/plugin/pc/alert/AlertSenderPluginManager.java
@@ -247,11 +247,11 @@ public class AlertSenderPluginManager extends ServerPluginManager {
try {
bean = (CustomAlertSenderBackingBean) instantiatePluginClass(env,
className);
+ bean.alertParameters = new Configuration(); // Just to be sure
} catch (Exception e) {
log.error("Can't instantiate alert sender backing bean [" +
className + "]. Cause: " + e.getMessage());
}
- bean.alertParameters = new Configuration(); // TODO fix me
return bean;
}