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