SK.gnome.dwarf.mail.smtp.proc
Class MailFilter

java.lang.Object
  extended bySK.gnome.dwarf.GenericService
      extended bySK.gnome.dwarf.mail.smtp.proc.MailFilter
All Implemented Interfaces:
SK.gnome.dwarf.Service
Direct Known Subclasses:
HasAttachment, HasHeader, IsNotDSN, RecipientFilter, RecipientIsSender, RemoteAddrIs, RemoteAddrIsNot, SenderIs, SenderIsNot, SizeGreaterThan, SizeLessThan, SubjectIs, SubjectIsNot, SubjectStartsWith

public abstract class MailFilter
extends SK.gnome.dwarf.GenericService

Provides mail filter.

This class decides whether a particular message will be processed by the containing agent. The abstract filter(MailAgentMessage, Collection) method matches the message and its recipients with the given condition, and if it returns a non-empty collection, the message along with the filtered recipients will be passed to the mail agent processing method. Otherwise, the message will not be passed to the agent at all.

Derived classes may override the init(MailAgentContext) and destroy() methods to easily initialize and destory the mail filters, but they may not forget to call the inherited original methods in the overriden method body.


Field Summary
protected  java.lang.String condition
          The filtering condition.
protected  MailAgentContext context
          The mail agent context associated with this filter.
 
Fields inherited from class SK.gnome.dwarf.GenericService
initParameters, parent
 
Fields inherited from interface SK.gnome.dwarf.Service
INITIALIZED, LOG_DEBUG, LOG_ERROR, LOG_FATAL, LOG_INFO, LOG_TRACE, LOG_WARN, LOG_XFER, SHUTDOWN, STARTED, STOPPED
 
Constructor Summary
MailFilter(java.lang.String name)
          Creates a new MailFilter.
 
Method Summary
protected  void destroy()
          Destroys the mail filter.
protected abstract  java.util.Collection filter(MailAgentMessage message, java.util.Collection recipients)
          Filters the given message.
protected  void init(MailAgentContext context)
          Initializes the mail filter.
 void setCondition(java.lang.String condition)
          Sets the filtering condition.
 
Methods inherited from class SK.gnome.dwarf.GenericService
getAuthenticator, getAuthFacility, getFullName, getInitParameter, getInitParameterNames, getLogFacility, getLogger, getName, getParameters, getPrincipal, getShutdownTimeout, getState, init, log, log, login, logout, setAuthFacility, setInitParameters, setLogFacility, shutdown, start, stop, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

condition

protected java.lang.String condition
The filtering condition.


context

protected MailAgentContext context
The mail agent context associated with this filter.

Constructor Detail

MailFilter

public MailFilter(java.lang.String name)
Creates a new MailFilter.

Parameters:
name - the filter name
Method Detail

setCondition

public void setCondition(java.lang.String condition)
Sets the filtering condition.

Parameters:
condition - the condition string

init

protected void init(MailAgentContext context)
             throws MailException
Initializes the mail filter.

This method may be overriden by the subclasses as needed.

Parameters:
context - the mail context associated with this filter
Throws:
MailException - if an error occured

destroy

protected void destroy()
                throws MailException
Destroys the mail filter.

This method may be overriden by the subclasses as needed.

Throws:
MailException - if an error occured

filter

protected abstract java.util.Collection filter(MailAgentMessage message,
                                               java.util.Collection recipients)
                                        throws MailException
Filters the given message.

Matches the message and its recipients with the given condition. If the matching process fails, an empty collection is returned. Otherwise, the method returns a collection of recipients which meets the given condition. If the condition is not based on the message recipients, the returned collection will contain all message recipients. If the matching is based on the recipients, the collection will contain only those ones, which actually meets the recipient-based condition.

Method must return a new Collection object each time it is called.

Parameters:
message - the queued message
recipients - the input collection of recipients
Returns:
the filtered collection of recipients
Throws:
MailException - if an error occured


Copyright (c) 2004-2005, Gnome Ltd. All rights reserved.