View Javadoc

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