/*
 * JBoss, the OpenSource J2EE webOS
 *
 * Distributable under LGPL license.
 * See terms of license at gnu.org.
 */
package org.jboss.test.mdb.bean;

import javax.ejb.MessageDrivenBean;
import javax.ejb.MessageDrivenContext;
import javax.ejb.EJBException;

import javax.jms.MessageListener;
import javax.jms.Message;
import javax.naming.InitialContext;
import javax.transaction.Status;
import javax.transaction.Transaction;
import javax.transaction.TransactionManager;
import javax.transaction.xa.XAResource;

/**
 * MessageBeanImpl.java
 *
 *
 * Created: Sat Nov 25 18:07:50 2000
 *
 * @author Peter Antman DN <peter.antman@dn.se>
 * @version
 */

public class BMPBean implements MessageDrivenBean, MessageListener{
   org.apache.log4j.Category log = org.apache.log4j.Category.getInstance(getClass());
   
    private MessageDrivenContext ctx = null;
    public BMPBean() {
    
    }
    public void setMessageDrivenContext(MessageDrivenContext ctx)
    throws EJBException {
    this.ctx = ctx;
    }
    
    public void ejbCreate() {}

    public void ejbRemove() {ctx=null;}

    public void onMessage(Message message) {

        log.debug("DEBUG: BMPBean got message" + message.toString() );
        try {
          TransactionManager tm = (TransactionManager)new InitialContext().lookup("java:/TransactionManager");
          Transaction threadTx = tm.suspend();
            log.debug("DEBUG Tx="+threadTx);

    log.debug("Sleeping for 10 seconds");
      try { Thread.currentThread().sleep(1000*10);
      } catch ( InterruptedException e ) {}
    log.debug("Sleep done");

            if( threadTx != null )
                tm.resume(threadTx);
        } catch (Exception e) {
          log.debug("BMPBean Error:"+e);
        }
    }
}