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