Package org.objectweb.celtix.bus.ws.rm

Source Code of org.objectweb.celtix.bus.ws.rm.RMBusLifeCycleListener

package org.objectweb.celtix.bus.ws.rm;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.logging.Level;
import java.util.logging.Logger;


import org.objectweb.celtix.bus.configuration.wsrm.SequenceTerminationPolicyType;
import org.objectweb.celtix.buslifecycle.BusLifeCycleListener;
import org.objectweb.celtix.common.i18n.Message;
import org.objectweb.celtix.common.logging.LogUtils;

public class RMBusLifeCycleListener implements BusLifeCycleListener {

    private static final Logger LOG = LogUtils.getL7dLogger(RMBusLifeCycleListener.class);
   
    private RMSource source;
   
    protected RMBusLifeCycleListener(RMSource s) {
        source = s;
    }
    public void initComplete() {     
    }

    public void postShutdown() {     
    }

    public void preShutdown() {
        terminateSequences();
    }
   
    private void terminateSequences() {
       
        SequenceTerminationPolicyType st = source.getSequenceTerminationPolicy();
        if (!st.isTerminateOnShutdown()) {
            LOG.fine("No need to terminate sequences on shutdown");
            return;
        }
       
        Collection<SourceSequence> seqs = source.getAllUnacknowledgedSequences();
       
        LOG.fine("Trying to terminate " + seqs.size() + "  sequences");
       
        Collection<SourceSequence> closedSeqs = new ArrayList<SourceSequence>();
       
        for (SourceSequence seq : seqs) {
            if (seq.isLastMessage()) {
                closedSeqs.add(seq);
            } else {
                try {
                    source.getHandler().getProxy().lastMessage(seq);
                } catch (IOException ex) {
                    Message msg = new Message("LAST_MESSAGE_SEND_EXC", LOG, seq);
                    LOG.log(Level.WARNING, msg.toString(), ex);
                }
            }
        }
       
        if (closedSeqs.size() > 0) {
            try {
                source.getHandler().getProxy().requestAcknowledgment(seqs);
            } catch (IOException ex) {
                Message msg = new Message("ACK_REQUESTED_SEND_EXC", LOG);
                LOG.log(Level.WARNING, msg.toString(), ex);
            }
        }
    }

}
TOP

Related Classes of org.objectweb.celtix.bus.ws.rm.RMBusLifeCycleListener

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.