package mireka.filter; import mireka.ConfigurationException; import mireka.address.Recipient; import mireka.destination.Destination; /** * RecipientContext collects information about a specific recipient during the * mail transaction. */ public class RecipientContext { private final MailTransaction mailTransaction; public final Recipient recipient; private Destination destination; /** * True if the mail has been passed to a reliable service, e.g. a back-end * SMTP server. This status flag is only used for recognizing and reporting * a wrong configuration, when delivery to a recipient is not handled by any * of the filters. */ public boolean isResponsibilityTransferred; public RecipientContext(MailTransaction mailTransaction, Recipient recipient) { this.mailTransaction = mailTransaction; this.recipient = recipient; } public boolean isDestinationAssigned() { return destination != null; } /** * @x.category GETSET */ public void setDestination(Destination destination) { this.destination = destination; } /** * @throws ConfigurationException * if no destination is assigned yet */ public Destination getDestination() throws ConfigurationException { if (destination == null) throw new ConfigurationException( "Destination has not been assigned to recipient " + recipient + " (or to the final recipient if this " + "is an alias) yet by the filter chain, " + "this is likely caused by wrong configuration"); return destination; } /** * @x.category GETSET */ public MailTransaction getMailTransaction() { return mailTransaction; } }