KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > petals > binding > mail > listeners > MailBCExternalListenerManager


1 /**
2  * PETALS - PETALS Services Platform.
3  * Copyright (c) 2006 EBM Websourcing, http://www.ebmwebsourcing.com/
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * -------------------------------------------------------------------------
19  * $Id: MailBCExternalListenerManager.java 154 27 sept. 06 ofabre $
20  * -------------------------------------------------------------------------
21  */

22 package org.objectweb.petals.binding.mail.listeners;
23
24 import java.util.HashMap JavaDoc;
25 import java.util.Map JavaDoc;
26 import java.util.Timer JavaDoc;
27 import java.util.logging.Logger JavaDoc;
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 /**
36  * This class is used to manage listeners for external mail addresses registered
37  * during SU deployments
38  *
39  * @author ofabre - EBM Websourcing
40  *
41  */

42 public class MailBCExternalListenerManager implements ExternalListenerManager {
43
44     protected Logger JavaDoc log;
45
46     protected MailSessionManager mailSessionManager;
47
48     protected SessionDescriptorBuilder sessionDescriptorBuilder;
49
50     protected MimeMessageManager mimeMessageManager;
51
52     protected Map JavaDoc<String JavaDoc, MailBCExternalListener> listeners;
53
54     public MailBCExternalListenerManager(Logger JavaDoc 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 JavaDoc<String JavaDoc, MailBCExternalListener>();
64     }
65
66     public void startListening(String JavaDoc address, Extensions extensions)
67         throws PEtALSComponentSDKException {
68
69         // Extract session information from address
70
SessionDescriptor sessionDescriptor;
71         try {
72             sessionDescriptor = sessionDescriptorBuilder.build(address, null);
73         } catch (JBIException e) {
74             throw new PEtALSComponentSDKException(e);
75         }
76
77         // Create and register the listener
78
Timer JavaDoc t = null;
79         MailBCExternalListener listener = null;
80         if (!listeners.containsKey(address)) {
81             t = new Timer JavaDoc();
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         // Start listening for new mails
92
t
93             .schedule(listener, 0, Integer.parseInt(sessionDescriptor
94                 .getPeriod()));
95     }
96
97     public void stopListening(String JavaDoc 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