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 }