/** * Copyright (C) 2000-2016 Atomikos <info@atomikos.com> * * LICENSE CONDITIONS * * See http://www.atomikos.com/Main/WhichLicenseApplies for details. */ package com.atomikos.jms; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageConsumer; import javax.jms.MessageListener; import com.atomikos.datasource.xa.session.SessionHandleState; import com.atomikos.logging.Logger; import com.atomikos.logging.LoggerFactory; class AtomikosJmsMessageConsumerProxy extends ConsumerProducerSupport implements MessageConsumer { private static final Logger LOGGER = LoggerFactory.createLogger(AtomikosJmsMessageConsumerProxy.class); private MessageConsumer delegate; public AtomikosJmsMessageConsumerProxy ( MessageConsumer delegate , SessionHandleState state ) { super ( state ); this.delegate = delegate; } protected MessageConsumer getDelegate() { return delegate; } public Message receive() throws JMSException { if ( LOGGER.isDebugEnabled() ) LOGGER.logDebug ( this + ": receive()..." ); Message ret = null; try { enlist(); ret = delegate.receive(); } catch (Exception e) { handleException ( e ); } if ( LOGGER.isTraceEnabled() ) LOGGER.logTrace ( this + ": receive returning " + ret ); return ret; } public Message receive ( long timeout ) throws JMSException { if ( LOGGER.isDebugEnabled() ) LOGGER.logDebug ( this + ": receive ( " + timeout + ")..." ); Message ret = null; try { enlist(); ret = delegate.receive ( timeout ); } catch (Exception e) { handleException ( e ); } if ( LOGGER.isTraceEnabled() ) LOGGER.logTrace ( this + ": receive returning " + ret ); return ret; } public Message receiveNoWait() throws JMSException { if ( LOGGER.isDebugEnabled() ) LOGGER.logDebug ( this + ": receiveNoWait()..." ); Message ret = null; try { enlist(); ret = delegate.receiveNoWait(); } catch (Exception e) { handleException ( e ); } if ( LOGGER.isTraceEnabled() ) LOGGER.logTrace ( this + ": receiveNoWait returning " + ret ); return ret; } public void close() throws JMSException { //note: delist is done at session level! if ( LOGGER.isDebugEnabled() ) LOGGER.logDebug ( this + ": close..." ); try { delegate.close(); } catch (Exception e) { handleException ( e ); } if ( LOGGER.isTraceEnabled() ) LOGGER.logTrace ( this + ": close done." ); } public MessageListener getMessageListener() throws JMSException { if ( LOGGER.isDebugEnabled() ) LOGGER.logDebug ( this + ": getMessageListener()..." ); MessageListener ret = null; try { ret = delegate.getMessageListener(); } catch (Exception e) { handleException ( e ); } if ( LOGGER.isTraceEnabled() ) LOGGER.logTrace ( this + ": getMessageListener() returning " + ret ); return ret; } public String getMessageSelector() throws JMSException { if ( LOGGER.isDebugEnabled() ) LOGGER.logDebug ( this + ": getMessageSelector()..." ); String ret = null; try { ret = delegate.getMessageSelector(); } catch (Exception e) { handleException ( e ); } if ( LOGGER.isTraceEnabled() ) LOGGER.logTrace ( this + ": getMessageSelector() returning " + ret ); return ret; } public void setMessageListener ( MessageListener listener ) throws JMSException { if ( LOGGER.isDebugEnabled() ) LOGGER.logDebug ( this + ": setMessageListener ( " + listener + " )..." ); try { delegate.setMessageListener ( listener ); }catch (Exception e) { handleException ( e ); } if ( LOGGER.isTraceEnabled() ) LOGGER.logTrace ( this + ": setMessageListener done." ); } public String toString() { return "atomikos MessageConsumer proxy for " + delegate; } }