org.objectledge.mail
Class MailmanMailingListsManager

java.lang.Object
  extended by org.objectledge.mail.MailmanMailingListsManager
All Implemented Interfaces:
MailingListsManager

public class MailmanMailingListsManager
extends Object
implements MailingListsManager

Mailman mailing list manager implementation.

Version:
$Id: MailmanMailingListsManager.java,v 1.32 2006/05/15 11:57:23 rafal Exp $
Author:
Pawel Potempski

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.objectledge.mail.MailingListsManager
MailingListsManager.Status
 
Field Summary
private  String address
          mailman rcp address
private  String adminPassword
          mailman admin password
private  org.apache.xmlrpc.XmlRpcClient client
          rpc client
private static Map<Integer,Class<? extends MailingListsException>> exceptions
           
private  HashMap<String,Integer> lastIdMap
          last id map
private static String LIST_ID_HEADER_NAME
          List-Id header as defined by RFC2919
private static String LIST_POST_HEADER_NAME
          List-Post header as defined by RFC2369
private  org.jcontainer.dna.Logger logger
          logging facility
private  MailSystem mailSystem
          mail system
private  String monitoringAddress
          system monitoring address
private  String monitoringSessionName
          system monitoring mail session
 
Constructor Summary
MailmanMailingListsManager(org.jcontainer.dna.Configuration config, org.jcontainer.dna.Logger logger, MailSystem mailSystem)
          Ledge component constructor.
MailmanMailingListsManager(org.jcontainer.dna.Logger logger, String address, String password)
          Standalone constructor.
 
Method Summary
(package private)  MailingList.OperationStatus addMember(String listName, String adminPassword, String address, String name, String password, boolean digest, boolean ignoreCreationPolicy, boolean acknowledge, boolean notifyAdmins)
          
(package private)  void addOptionValue(String listName, String adminPassword, String key, Object value)
           
(package private)  void changeMemberAddress(String listName, String adminPassword, String oldAddress, String newAddress, boolean keepOld)
          
private  void checkMessageStore()
           
 String createList(String name, String domain, String[] administrators, String password, boolean notify, Locale locale, boolean moderated)
          
 void deleteList(String name, boolean deleteArchives)
          
(package private)  MailingList.OperationStatus deleteMember(String listName, String adminPassword, String address, boolean ignoreDeletingPolicy, boolean acknowledge, boolean notifyAdmins)
          
private  Object executeMethod(String method, Object[] parameters)
          RPC method executor.
 List<String> getAvailableDomains()
          
 List<Locale> getAvailableLocales()
          
(package private)  String getInterfaceBaseURL(String domain)
           
private  int getLastId(String listName)
           
 MailingList getList(javax.mail.Message message)
          
 MailingList getList(String name)
          
 MailingList getList(String name, String password)
          
private  String getListName(javax.mail.Message message)
          Dedect which mailing list the message belongs to.
 List<String> getLists()
          
private  List<String> getLists(String filter)
           
(package private)  List<String> getMembers(String listName, String adminPassword)
          
 javax.mail.Store getMessageStore()
          
(package private)  List<String> getNewPendingTasks(String listName, String adminPassword)
           
(package private)  Object getOption(String listName, String adminPassword, String key)
          
private  Vector getParameters(Object[] params)
          Convert list of objects into vector.
(package private)  List<String> getPendingPosts(String listName, String adminPassword)
          
(package private)  List<String> getPendingSubscriptions(String listName, String adminPassword)
          
(package private)  javax.mail.Message getPendingTask(String listName, String adminPassword, String id)
           
(package private)  Integer getPendingTaskType(String listName, String adminPassword, String id)
           
(package private)  List<String> getPendingUnsubscriptions(String listName, String adminPassword)
          
 List<String> getPublicLists()
          
 List<String> getPublicLists(String filter)
          
 MailingListsManager.Status getStatus()
           
(package private)  void handleModeratorRequest(String listName, String adminPassword, String id, int command, String comment)
           
(package private)  void postMessage(String listName, String adminPassword, String message)
           
(package private)  void removeOptionValue(String listName, String adminPassword, String key, Object value)
           
private  void setLastId(String listName, int value)
           
(package private)  void setOption(String listName, String adminPassword, String key, Object value)
          
(package private)  String setPassword(String listName, String adminPassword, String password)
          
private  List<String> toStringList(List<Integer> in)
           
private  MailingListsException unwrapException(org.apache.xmlrpc.XmlRpcException xmlRpcEx)
           
private  Vector vector(Object... params)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LIST_ID_HEADER_NAME

private static final String LIST_ID_HEADER_NAME
List-Id header as defined by RFC2919

See Also:
Constant Field Values

LIST_POST_HEADER_NAME

private static final String LIST_POST_HEADER_NAME
List-Post header as defined by RFC2369

See Also:
Constant Field Values

logger

private org.jcontainer.dna.Logger logger
logging facility


mailSystem

private MailSystem mailSystem
mail system


address

private String address
mailman rcp address


adminPassword

private String adminPassword
mailman admin password


client

private org.apache.xmlrpc.XmlRpcClient client
rpc client


lastIdMap

private HashMap<String,Integer> lastIdMap
last id map


monitoringAddress

private String monitoringAddress
system monitoring address


monitoringSessionName

private String monitoringSessionName
system monitoring mail session


exceptions

private static final Map<Integer,Class<? extends MailingListsException>> exceptions
Constructor Detail

MailmanMailingListsManager

public MailmanMailingListsManager(org.jcontainer.dna.Configuration config,
                                  org.jcontainer.dna.Logger logger,
                                  MailSystem mailSystem)
                           throws MalformedURLException
Ledge component constructor.

Parameters:
config - component configuration.
logger - the logger.
Throws:
MalformedURLException

MailmanMailingListsManager

public MailmanMailingListsManager(org.jcontainer.dna.Logger logger,
                                  String address,
                                  String password)
                           throws MalformedURLException
Standalone constructor.

Parameters:
logger - the logger.
address - mailman rcp address.
login - mailman admin login.
password - mailman admin password.
Throws:
MalformedURLException
Method Detail

getStatus

public MailingListsManager.Status getStatus()
Specified by:
getStatus in interface MailingListsManager

createList

public String createList(String name,
                         String domain,
                         String[] administrators,
                         String password,
                         boolean notify,
                         Locale locale,
                         boolean moderated)
                  throws MailingListsException

Specified by:
createList in interface MailingListsManager
Throws:
MailingListsException

deleteList

public void deleteList(String name,
                       boolean deleteArchives)
                throws MailingListsException

Specified by:
deleteList in interface MailingListsManager
Throws:
MailingListsException

getList

public MailingList getList(String name,
                           String password)
                    throws MailingListsException

Specified by:
getList in interface MailingListsManager
Throws:
MailingListsException

getList

public MailingList getList(String name)
                    throws MailingListsException

Specified by:
getList in interface MailingListsManager
Throws:
MailingListsException

getLists

public List<String> getLists()
                      throws MailingListsException

Specified by:
getLists in interface MailingListsManager
Throws:
MailingListsException

getLists

private List<String> getLists(String filter)
                       throws MailingListsException
Throws:
MailingListsException

getPublicLists

public List<String> getPublicLists()
                            throws MailingListsException

Specified by:
getPublicLists in interface MailingListsManager
Throws:
MailingListsException

getPublicLists

public List<String> getPublicLists(String filter)
                            throws MailingListsException

Throws:
MailingListsException

getAvailableLocales

public List<Locale> getAvailableLocales()
                                 throws MailingListsException

Specified by:
getAvailableLocales in interface MailingListsManager
Throws:
MailingListsException

getAvailableDomains

public List<String> getAvailableDomains()
                                 throws MailingListsException

Specified by:
getAvailableDomains in interface MailingListsManager
Throws:
MailingListsException

checkMessageStore

private void checkMessageStore()
                        throws MailingListsException
Throws:
MailingListsException

getMessageStore

public javax.mail.Store getMessageStore()
                                 throws MailingListsException

Specified by:
getMessageStore in interface MailingListsManager
Throws:
MailingListsException

getListName

private String getListName(javax.mail.Message message)
                    throws javax.mail.MessagingException
Dedect which mailing list the message belongs to. Unfortunately Mailman is not accepting the List-Id headers it generates as list identifiers - it creating them by joing local list name (internal identifier) with list domain using a dot, while at the same time it accepts dots in local list names. This makes it impossible to extract local list name from the header in a reliable way. On the other hand the List-Post header contains always which may be parsed reliably. Just make sure the list is configured to put this header in the messages.

Parameters:
message - the message.
Returns:
the list name.
Throws:
javax.mail.MessagingException - if there is a problem parsing message headers.

getList

public MailingList getList(javax.mail.Message message)
                    throws MailingListsException

Specified by:
getList in interface MailingListsManager
Throws:
MailingListsException

addMember

MailingList.OperationStatus addMember(String listName,
                                      String adminPassword,
                                      String address,
                                      String name,
                                      String password,
                                      boolean digest,
                                      boolean ignoreCreationPolicy,
                                      boolean acknowledge,
                                      boolean notifyAdmins)
                                throws MailingListsException

Throws:
MailingListsException

changeMemberAddress

void changeMemberAddress(String listName,
                         String adminPassword,
                         String oldAddress,
                         String newAddress,
                         boolean keepOld)
                   throws MailingListsException

Throws:
MailingListsException

deleteMember

MailingList.OperationStatus deleteMember(String listName,
                                         String adminPassword,
                                         String address,
                                         boolean ignoreDeletingPolicy,
                                         boolean acknowledge,
                                         boolean notifyAdmins)
                                   throws MailingListsException

Throws:
MailingListsException

getMembers

List<String> getMembers(String listName,
                        String adminPassword)
                  throws MailingListsException

Throws:
MailingListsException

getOption

Object getOption(String listName,
                 String adminPassword,
                 String key)
           throws MailingListsException

Throws:
MailingListsException

setOption

void setOption(String listName,
               String adminPassword,
               String key,
               Object value)
         throws MailingListsException

Throws:
MailingListsException

addOptionValue

void addOptionValue(String listName,
                    String adminPassword,
                    String key,
                    Object value)
              throws MailingListsException
Throws:
MailingListsException

removeOptionValue

void removeOptionValue(String listName,
                       String adminPassword,
                       String key,
                       Object value)
                 throws MailingListsException
Throws:
MailingListsException

setPassword

String setPassword(String listName,
                   String adminPassword,
                   String password)
             throws MailingListsException

Throws:
MailingListsException

getPendingPosts

List<String> getPendingPosts(String listName,
                             String adminPassword)
                       throws MailingListsException

Throws:
MailingListsException

getPendingSubscriptions

List<String> getPendingSubscriptions(String listName,
                                     String adminPassword)
                               throws MailingListsException

Throws:
MailingListsException

getPendingUnsubscriptions

List<String> getPendingUnsubscriptions(String listName,
                                       String adminPassword)
                                 throws MailingListsException

Throws:
MailingListsException

getNewPendingTasks

List<String> getNewPendingTasks(String listName,
                                String adminPassword)
                          throws MailingListsException
Throws:
MailingListsException

getPendingTask

javax.mail.Message getPendingTask(String listName,
                                  String adminPassword,
                                  String id)
                            throws MailingListsException
Throws:
MailingListsException

getPendingTaskType

Integer getPendingTaskType(String listName,
                           String adminPassword,
                           String id)
                     throws MailingListsException
Throws:
MailingListsException

handleModeratorRequest

void handleModeratorRequest(String listName,
                            String adminPassword,
                            String id,
                            int command,
                            String comment)
                      throws MailingListsException
Throws:
MailingListsException

postMessage

void postMessage(String listName,
                 String adminPassword,
                 String message)
           throws MailingListsException
Throws:
MailingListsException

getInterfaceBaseURL

String getInterfaceBaseURL(String domain)
                     throws MailingListsException
Throws:
MailingListsException

executeMethod

private Object executeMethod(String method,
                             Object[] parameters)
                      throws MailingListsException
RPC method executor. It resolve XmlRpcException codes into Java Exceptions.

Parameters:
method - name of the method to call.
parameters - arguments of the method.
Returns:
result of method invocation.
Throws:
MailingListsException

unwrapException

private MailingListsException unwrapException(org.apache.xmlrpc.XmlRpcException xmlRpcEx)

getParameters

private Vector getParameters(Object[] params)
Convert list of objects into vector.

Parameters:
params - list of objects.
Returns:
vector of objects.

vector

private Vector vector(Object... params)

toStringList

private List<String> toStringList(List<Integer> in)

getLastId

private int getLastId(String listName)

setLastId

private void setLastId(String listName,
                       int value)


Copyright © 2003-2006 objectledge.org. All Rights Reserved.