package org.jboss.seam.transaction;
import static org.jboss.seam.ScopeType.APPLICATION;
import static org.jboss.seam.annotations.Install.BUILT_IN;
import org.jboss.seam.annotations.Install;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Observer;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.Startup;
import org.jboss.seam.annotations.intercept.BypassInterceptors;
import org.jboss.seam.international.StatusMessages;
import org.jboss.seam.international.StatusMessage.Severity;
/**
* Produces StatusMessages for JSF in response of certain transaction events.
* These events can be observed by support classes for other UI frameworks
* to produce similar messages.
*
* @author Dan Allen
*/
@Name("org.jboss.seam.transaction.facesTransactionEvents")
@Scope(APPLICATION)
@Install(precedence = BUILT_IN, classDependencies = "javax.faces.context.FacesContext")
@BypassInterceptors
@Startup
public class FacesTransactionEvents
{
private boolean transactionFailedMessageEnabled = true;
@Observer(Transaction.TRANSACTION_FAILED)
public void addTransactionFailedMessage(int status)
{
if (transactionFailedMessageEnabled) {
StatusMessages.instance().addFromResourceBundleOrDefault(
getTransactionFailedMessageSeverity(),
getTransactionFailedMessageKey(),
getTransactionFailedMessage());
}
}
public String getTransactionFailedMessage()
{
return "Transaction failed";
}
public Severity getTransactionFailedMessageSeverity()
{
return Severity.WARN;
}
public String getTransactionFailedMessageKey()
{
return "org.jboss.seam.TransactionFailed";
}
public boolean isTransactionFailedMessageEnabled()
{
return transactionFailedMessageEnabled;
}
public void setTransactionFailedMessageEnabled(boolean enabled)
{
this.transactionFailedMessageEnabled = enabled;
}
}