1 /************************************************************************ 2 * Copyright (c) 1999-2006 The Apache Software Foundation. * 3 * All rights reserved. * 4 * ------------------------------------------------------------------- * 5 * Licensed under the Apache License, Version 2.0 (the "License"); you * 6 * may not use this file except in compliance with the License. You * 7 * may obtain a copy of the License at: * 8 * * 9 * http://www.apache.org/licenses/LICENSE-2.0 * 10 * * 11 * Unless required by applicable law or agreed to in writing, software * 12 * distributed under the License is distributed on an "AS IS" BASIS, * 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * 14 * implied. See the License for the specific language governing * 15 * permissions and limitations under the License. * 16 ***********************************************************************/ 17 18 package org.apache.mailet; 19 20 import javax.mail.MessagingException; 21 import java.util.Collection; 22 import java.util.Iterator; 23 import java.util.Vector; 24 25 /*** 26 * GenericMatcher makes writing recipient based matchers easier. It provides 27 * simple versions of the lifecycle methods init and destroy and of the methods 28 * in the MatcherConfig interface. GenericMatcher also implements the log method, 29 * declared in the MatcherContext interface. 30 * 31 * @version 1.0.0, 24/04/1999 32 */ 33 public abstract class GenericRecipientMatcher extends GenericMatcher { 34 35 /*** 36 * Matches each recipient one by one through matchRecipient(MailAddress 37 * recipient) method. Handles splitting the recipients Collection 38 * as appropriate. 39 * 40 * @param mail - the message and routing information to determine whether to match 41 * @return Collection the Collection of MailAddress objects that have been matched 42 */ 43 public final Collection match(Mail mail) throws MessagingException { 44 Collection matching = new Vector(); 45 for (Iterator i = mail.getRecipients().iterator(); i.hasNext(); ) { 46 MailAddress rec = (MailAddress) i.next(); 47 if (matchRecipient(rec)) { 48 matching.add(rec); 49 } 50 } 51 return matching; 52 } 53 54 /*** 55 * Simple check to match exclusively on the email address (not 56 * message information). 57 * 58 * @param recipient - the address to determine whether to match 59 * @return boolean whether the recipient is a match 60 */ 61 public abstract boolean matchRecipient(MailAddress recipient) throws MessagingException; 62 }