You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2010/09/21 17:00:20 UTC

svn commit: r999451 - /activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/

Author: tabish
Date: Tue Sep 21 15:00:19 2010
New Revision: 999451

URL: http://svn.apache.org/viewvc?rev=999451&view=rev
Log:
https://issues.apache.org/activemq/browse/AMQCPP-316

Update CMSTemplate code to use only CMSException types and ensure that if a send operation fails that the Message actually gets deleted to remove a memory leak found when testing with timeout option on the failover transport.

Modified:
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/CmsAccessor.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/CmsAccessor.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/CmsDestinationAccessor.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/CmsTemplate.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/CmsTemplate.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/DynamicDestinationResolver.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/PooledSession.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/ResourceLifecycleManager.cpp

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/CmsAccessor.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/CmsAccessor.cpp?rev=999451&r1=999450&r2=999451&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/CmsAccessor.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/CmsAccessor.cpp Tue Sep 21 15:00:19 2010
@@ -16,13 +16,23 @@
  */
 
 #include "CmsAccessor.h"
-#include <activemq/exceptions/ExceptionDefines.h>
-#include <activemq/exceptions/ActiveMQException.h>
-#include <activemq/util/CMSExceptionSupport.h>
 
+#include <cms/IllegalStateException.h>
+
+using namespace cms;
 using namespace activemq::cmsutil;
-using namespace activemq::exceptions;
-using namespace decaf::lang::exceptions;
+
+/**
+ * A catch-all that throws an CMSException.
+ */
+#define CMSTEMPLATE_CATCHALL() \
+    catch( cms::CMSException& ex ){ \
+        throw ex; \
+    } catch( std::exception& ex ) { \
+        throw CMSException( ex.what(), NULL ); \
+    } catch( ... ){ \
+        throw CMSException( "caught unknown exception", NULL ); \
+    }
 
 ////////////////////////////////////////////////////////////////////////////////
 CmsAccessor::CmsAccessor() : resourceLifecycleManager(),
@@ -53,8 +63,7 @@ cms::Connection* CmsAccessor::createConn
 
         return c;
     }
-    AMQ_CATCH_RETHROW( IllegalStateException )
-    AMQ_CATCH_ALL_THROW_CMSEXCEPTION()
+    CMSTEMPLATE_CATCHALL()
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -63,9 +72,7 @@ cms::Session* CmsAccessor::createSession
     try {
 
         if( con == NULL ) {
-            throw ActiveMQException(
-                __FILE__, __LINE__,
-                "connection object is invalid" );
+            throw CMSException( "connection object is invalid", NULL );
         }
 
         // Create the session.
@@ -76,15 +83,12 @@ cms::Session* CmsAccessor::createSession
 
         return s;
     }
-    AMQ_CATCH_RETHROW( IllegalStateException )
-    AMQ_CATCH_ALL_THROW_CMSEXCEPTION()
+    CMSTEMPLATE_CATCHALL()
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 void CmsAccessor::checkConnectionFactory() {
     if( getConnectionFactory() == NULL ) {
-        throw IllegalStateException(
-            __FILE__, __LINE__,
-            "Property 'connectionFactory' is required" );
+        throw IllegalStateException( "Property 'connectionFactory' is required", NULL );
     }
 }

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/CmsAccessor.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/CmsAccessor.h?rev=999451&r1=999450&r2=999451&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/CmsAccessor.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/CmsAccessor.h Tue Sep 21 15:00:19 2010
@@ -20,7 +20,6 @@
 #include <cms/ConnectionFactory.h>
 #include <activemq/cmsutil/ResourceLifecycleManager.h>
 #include <activemq/util/Config.h>
-#include <decaf/lang/exceptions/IllegalStateException.h>
 
 namespace activemq {
 namespace cmsutil {

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/CmsDestinationAccessor.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/CmsDestinationAccessor.cpp?rev=999451&r1=999450&r2=999451&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/CmsDestinationAccessor.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/CmsDestinationAccessor.cpp Tue Sep 21 15:00:19 2010
@@ -17,8 +17,10 @@
 
 #include "CmsDestinationAccessor.h"
 
+#include <cms/IllegalStateException.h>
+
+using namespace cms;
 using namespace activemq::cmsutil;
-using namespace decaf::lang::exceptions;
 
 ////////////////////////////////////////////////////////////////////////////////
 CmsDestinationAccessor::CmsDestinationAccessor() : CmsAccessor(),
@@ -69,8 +71,6 @@ cms::Destination* CmsDestinationAccessor
 void CmsDestinationAccessor::checkDestinationResolver() {
 
     if( getDestinationResolver() == NULL ) {
-        throw IllegalStateException(
-                __FILE__, __LINE__,
-                "Property 'destinationResolver' is required" );
+        throw IllegalStateException( "Property 'destinationResolver' is required", NULL );
     }
 }

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/CmsTemplate.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/CmsTemplate.cpp?rev=999451&r1=999450&r2=999451&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/CmsTemplate.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/CmsTemplate.cpp Tue Sep 21 15:00:19 2010
@@ -16,15 +16,15 @@
  */
 
 #include "CmsTemplate.h"
-#include <activemq/exceptions/ActiveMQException.h>
-#include <activemq/exceptions/ExceptionDefines.h>
 #include "ProducerCallback.h"
 #include "MessageCreator.h"
 #include <iostream>
 
+#include <cms/IllegalStateException.h>
+#include <cms/CMSException.h>
+
+using namespace cms;
 using namespace activemq::cmsutil;
-using namespace activemq::exceptions;
-using namespace decaf::lang::exceptions;
 using namespace std;
 
 /**
@@ -42,7 +42,7 @@ using namespace std;
         try { \
             t->destroy(); \
         } catch( ... ) {} \
-        throw ActiveMQException(ex).convertToCMSException(); \
+        throw CMSException( ex.what(), NULL ); \
     }
 
 /**
@@ -60,8 +60,11 @@ using namespace std;
         try { \
             t->destroy(); \
         } catch( ... ) {} \
-        throw ActiveMQException( __FILE__, __LINE__, \
-            "caught unknown exception" ).convertToCMSException(); \
+        throw CMSException( "caught unknown exception", NULL ); \
+    }
+
+#define CMSTEMPLATE_CATCHALL_NOTHROW( ) \
+    catch( ... ){ \
     }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -155,7 +158,6 @@ void CmsTemplate::init() {
             initialized = true;
         }
     }
-    CMSTEMPLATE_CATCH( ActiveMQException, this )
     CMSTEMPLATE_CATCH( IllegalStateException, this )
     CMSTEMPLATE_CATCHALL( this )
 }
@@ -180,7 +182,6 @@ void CmsTemplate::destroy() {
         // Call the base class.
         CmsDestinationAccessor::destroy();
     }
-    CMSTEMPLATE_CATCH( ActiveMQException, this )
     CMSTEMPLATE_CATCH( IllegalStateException, this )
     CMSTEMPLATE_CATCHALL( this )
 }
@@ -189,9 +190,8 @@ void CmsTemplate::destroy() {
 void CmsTemplate::checkDefaultDestination() {
     if( this->defaultDestination == NULL && this->defaultDestinationName.size()==0 ) {
         throw IllegalStateException(
-            __FILE__, __LINE__,
             "No defaultDestination or defaultDestinationName specified."
-            "Check configuration of CmsTemplate." );
+            "Check configuration of CmsTemplate.", NULL );
     }
 }
 
@@ -216,7 +216,6 @@ cms::Destination* CmsTemplate::resolveDe
 
         return dest;
     }
-    CMSTEMPLATE_CATCH( ActiveMQException, this )
     CMSTEMPLATE_CATCH( IllegalStateException, this )
     CMSTEMPLATE_CATCHALL( this )
 }
@@ -243,19 +242,7 @@ cms::Connection* CmsTemplate::getConnect
         return connection;
     }
     CMSTEMPLATE_CATCH( IllegalStateException, this )
-    CMSTEMPLATE_CATCH( ActiveMQException, this )
-    catch( cms::CMSException& ex ){
-        try {
-            this->destroy();
-        } catch( ... ) {}
-        throw ex;
-    } catch( ... ){
-        try {
-            this->destroy();
-        } catch( ... ) {}
-        throw ActiveMQException( __FILE__, __LINE__, \
-            "caught unknown exception" ).convertToCMSException();
-    }
+    CMSTEMPLATE_CATCHALL( this )
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -270,7 +257,6 @@ PooledSession* CmsTemplate::takeSession(
         // Take a session from the pool.
         return sessionPools[getSessionAcknowledgeMode()]->takeSession();
     }
-    CMSTEMPLATE_CATCH( ActiveMQException, this )
     CMSTEMPLATE_CATCHALL( this )
 }
 
@@ -287,7 +273,6 @@ void CmsTemplate::returnSession( PooledS
         session->close();
         session = NULL;
     }
-    CMSTEMPLATE_CATCH( ActiveMQException, this )
     CMSTEMPLATE_CATCHALL( this )
 }
 
@@ -319,7 +304,6 @@ cms::MessageProducer* CmsTemplate::creat
 
         return producer;
     }
-    CMSTEMPLATE_CATCH( ActiveMQException, this )
     CMSTEMPLATE_CATCH( IllegalStateException, this )
     CMSTEMPLATE_CATCHALL( this )
 }
@@ -348,7 +332,6 @@ cms::MessageConsumer* CmsTemplate::creat
 
         return consumer;
     }
-    CMSTEMPLATE_CATCH( ActiveMQException, this )
     CMSTEMPLATE_CATCH( IllegalStateException, this )
     CMSTEMPLATE_CATCHALL( this )
 }
@@ -365,7 +348,7 @@ void CmsTemplate::destroyProducer( cms::
         // Close the producer, then destroy it.
         producer->close();
     }
-    AMQ_CATCH_NOTHROW( cms::CMSException )
+    CMSTEMPLATE_CATCHALL_NOTHROW()
 
     // Destroy if it's not a cached producer.
     CachedProducer* cachedProducer = dynamic_cast<CachedProducer*>( producer );
@@ -388,7 +371,7 @@ void CmsTemplate::destroyConsumer( cms::
         // Close the producer, then destroy it.
         consumer->close();
     }
-    AMQ_CATCH_NOTHROW( cms::CMSException )
+    CMSTEMPLATE_CATCHALL_NOTHROW()
 
     // Destroy if it's not a cached consumer.
     CachedConsumer* cachedConsumer = dynamic_cast<CachedConsumer*>( consumer );
@@ -435,7 +418,6 @@ void CmsTemplate::execute( SessionCallba
         returnSession( pooledSession );
     }
     CMSTEMPLATE_CATCH( IllegalStateException, this )
-    CMSTEMPLATE_CATCH( ActiveMQException, this )
     CMSTEMPLATE_CATCHALL( this )
 }
 
@@ -454,7 +436,6 @@ void CmsTemplate::execute( ProducerCallb
         execute( &cb );
     }
     CMSTEMPLATE_CATCH( IllegalStateException, this )
-    CMSTEMPLATE_CATCH( ActiveMQException, this )
     CMSTEMPLATE_CATCHALL( this )
 }
 
@@ -473,7 +454,6 @@ void CmsTemplate::execute( cms::Destinat
         execute( &cb );
     }
     CMSTEMPLATE_CATCH( IllegalStateException, this )
-    CMSTEMPLATE_CATCH( ActiveMQException, this )
     CMSTEMPLATE_CATCHALL( this )
 }
 
@@ -492,7 +472,6 @@ void CmsTemplate::execute( const std::st
         execute( &cb );
     }
     CMSTEMPLATE_CATCH( IllegalStateException, this )
-    CMSTEMPLATE_CATCH( ActiveMQException, this )
     CMSTEMPLATE_CATCHALL( this )
 }
 
@@ -517,7 +496,6 @@ void CmsTemplate::ProducerExecutor::doIn
         parent->destroyProducer( producer );
 
     }
-    CMSTEMPLATE_CATCH( ActiveMQException, parent )
     CMSTEMPLATE_CATCHALL( parent )
 }
 
@@ -527,7 +505,6 @@ cms::Destination* CmsTemplate::ResolvePr
     try {
         return parent->resolveDestinationName( session, destinationName );
     }
-    CMSTEMPLATE_CATCH( ActiveMQException, parent )
     CMSTEMPLATE_CATCH( IllegalStateException, parent )
     CMSTEMPLATE_CATCHALL( parent )
 }
@@ -539,7 +516,6 @@ void CmsTemplate::send( MessageCreator* 
         SendExecutor senderExecutor( messageCreator, this );
         execute( &senderExecutor );
     }
-    CMSTEMPLATE_CATCH( ActiveMQException, this )
     CMSTEMPLATE_CATCHALL( this )
 }
 
@@ -550,7 +526,6 @@ void CmsTemplate::send( cms::Destination
         SendExecutor senderExecutor( messageCreator, this );
         execute( dest, &senderExecutor );
     }
-    CMSTEMPLATE_CATCH( ActiveMQException, this )
     CMSTEMPLATE_CATCHALL( this )
 }
 
@@ -562,7 +537,6 @@ void CmsTemplate::send( const std::strin
         SendExecutor senderExecutor( messageCreator, this );
         execute( destinationName, &senderExecutor );
     }
-    CMSTEMPLATE_CATCH( ActiveMQException, this )
     CMSTEMPLATE_CATCHALL( this )
 }
 
@@ -592,7 +566,7 @@ void CmsTemplate::doSend( cms::Session* 
         // Destroy the resources.
         destroyMessage( message );
 
-    } catch( ActiveMQException& e ) {
+    } catch( CMSException& e ) {
 
         e.setMark(__FILE__, __LINE__ );
 
@@ -609,7 +583,7 @@ cms::Message* CmsTemplate::doReceive( cm
     try {
 
         if( consumer == NULL ) {
-            throw new ActiveMQException( __FILE__, __LINE__, "consumer is NULL" );
+            throw CMSException( "consumer is NULL", NULL );
         }
 
         long long receiveTime = getReceiveTimeout();
@@ -627,7 +601,6 @@ cms::Message* CmsTemplate::doReceive( cm
         }
 
     }
-    CMSTEMPLATE_CATCH( ActiveMQException, this )
     CMSTEMPLATE_CATCHALL( this )
 }
 
@@ -648,7 +621,7 @@ void CmsTemplate::ReceiveExecutor::doInC
         // Destroy the consumer resource.
         parent->destroyConsumer( consumer );
 
-    } catch( ActiveMQException& e ) {
+    } catch( CMSException& e ) {
 
         e.setMark( __FILE__, __LINE__ );
 
@@ -666,7 +639,6 @@ cms::Destination* CmsTemplate::ResolveRe
     try {
         return parent->resolveDestinationName( session, destinationName );
     }
-    CMSTEMPLATE_CATCH( ActiveMQException, parent )
     CMSTEMPLATE_CATCH( IllegalStateException, parent )
     CMSTEMPLATE_CATCHALL( parent )
 }
@@ -681,7 +653,6 @@ cms::Message* CmsTemplate::receive() {
 
         return receiveExecutor.getMessage();
     }
-    CMSTEMPLATE_CATCH( ActiveMQException, this )
     CMSTEMPLATE_CATCHALL( this )
 }
 
@@ -695,7 +666,6 @@ cms::Message* CmsTemplate::receive( cms:
 
         return receiveExecutor.getMessage();
     }
-    CMSTEMPLATE_CATCH( ActiveMQException, this )
     CMSTEMPLATE_CATCHALL( this )
 }
 
@@ -710,7 +680,6 @@ cms::Message* CmsTemplate::receive( cons
 
         return receiveExecutor.getMessage();
     }
-    CMSTEMPLATE_CATCH( ActiveMQException, this )
     CMSTEMPLATE_CATCHALL( this )
 }
 
@@ -725,7 +694,6 @@ cms::Message* CmsTemplate::receiveSelect
 
         return receiveExecutor.getMessage();
     }
-    CMSTEMPLATE_CATCH( ActiveMQException, this )
     CMSTEMPLATE_CATCHALL( this )
 }
 
@@ -741,7 +709,6 @@ cms::Message* CmsTemplate::receiveSelect
 
         return receiveExecutor.getMessage();
     }
-    CMSTEMPLATE_CATCH( ActiveMQException, this )
     CMSTEMPLATE_CATCHALL( this )
 }
 
@@ -757,6 +724,5 @@ cms::Message* CmsTemplate::receiveSelect
 
         return receiveExecutor.getMessage();
     }
-    CMSTEMPLATE_CATCH( ActiveMQException, this )
     CMSTEMPLATE_CATCHALL( this )
 }

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/CmsTemplate.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/CmsTemplate.h?rev=999451&r1=999450&r2=999451&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/CmsTemplate.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/CmsTemplate.h Tue Sep 21 15:00:19 2010
@@ -23,7 +23,6 @@
 #include <activemq/cmsutil/SessionCallback.h>
 #include <activemq/cmsutil/ProducerCallback.h>
 #include <activemq/cmsutil/SessionPool.h>
-#include <decaf/lang/exceptions/IllegalStateException.h>
 #include <cms/ConnectionFactory.h>
 #include <cms/DeliveryMode.h>
 #include <string>

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/DynamicDestinationResolver.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/DynamicDestinationResolver.cpp?rev=999451&r1=999450&r2=999451&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/DynamicDestinationResolver.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/DynamicDestinationResolver.cpp Tue Sep 21 15:00:19 2010
@@ -17,11 +17,11 @@
 
 #include "DynamicDestinationResolver.h"
 #include "ResourceLifecycleManager.h"
-#include <activemq/exceptions/ActiveMQException.h>
+#include <cms/CMSException.h>
 
 using namespace activemq::cmsutil;
-using namespace activemq::exceptions;
 using namespace decaf::util;
+using namespace cms;
 using namespace std;
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -96,9 +96,7 @@ cms::Destination* DynamicDestinationReso
         cms::Session* session, const std::string& destName, bool pubSubDomain ) {
 
     if( destName == "" ) {
-        throw ActiveMQException(
-            __FILE__, __LINE__,
-            "destination name is invalid" ).convertToCMSException();
+        throw CMSException( "destination name is invalid", NULL );
     }
 
     // Get the resolver for this session.

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/PooledSession.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/PooledSession.cpp?rev=999451&r1=999450&r2=999451&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/PooledSession.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/PooledSession.cpp Tue Sep 21 15:00:19 2010
@@ -18,12 +18,20 @@
 #include "PooledSession.h"
 #include "SessionPool.h"
 #include "ResourceLifecycleManager.h"
-#include <activemq/exceptions/ActiveMQException.h>
-#include <activemq/exceptions/ExceptionDefines.h>
-#include <activemq/util/CMSExceptionSupport.h>
+#include <cms/CMSException.h>
 
+using namespace cms;
 using namespace activemq::cmsutil;
-using namespace activemq::exceptions;
+
+/**
+ * A catch-all that throws an CMSException.
+ */
+#define CMSTEMPLATE_CATCHALL() \
+    catch( cms::CMSException& ex ){ \
+        throw ex; \
+    } catch( ... ){ \
+        throw CMSException( "caught unknown exception", NULL ); \
+    }
 
 ////////////////////////////////////////////////////////////////////////////////
 PooledSession::PooledSession( SessionPool* pool, cms::Session* session )
@@ -72,7 +80,7 @@ cms::MessageProducer* PooledSession::cre
     try {
 
         if( destination == NULL ) {
-            throw ActiveMQException(__FILE__, __LINE__, "destination is NULL");
+            throw CMSException( "destination is NULL", NULL );
         }
 
         std::string key = getUniqueDestName(destination);
@@ -99,7 +107,7 @@ cms::MessageProducer* PooledSession::cre
 
         return cachedProducer;
     }
-    AMQ_CATCH_ALL_THROW_CMSEXCEPTION()
+    CMSTEMPLATE_CATCHALL()
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -110,7 +118,7 @@ cms::MessageConsumer* PooledSession::cre
     try {
 
         if( destination == NULL ) {
-            throw ActiveMQException( __FILE__, __LINE__, "destination is NULL" );
+            throw CMSException( "destination is NULL", NULL );
         }
 
         // Append the selector and noLocal flag onto the key.
@@ -142,7 +150,7 @@ cms::MessageConsumer* PooledSession::cre
 
         return cachedConsumer;
     }
-    AMQ_CATCH_ALL_THROW_CMSEXCEPTION()
+    CMSTEMPLATE_CATCHALL()
 }
 
 ////////////////////////////////////////////////////////////////////////////////

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/ResourceLifecycleManager.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/ResourceLifecycleManager.cpp?rev=999451&r1=999450&r2=999451&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/ResourceLifecycleManager.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/ResourceLifecycleManager.cpp Tue Sep 21 15:00:19 2010
@@ -17,12 +17,27 @@
 
 #include "ResourceLifecycleManager.h"
 
-#include <activemq/exceptions/ActiveMQException.h>
-#include <activemq/util/CMSExceptionSupport.h>
+#include <cms/CMSException.h>
 
+using namespace cms;
 using namespace activemq::cmsutil;
 
 ////////////////////////////////////////////////////////////////////////////////
+#define CMSTEMPLATE_CATCHALL() \
+    catch( cms::CMSException& ex ){ \
+        throw ex; \
+    } catch( std::exception& ex ) { \
+        throw CMSException( ex.what(), NULL ); \
+    } catch( ... ){ \
+        throw CMSException( "caught unknown exception", NULL ); \
+    }
+
+////////////////////////////////////////////////////////////////////////////////
+#define CMSTEMPLATE_CATCHALL_NOTHROW( ) \
+    catch( ... ){ \
+    }
+
+////////////////////////////////////////////////////////////////////////////////
 ResourceLifecycleManager::ResourceLifecycleManager() {
 }
 
@@ -34,7 +49,7 @@ ResourceLifecycleManager::~ResourceLifec
         // Destroy all the resources
         destroy();
     }
-    AMQ_CATCHALL_NOTHROW()
+    CMSTEMPLATE_CATCHALL_NOTHROW()
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -119,7 +134,7 @@ void ResourceLifecycleManager::destroy()
         // Empty all the lists.
         releaseAll();
     }
-    AMQ_CATCH_ALL_THROW_CMSEXCEPTION()
+    CMSTEMPLATE_CATCHALL()
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -131,7 +146,7 @@ void ResourceLifecycleManager::addConnec
             connections.add( connection );
         }
     }
-    AMQ_CATCH_ALL_THROW_CMSEXCEPTION()
+    CMSTEMPLATE_CATCHALL()
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -143,10 +158,9 @@ void ResourceLifecycleManager::addSessio
             sessions.add( session );
         }
     }
-    AMQ_CATCH_ALL_THROW_CMSEXCEPTION()
+    CMSTEMPLATE_CATCHALL()
 }
 
-
 ////////////////////////////////////////////////////////////////////////////////
 void ResourceLifecycleManager::addDestination( cms::Destination* dest ) {
 
@@ -156,7 +170,7 @@ void ResourceLifecycleManager::addDestin
             destinations.add( dest );
         }
     }
-    AMQ_CATCH_ALL_THROW_CMSEXCEPTION()
+    CMSTEMPLATE_CATCHALL()
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -168,7 +182,7 @@ void ResourceLifecycleManager::addMessag
             producers.add( producer );
         }
     }
-    AMQ_CATCH_ALL_THROW_CMSEXCEPTION()
+    CMSTEMPLATE_CATCHALL()
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -180,5 +194,5 @@ void ResourceLifecycleManager::addMessag
             consumers.add( consumer );
         }
     }
-    AMQ_CATCH_ALL_THROW_CMSEXCEPTION()
+    CMSTEMPLATE_CATCHALL()
 }