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.avalon.framework.service.ServiceException; 21 import org.apache.avalon.framework.service.ServiceManager; 22 import org.apache.james.Constants; 23 import org.apache.james.services.UsersRepository; 24 import org.apache.james.services.UsersStore; 25 import org.apache.mailet.MailAddress; 26 27 /*** 28 * Adds or removes an email address to a listserv. 29 * 30 * <p>Sample configuration: 31 * <br><mailet match="CommandForListserv=james@list.working-dogs.com" class="AvalonListservManager"> 32 * <br><repositoryName>name of user repository configured in UsersStore block </repositoryName> 33 * <br></mailet> 34 * 35 * @version This is $Revision: 382444 $ 36 */ 37 public class AvalonListservManager extends GenericListservManager { 38 39 private UsersRepository members; 40 41 /*** 42 * Initialize the mailet 43 */ 44 public void init() { 45 ServiceManager compMgr = (ServiceManager)getMailetContext().getAttribute(Constants.AVALON_COMPONENT_MANAGER); 46 try { 47 UsersStore usersStore = (UsersStore) compMgr.lookup(UsersStore.ROLE); 48 String repName = getInitParameter("repositoryName"); 49 50 members = (UsersRepository) usersStore.getRepository(repName); 51 } catch (ServiceException cnfe) { 52 log("Failed to retrieve Store component:" + cnfe.getMessage()); 53 } catch (Exception e) { 54 log("Failed to retrieve Store component:" + e.getMessage()); 55 } 56 } 57 58 /*** 59 * Add an address to the list. 60 * 61 * @param address the address to add 62 * 63 * @return true if successful, false otherwise 64 */ 65 public boolean addAddress(MailAddress address) { 66 members.addUser(address.toString(), ""); 67 return true; 68 } 69 70 /*** 71 * Remove an address from the list. 72 * 73 * @param address the address to remove 74 * 75 * @return true if successful, false otherwise 76 */ 77 public boolean removeAddress(MailAddress address) { 78 members.removeUser(address.toString()); 79 return true; 80 } 81 82 public boolean existsAddress(MailAddress address) { 83 return members.contains(address.toString()); 84 } 85 86 /*** 87 * Return a string describing this mailet. 88 * 89 * @return a string describing this mailet 90 */ 91 public String getMailetInfo() { 92 return "AvalonListservManager Mailet"; 93 } 94 } 95