1 22 package org.objectweb.petals.binding.mail.listeners; 23 24 import java.util.HashMap ; 25 import java.util.Map ; 26 import java.util.Timer ; 27 import java.util.logging.Logger ; 28 29 import javax.jbi.JBIException; 30 31 import org.objectweb.petals.component.common.PEtALSComponentSDKException; 32 import org.objectweb.petals.component.common.bc.ExternalListenerManager; 33 import org.objectweb.petals.tools.jbicommon.descriptor.Extensions; 34 35 42 public class MailBCExternalListenerManager implements ExternalListenerManager { 43 44 protected Logger log; 45 46 protected MailSessionManager mailSessionManager; 47 48 protected SessionDescriptorBuilder sessionDescriptorBuilder; 49 50 protected MimeMessageManager mimeMessageManager; 51 52 protected Map <String , MailBCExternalListener> listeners; 53 54 public MailBCExternalListenerManager(Logger log, 55 MailSessionManager mailSessionManager, 56 SessionDescriptorBuilder sessionDescriptorBuilder, 57 MimeMessageManager mimeMessageManager) { 58 super(); 59 this.log = log; 60 this.mailSessionManager = mailSessionManager; 61 this.sessionDescriptorBuilder = sessionDescriptorBuilder; 62 this.mimeMessageManager = mimeMessageManager; 63 this.listeners = new HashMap <String , MailBCExternalListener>(); 64 } 65 66 public void startListening(String address, Extensions extensions) 67 throws PEtALSComponentSDKException { 68 69 SessionDescriptor sessionDescriptor; 71 try { 72 sessionDescriptor = sessionDescriptorBuilder.build(address, null); 73 } catch (JBIException e) { 74 throw new PEtALSComponentSDKException(e); 75 } 76 77 Timer t = null; 79 MailBCExternalListener listener = null; 80 if (!listeners.containsKey(address)) { 81 t = new Timer (); 82 listener = new MailBCExternalListener(t, log, sessionDescriptor, 83 mailSessionManager, mimeMessageManager, address); 84 listeners.put(address, listener); 85 } else { 86 throw new PEtALSComponentSDKException( 87 "A listerner is already started for the following address:" 88 + address); 89 } 90 91 t 93 .schedule(listener, 0, Integer.parseInt(sessionDescriptor 94 .getPeriod())); 95 } 96 97 public void stopListening(String address) { 98 MailBCExternalListener listener = listeners.get(address); 99 if (listener != null) { 100 listener.getT().cancel(); 101 } 102 listeners.remove(address); 103 } 104 105 } 106 | Popular Tags |