/**
* Copyright (c) 2009--2012 Red Hat, Inc.
*
* This software is licensed to you under the GNU General Public License,
* version 2 (GPLv2). There is NO WARRANTY for this software, express or
* implied, including the implied warranties of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
* along with this software; if not, see
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
*
* Red Hat trademarks are not licensed under GPLv2. No permission is
* granted to use or replicate Red Hat trademarks that are incorporated
* in this software or its documentation.
*/
package com.redhat.rhn.frontend.events;
import com.redhat.rhn.common.conf.Config;
import com.redhat.rhn.common.messaging.EventMessage;
import com.redhat.rhn.common.messaging.Mail;
import com.redhat.rhn.common.messaging.SmtpMail;
import com.redhat.rhn.domain.user.User;
/**
* BaseMailAction - basic abstract class to encapsulate some common Action logic.
* @version $Rev$
*/
public abstract class BaseMailAction {
protected abstract String getSubject(BaseEvent evt);
protected abstract String[] getRecipients(User user);
/**
* Execute the TraceBack
* @param msg EventMessage to executed.
*/
public void execute(EventMessage msg) {
BaseEvent aevt = (BaseEvent) msg;
Mail mailer = getMail();
mailer.setRecipients(getRecipients(aevt.getUser()));
mailer.setSubject(getSubject(aevt));
mailer.setBody(msg.toText());
mailer.send();
}
/**
* Get the mailer associated with this class
*/
protected Mail getMail() {
String clazz = Config.get().getString(
"web.mailer_class");
if (clazz == null) {
return new SmtpMail();
}
try {
Class cobj = Class.forName(clazz);
return (Mail) cobj.newInstance();
}
catch (Exception e) {
return new SmtpMail();
}
}
}