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.james.transport.mailets;
21  
22  import org.apache.james.transport.mailets.listservcommands.IListServCommand;
23  import org.apache.james.services.UsersRepository;
24  import org.apache.james.util.XMLResources;
25  import org.apache.mailet.Mailet;
26  import org.apache.mailet.Mail;
27  import org.apache.mailet.MailAddress;
28  import org.apache.avalon.framework.configuration.ConfigurationException;
29  
30  import javax.mail.MessagingException;
31  import java.util.Map;
32  import java.util.Properties;
33  
34  /***
35   * ICommandListservManager is the interface that describes the functionality of any
36   * command based list serv managers.
37   *
38   * In order to obtain a reference to one, you can call:
39   * <pre>
40   * ICommandListservManager mgr = (ICommandListservManager)mailetContext.getAttribute(ICommandListservManager.ID + listName);
41   * </pre>
42   *
43   * @version CVS $Revision: 494012 $ $Date: 2007-01-08 10:23:58 +0000 (Mon, 08 Jan 2007) $
44   * @since 2.2.0
45   */
46  public interface ICommandListservManager extends Mailet {
47  
48      public static final String ID = ICommandListservManager.class.getName();
49  
50      /***
51       * Get the name of this list
52       * @param displayFormat is whether you want a display version of this or not
53       * @return the official display name of this list
54       */
55      public String getListName(boolean displayFormat);
56  
57      /***
58       * Gets the owner of this list
59       * @return this is an address like listOwner@localhost
60       */
61      public String getListOwner();
62  
63      /***
64       * Get the domain of the list
65       * @return a string like localhost
66       */
67      public String getListDomain();
68  
69      /***
70       * Get a specific command
71       * @param name case in-sensitive
72       * @return a {@link IListServCommand} if found, null otherwise
73       */
74      public IListServCommand getCommand(String name);
75  
76      /***
77       * Get all the available commands
78       * @return a map of {@link IListServCommand}s
79       */
80      public Map getCommands();
81  
82      /***
83       * Based on the to address get a valid or command or null
84       * @param mailAddress
85       * @return IListServCommand or null
86       */
87      public IListServCommand getCommandTarget(MailAddress mailAddress);
88  
89      /***
90       * Get the current user repository for this list serv
91       * @return an instance of {@link UsersRepository} that is used for the member list of the list serv
92       */
93      public UsersRepository getUsersRepository();
94  
95      /***
96       * An error occurred, send some sort of message to the sender
97       * @param subject the subject of the message to send
98       * @param mail
99       * @param errorMessage
100      */
101     public void onError(Mail mail, String subject, String errorMessage) throws MessagingException;
102 
103     /***
104      * @return the configuration file for the xml resources
105      */
106     public String getResourcesFile();
107 
108     /***
109      * Use this to get standard properties for future calls to {@link org.apache.james.util.XMLResources}
110      * @return properties with the "LIST_NAME" and the "DOMAIN_NAME" properties
111      */
112     public Properties getStandardProperties();
113 
114     /***
115      * Initializes an array of resources
116      * @param names such as 'header, footer' etc...
117      * @return an initialized array of XMLResources
118      * @throws org.apache.avalon.framework.configuration.ConfigurationException
119      */
120     public XMLResources[] initXMLResources(String[] names) throws ConfigurationException;
121 }