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