jaugment2.mail
Class JavaMailService

java.lang.Object
  |
  +--java.rmi.server.RemoteObject
        |
        +--java.rmi.server.RemoteServer
              |
              +--java.rmi.server.UnicastRemoteObject
                    |
                    +--jaugment2.jini.simpleService.simpleService
                          |
                          +--jaugment2.mail.JavaMailService

public class JavaMailService
extends simpleService
implements java.rmi.Remote, net.jini.discovery.DiscoveryListener, MailSender, LookupEventListener

a service providing sending/receiving e-mail/news by using the JavaMail-API

See Also:
Serialized Form

Inner Class Summary
static class JavaMailService.JavaMailServiceEvent
          Class for events thrown here
private  class JavaMailService.myFolderListener
          Listener for all events regarding a store
private  class JavaMailService.MyMessageListener
          Listener for everything related to messages in a folder
private  class JavaMailService.StoreEntry
          Everything we need to keep book on about an open store
 
Inner classes inherited from class jaugment2.jini.simpleService.simpleService
simpleService.myServiceIDListener
 
Inner classes inherited from class jaugment2.mail.MailSender
MailSender.FolderHandle, MailSender.MailEvent, MailSender.MailSenderFolder, MailSender.MailSenderMessage, MailSender.MessageHandle, MailSender.Receiver, MailSender.StoreHandle
 
Field Summary
private  javax.mail.Authenticator auth
           
private static boolean debugMessages
           
private  java.util.Hashtable directories
           
private  MailFilterParser filters
           
private  SimpleLandlord landLord
           
private  java.util.LinkedList[] listenerRegistrations
           
private  LocalStoreWrapperFactory localstorewrapper
           
private  JavaMailServiceProxy myproxy
           
private  javax.mail.Session sendSession
           
private  SimpleLandlord.LeaseListener simpleLeaselistener
          Helper-class for our Landlord.
private  java.util.Hashtable stores
           
private  TextEditorProxyIF textedit
           
private  javax.mail.Transport trans
           
 
Fields inherited from class jaugment2.jini.simpleService.simpleService
bindings, fallback_attrSets, jmngr, ldm, lrm, persistentState, proxy, sid, simpleservicedebugMessages
 
Fields inherited from class java.rmi.server.UnicastRemoteObject
csf, port, portFactoryParamTypes, portParamTypes, serialVersionUID, ssf
 
Fields inherited from class java.rmi.server.RemoteServer
log, logname, serialVersionUID
 
Fields inherited from class java.rmi.server.RemoteObject
ref, serialVersionUID
 
Constructor Summary
JavaMailService()
           
JavaMailService(net.jini.core.discovery.LookupLocator locallocator)
           
 
Method Summary
 net.jini.core.lease.Lease addListener(net.jini.core.event.RemoteEventListener listener, java.rmi.MarshalledObject handback, int registerfor)
          Subscribe for events
private  void closeStore(MailSender.StoreHandle s)
           
 boolean copyMessage(MailSender.MessageHandle hmessage, MailSender.FolderHandle hfolder, boolean move)
          copies the identified message to the identified folder
 void deleteMessage(MailSender.MessageHandle hmessage)
          delete the identified message
 void destroy()
          stop this service, destroy any persistent storage and exit
 void discarded(net.jini.discovery.DiscoveryEvent e)
          Called when one or more lookup service registrars has been discarded.
 void discovered(net.jini.discovery.DiscoveryEvent e)
          Called when one or more lookup service registrars has been discovered.
private  void fireEvent(int type, java.lang.Object obj)
           
private  void fireEvent(int type, java.lang.Object obj, MailSender.StoreHandle hstore, MailSender.FolderHandle hfolder, MailSender.MessageHandle hmessage)
           
private  javax.mail.Folder getFolder(MailSender.FolderHandle hfolder)
           
 MailSender.MailSenderMessage[] getFolderMessages(MailSender.FolderHandle hfolder, boolean getcontent)
          Get all messages of a folder
 MailSender.MailSenderFolder getMailSenderFolder(MailSender.FolderHandle hfolder)
           
 MailSender.MailSenderMessage getMessage(MailSender.MessageHandle hmessage, boolean getcontent)
          Get all data of the designated message
private  javax.mail.Store getStore(MailSender.StoreHandle s)
           
 MailSender.FolderHandle[] getSubFolders(MailSender.FolderHandle hfolder)
           
 TextEditorProxyIF getTextEditorProxy()
          Return the first TextEditorProxyIF found for our Representations to have some central buffers.
private  void loadMe()
          Load our state (e.g.
 void restart()
          restart this service once it has been stopped
 boolean sendMessage(javax.mail.internet.MimeMultipart body, java.lang.String subject, MailSender.Receiver[] to)
          Send a generic message.
 boolean sendSimpleMessage(java.lang.String text, java.lang.String subject, java.lang.String to)
           
 void ServiceChangedEvent(LookupEventEvent e)
           
 void ServiceFoundEvent(LookupEventEvent e)
           
 void ServiceGoneEvent(LookupEventEvent e)
           
 void setMessageReat(MailSender.MessageHandle hmessage, boolean reat)
          mark a message as reat/unreat
 void stop(boolean exit)
          stop this service.
 
Methods inherited from class jaugment2.jini.simpleService.simpleService
, deinit, deinitBindings, finalize, getProxy, getServiceItem, getStorageLocation, init, initBindings, initBindings, load, save, setStorageLocation
 
Methods inherited from class java.rmi.server.UnicastRemoteObject
clone, exportObject, exportObject, exportObject, exportObject, readObject, reexport, unexportObject
 
Methods inherited from class java.rmi.server.RemoteServer
getClientHost, getLog, setLog
 
Methods inherited from class java.rmi.server.RemoteObject
equals, getRef, hashCode, toString, toStub, writeObject
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, registerNatives, wait, wait, wait
 

Field Detail

debugMessages

private static final boolean debugMessages

filters

private MailFilterParser filters

textedit

private TextEditorProxyIF textedit

directories

private java.util.Hashtable directories

localstorewrapper

private LocalStoreWrapperFactory localstorewrapper

myproxy

private JavaMailServiceProxy myproxy

auth

private javax.mail.Authenticator auth

trans

private javax.mail.Transport trans

sendSession

private transient javax.mail.Session sendSession

stores

private java.util.Hashtable stores

listenerRegistrations

private java.util.LinkedList[] listenerRegistrations

simpleLeaselistener

private SimpleLandlord.LeaseListener simpleLeaselistener
Helper-class for our Landlord.

landLord

private SimpleLandlord landLord
Constructor Detail

JavaMailService

public JavaMailService()
                throws java.rmi.RemoteException

JavaMailService

public JavaMailService(net.jini.core.discovery.LookupLocator locallocator)
                throws java.rmi.RemoteException
Method Detail

ServiceFoundEvent

public void ServiceFoundEvent(LookupEventEvent e)
Specified by:
ServiceFoundEvent in interface LookupEventListener

ServiceGoneEvent

public void ServiceGoneEvent(LookupEventEvent e)
Specified by:
ServiceGoneEvent in interface LookupEventListener

ServiceChangedEvent

public void ServiceChangedEvent(LookupEventEvent e)
Specified by:
ServiceChangedEvent in interface LookupEventListener

loadMe

private void loadMe()
Load our state (e.g. attrubutes, service-id) from persistent storage

discovered

public void discovered(net.jini.discovery.DiscoveryEvent e)
Called when one or more lookup service registrars has been discovered. The method should return quickly; e.g., it should not make remote calls.
Specified by:
discovered in interface net.jini.discovery.DiscoveryListener
Parameters:
e - the event that describes the discovered registrars

discarded

public void discarded(net.jini.discovery.DiscoveryEvent e)
Called when one or more lookup service registrars has been discarded. The method should return quickly; e.g., it should not make remote calls.
Specified by:
discarded in interface net.jini.discovery.DiscoveryListener
Parameters:
e - the event that describes the discarded registrars

restart

public void restart()
             throws java.lang.Exception
restart this service once it has been stopped
Overrides:
restart in class simpleService
See Also:
stop

stop

public void stop(boolean exit)
          throws java.lang.Exception
stop this service. If exit is false all references to this service are still valid but it has deregistered everywhere. (this includes the RMI-activation-daemon)
Overrides:
stop in class simpleService
Parameters:
exit - stop running
See Also:
restart, destroy

destroy

public void destroy()
             throws java.rmi.RemoteException
stop this service, destroy any persistent storage and exit
Overrides:
destroy in class simpleService

sendMessage

public boolean sendMessage(javax.mail.internet.MimeMultipart body,
                           java.lang.String subject,
                           MailSender.Receiver[] to)
                    throws java.lang.Exception
Send a generic message. The actual implementation may be limited to special messages for some receivers. So e.g. an SMS-message may not contain non-text or a voice-message only voice.
Specified by:
sendMessage in interface MailSender

sendSimpleMessage

public boolean sendSimpleMessage(java.lang.String text,
                                 java.lang.String subject,
                                 java.lang.String to)
                          throws java.lang.Exception
Specified by:
sendSimpleMessage in interface MailSender

getTextEditorProxy

public TextEditorProxyIF getTextEditorProxy()
                                     throws java.rmi.RemoteException
Return the first TextEditorProxyIF found for our Representations to have some central buffers.
Specified by:
getTextEditorProxy in interface MailSender

closeStore

private void closeStore(MailSender.StoreHandle s)

getStore

private javax.mail.Store getStore(MailSender.StoreHandle s)

getFolder

private javax.mail.Folder getFolder(MailSender.FolderHandle hfolder)

getMailSenderFolder

public MailSender.MailSenderFolder getMailSenderFolder(MailSender.FolderHandle hfolder)
Specified by:
getMailSenderFolder in interface MailSender

getSubFolders

public MailSender.FolderHandle[] getSubFolders(MailSender.FolderHandle hfolder)
Specified by:
getSubFolders in interface MailSender

getFolderMessages

public MailSender.MailSenderMessage[] getFolderMessages(MailSender.FolderHandle hfolder,
                                                        boolean getcontent)
Get all messages of a folder
Specified by:
getFolderMessages in interface MailSender

deleteMessage

public void deleteMessage(MailSender.MessageHandle hmessage)
                   throws java.rmi.RemoteException
delete the identified message
Specified by:
deleteMessage in interface MailSender

setMessageReat

public void setMessageReat(MailSender.MessageHandle hmessage,
                           boolean reat)
                    throws java.rmi.RemoteException
mark a message as reat/unreat
Specified by:
setMessageReat in interface MailSender

getMessage

public MailSender.MailSenderMessage getMessage(MailSender.MessageHandle hmessage,
                                               boolean getcontent)
Description copied from interface: MailSender
Get all data of the designated message
Specified by:
getMessage in interface MailSender
Tags copied from interface: MailSender
Parameters:
getcontent - fill in the content-field too. This may be an expensive operation

copyMessage

public boolean copyMessage(MailSender.MessageHandle hmessage,
                           MailSender.FolderHandle hfolder,
                           boolean move)
copies the identified message to the identified folder
Specified by:
copyMessage in interface MailSender
Parameters:
move - true if the message shall be moved to the new folder

fireEvent

private void fireEvent(int type,
                       java.lang.Object obj)

fireEvent

private void fireEvent(int type,
                       java.lang.Object obj,
                       MailSender.StoreHandle hstore,
                       MailSender.FolderHandle hfolder,
                       MailSender.MessageHandle hmessage)

addListener

public net.jini.core.lease.Lease addListener(net.jini.core.event.RemoteEventListener listener,
                                             java.rmi.MarshalledObject handback,
                                             int registerfor)
                                      throws java.rmi.RemoteException,
                                             net.jini.core.lease.LeaseDeniedException,
                                             java.lang.IllegalStateException
Subscribe for events
Specified by:
addListener in interface MailSender