KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > celtix > bus > ws > rm > RMBusLifeCycleListener


1 package org.objectweb.celtix.bus.ws.rm;
2
3 import java.io.IOException JavaDoc;
4 import java.util.ArrayList JavaDoc;
5 import java.util.Collection JavaDoc;
6 import java.util.logging.Level JavaDoc;
7 import java.util.logging.Logger JavaDoc;
8
9
10 import org.objectweb.celtix.bus.configuration.wsrm.SequenceTerminationPolicyType;
11 import org.objectweb.celtix.buslifecycle.BusLifeCycleListener;
12 import org.objectweb.celtix.common.i18n.Message;
13 import org.objectweb.celtix.common.logging.LogUtils;
14
15 public class RMBusLifeCycleListener implements BusLifeCycleListener {
16
17     private static final Logger JavaDoc LOG = LogUtils.getL7dLogger(RMBusLifeCycleListener.class);
18     
19     private RMSource source;
20     
21     protected RMBusLifeCycleListener(RMSource s) {
22         source = s;
23     }
24     public void initComplete() {
25     }
26
27     public void postShutdown() {
28     }
29
30     public void preShutdown() {
31         terminateSequences();
32     }
33     
34     private void terminateSequences() {
35         
36         SequenceTerminationPolicyType st = source.getSequenceTerminationPolicy();
37         if (!st.isTerminateOnShutdown()) {
38             LOG.fine("No need to terminate sequences on shutdown");
39             return;
40         }
41         
42         Collection JavaDoc<SourceSequence> seqs = source.getAllUnacknowledgedSequences();
43         
44         LOG.fine("Trying to terminate " + seqs.size() + " sequences");
45         
46         Collection JavaDoc<SourceSequence> closedSeqs = new ArrayList JavaDoc<SourceSequence>();
47         
48         for (SourceSequence seq : seqs) {
49             if (seq.isLastMessage()) {
50                 closedSeqs.add(seq);
51             } else {
52                 try {
53                     source.getHandler().getProxy().lastMessage(seq);
54                 } catch (IOException JavaDoc ex) {
55                     Message msg = new Message("LAST_MESSAGE_SEND_EXC", LOG, seq);
56                     LOG.log(Level.WARNING, msg.toString(), ex);
57                 }
58             }
59         }
60         
61         if (closedSeqs.size() > 0) {
62             try {
63                 source.getHandler().getProxy().requestAcknowledgment(seqs);
64             } catch (IOException JavaDoc ex) {
65                 Message msg = new Message("ACK_REQUESTED_SEND_EXC", LOG);
66                 LOG.log(Level.WARNING, msg.toString(), ex);
67             }
68         }
69     }
70
71 }
72
Popular Tags