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