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 }