KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > james > transport > mailets > ToProcessor


1 /***********************************************************************
2  * Copyright (c) 2000-2004 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.james.transport.mailets;
19
20 import org.apache.mailet.GenericMailet;
21 import org.apache.mailet.Mail;
22 import org.apache.mailet.MailetException;
23
24 import javax.mail.MessagingException JavaDoc;
25
26 /**
27  * This mailet redirects the mail to the named processor
28  *
29  * Sample configuration:
30  * <mailet match="All" class="ToProcessor">
31  * <processor>spam</processor>
32  * <notice>Notice attached to the message (optional)</notice>
33  * </mailet>
34  *
35  */

36 public class ToProcessor extends GenericMailet {
37
38     /**
39      * Controls certain log messages
40      */

41     private boolean isDebug = false;
42
43     /**
44      * The name of the processor to which this mailet forwards mail
45      */

46     String JavaDoc processor;
47
48     /**
49      * The error message to attach to the forwarded message
50      */

51     String JavaDoc noticeText = null;
52
53     /**
54      * Initialize the mailet
55      *
56      * @throws MailetException if the processor parameter is missing
57      */

58     public void init() throws MailetException {
59         isDebug = (getInitParameter("debug") == null) ? false : new Boolean JavaDoc(getInitParameter("debug")).booleanValue();
60         processor = getInitParameter("processor");
61         if (processor == null) {
62             throw new MailetException("processor parameter is required");
63         }
64         noticeText = getInitParameter("notice");
65     }
66
67     /**
68      * Deliver a mail to the processor.
69      *
70      * @param mail the mail to process
71      *
72      * @throws MessagingException in all cases
73      */

74     public void service(Mail mail) throws MessagingException JavaDoc {
75         if (isDebug) {
76             StringBuffer JavaDoc logBuffer =
77                 new StringBuffer JavaDoc(128)
78                         .append("Sending mail ")
79                         .append(mail)
80                         .append(" to ")
81                         .append(processor);
82             log(logBuffer.toString());
83         }
84         mail.setState(processor);
85         if (noticeText != null) {
86             if (mail.getErrorMessage() == null) {
87                 mail.setErrorMessage(noticeText);
88             } else {
89                 StringBuffer JavaDoc errorMessageBuffer =
90                     new StringBuffer JavaDoc(256)
91                             .append(mail.getErrorMessage())
92                             .append("\r\n")
93                             .append(noticeText);
94                 mail.setErrorMessage(errorMessageBuffer.toString());
95             }
96         }
97     }
98
99     /**
100      * Return a string describing this mailet.
101      *
102      * @return a string describing this mailet
103      */

104     public String JavaDoc getMailetInfo() {
105         return "ToProcessor Mailet";
106     }
107 }
108
Popular Tags