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/12/17 00:18:06 UTC

svn commit: r1050221 [1/8] - in /activemq/activemq-cpp/trunk/activemq-cpp/src: main/ main/activemq/cmsutil/ main/activemq/core/ main/activemq/state/ main/activemq/threads/ main/activemq/transport/ main/activemq/transport/failover/ main/activemq/util/ m...

Author: tabish
Date: Thu Dec 16 23:18:02 2010
New Revision: 1050221

URL: http://svn.apache.org/viewvc?rev=1050221&view=rev
Log:
Cleans up the collections classes and adds some new one's that are faster and better tested.  Change code to use new collections classes.  Cleans up some code that was questionable and fixes some issues found with the addition of the new unit tests.  

Added:
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/AbstractCollection.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/AbstractList.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/AbstractMap.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/AbstractQueue.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/AbstractSequentialList.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/AbstractSet.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/ArrayList.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/ArrayList.h   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/Arrays.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/Arrays.h   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/Collection.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/Comparator.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/ConcurrentModificationException.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/ConcurrentModificationException.h   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/Deque.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/Deque.h   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/Iterator.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/LinkedList.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/LinkedList.h   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/List.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/ListIterator.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/Map.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/NoSuchElementException.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/NoSuchElementException.h
      - copied, changed from r1036929, activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/lang/exceptions/NoSuchElementException.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/PriorityQueue.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/Queue.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/Set.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/StlList.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/StlMap.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/StlQueue.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/StlSet.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/BlockingQueue.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/BrokenBarrierException.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/Callable.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/ConcurrentMap.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/ConcurrentStlMap.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/CopyOnWriteArrayList.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/CopyOnWriteArrayList.h   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/CopyOnWriteArraySet.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/CopyOnWriteArraySet.h   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/Delayed.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/Executor.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/ExecutorService.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/Future.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/SynchronousQueue.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/TaskListener.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/ThreadFactory.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/atomic/AtomicRefCounter.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/atomic/AtomicReference.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/zip/DataFormatException.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/zip/ZipException.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/test-benchmarks/decaf/util/LinkedListBenchmark.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/test-benchmarks/decaf/util/LinkedListBenchmark.h   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/test-benchmarks/decaf/util/StlListBenchmark.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/test-benchmarks/decaf/util/StlListBenchmark.h   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/AbstractCollectionTest.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/AbstractCollectionTest.h   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/AbstractListTest.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/AbstractListTest.h   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/AbstractSequentialListTest.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/AbstractSequentialListTest.h   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/ArrayListTest.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/ArrayListTest.h   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/ArraysTest.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/ArraysTest.h   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/LinkedListTest.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/LinkedListTest.h   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/CopyOnWriteArrayListTest.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/CopyOnWriteArrayListTest.h   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/CopyOnWriteArraySetTest.cpp   (with props)
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/CopyOnWriteArraySetTest.h   (with props)
Removed:
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/lang/exceptions/NoSuchElementException.h
Modified:
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/Makefile.am
    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.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQConnection.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQConnection.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQProducer.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQSession.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQSession.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQTransactionContext.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/state/ConnectionState.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/state/ConnectionStateTracker.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/state/TransactionState.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/threads/CompositeTaskRunner.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/AbstractTransportFactory.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/TransportRegistry.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/TransportRegistry.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/BackupTransportPool.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/BackupTransportPool.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/FailoverTransport.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/FailoverTransport.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/URIPool.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/URIPool.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/CompositeData.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/PrimitiveList.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/PrimitiveList.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/PrimitiveMap.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/PrimitiveValueNode.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/PrimitiveValueNode.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/URISupport.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/URISupport.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/WireFormatRegistry.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/WireFormatRegistry.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/openwire/marshal/PrimitiveTypesMarshaller.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/openwire/marshal/PrimitiveTypesMarshaller.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/internal/net/Network.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/AbstractCollection.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/AbstractList.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/AbstractQueue.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/AbstractSequentialList.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/AbstractSet.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/Collection.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/Iterator.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/List.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/ListIterator.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/Map.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/PriorityQueue.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/Queue.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/Set.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/StlList.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/StlMap.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/StlQueue.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/StlSet.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/StringTokenizer.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/BrokenBarrierException.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/ConcurrentMap.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/ConcurrentStlMap.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/Executor.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/ExecutorService.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/Future.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/SynchronousQueue.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/TaskListener.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/zip/DataFormatException.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/zip/ZipException.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/test-benchmarks/Makefile.am
    activemq/activemq-cpp/trunk/activemq-cpp/src/test-benchmarks/testRegistry.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/Makefile.am
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/transport/TransportRegistryTest.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/transport/failover/FailoverTransportTest.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/util/PrimitiveListTest.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/util/PrimitiveMapTest.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/util/PrimitiveValueNodeTest.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/wireformat/WireFormatRegistryTest.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/ListTest.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/ListTest.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/PriorityQueueTest.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/SetTest.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/SetTest.h
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/StlMapTest.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/StringTokenizerTest.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/ConcurrentStlMapTest.cpp
    activemq/activemq-cpp/trunk/activemq-cpp/src/test/testRegistry.cpp

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/Makefile.am
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/Makefile.am?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/Makefile.am (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/Makefile.am Thu Dec 16 23:18:02 2010
@@ -394,22 +394,63 @@ cc_sources = \
     decaf/nio/ShortBuffer.cpp \
     decaf/security/SecureRandom.cpp \
     decaf/security/SecureRandomSpi.cpp \
+    decaf/util/AbstractCollection.cpp \
+    decaf/util/AbstractList.cpp \
+    decaf/util/AbstractMap.cpp \
+    decaf/util/AbstractQueue.cpp \
+    decaf/util/AbstractSequentialList.cpp \
+    decaf/util/AbstractSet.cpp \
+    decaf/util/ArrayList.cpp \
+    decaf/util/Arrays.cpp \
+    decaf/util/Collection.cpp \
+    decaf/util/Comparator.cpp \
+    decaf/util/ConcurrentModificationException.cpp \
     decaf/util/Date.cpp \
+    decaf/util/Deque.cpp \
+    decaf/util/Iterator.cpp \
+    decaf/util/LinkedList.cpp \
+    decaf/util/List.cpp \
+    decaf/util/ListIterator.cpp \
+    decaf/util/Map.cpp \
+    decaf/util/NoSuchElementException.cpp \
+    decaf/util/PriorityQueue.cpp \
     decaf/util/Properties.cpp \
+    decaf/util/Queue.cpp \
     decaf/util/Random.cpp \
+    decaf/util/Set.cpp \
+    decaf/util/StlList.cpp \
+    decaf/util/StlMap.cpp \
+    decaf/util/StlQueue.cpp \
+    decaf/util/StlSet.cpp \
     decaf/util/StringTokenizer.cpp \
     decaf/util/Timer.cpp \
     decaf/util/TimerTask.cpp \
     decaf/util/UUID.cpp \
+    decaf/util/concurrent/BlockingQueue.cpp \
+    decaf/util/concurrent/BrokenBarrierException.cpp \
+    decaf/util/concurrent/Callable.cpp \
+    decaf/util/concurrent/ConcurrentMap.cpp \
+    decaf/util/concurrent/ConcurrentStlMap.cpp \
+    decaf/util/concurrent/CopyOnWriteArrayList.cpp \
+    decaf/util/concurrent/CopyOnWriteArraySet.cpp \
     decaf/util/concurrent/CountDownLatch.cpp \
+    decaf/util/concurrent/Delayed.cpp \
+    decaf/util/concurrent/Executor.cpp \
+    decaf/util/concurrent/ExecutorService.cpp \
+    decaf/util/concurrent/Future.cpp \
     decaf/util/concurrent/Lock.cpp \
     decaf/util/concurrent/Mutex.cpp \
     decaf/util/concurrent/PooledThread.cpp \
     decaf/util/concurrent/Semaphore.cpp \
+    decaf/util/concurrent/SynchronousQueue.cpp \
+    decaf/util/concurrent/TaskListener.cpp \
+    decaf/util/concurrent/ThreadFactory.cpp \
     decaf/util/concurrent/ThreadPool.cpp \
     decaf/util/concurrent/TimeUnit.cpp \
     decaf/util/concurrent/atomic/AtomicBoolean.cpp \
     decaf/util/concurrent/atomic/AtomicInteger.cpp \
+    decaf/util/concurrent/atomic/AtomicRefCounter.cpp \
+    decaf/util/concurrent/atomic/AtomicReference.cpp \
     decaf/util/concurrent/locks/LockSupport.cpp \
     decaf/util/concurrent/locks/ReentrantLock.cpp \
     decaf/util/logging/ConsoleHandler.cpp \
@@ -430,10 +471,12 @@ cc_sources = \
     decaf/util/zip/CRC32.cpp \
     decaf/util/zip/CheckedInputStream.cpp \
     decaf/util/zip/CheckedOutputStream.cpp \
+    decaf/util/zip/DataFormatException.cpp \
     decaf/util/zip/Deflater.cpp \
     decaf/util/zip/DeflaterOutputStream.cpp \
     decaf/util/zip/Inflater.cpp \
-    decaf/util/zip/InflaterInputStream.cpp
+    decaf/util/zip/InflaterInputStream.cpp \
+    decaf/util/zip/ZipException.cpp
 
 
 h_sources = \
@@ -858,7 +901,6 @@ h_sources = \
     decaf/lang/exceptions/IndexOutOfBoundsException.h \
     decaf/lang/exceptions/InterruptedException.h \
     decaf/lang/exceptions/InvalidStateException.h \
-    decaf/lang/exceptions/NoSuchElementException.h \
     decaf/lang/exceptions/NullPointerException.h \
     decaf/lang/exceptions/NumberFormatException.h \
     decaf/lang/exceptions/RuntimeException.h \
@@ -938,14 +980,20 @@ h_sources = \
     decaf/util/AbstractQueue.h \
     decaf/util/AbstractSequentialList.h \
     decaf/util/AbstractSet.h \
+    decaf/util/ArrayList.h \
+    decaf/util/Arrays.h \
     decaf/util/Collection.h \
     decaf/util/Comparator.h \
+    decaf/util/ConcurrentModificationException.h \
     decaf/util/Config.h \
     decaf/util/Date.h \
+    decaf/util/Deque.h \
     decaf/util/Iterator.h \
+    decaf/util/LinkedList.h \
     decaf/util/List.h \
     decaf/util/ListIterator.h \
     decaf/util/Map.h \
+    decaf/util/NoSuchElementException.h \
     decaf/util/PriorityQueue.h \
     decaf/util/Properties.h \
     decaf/util/Queue.h \
@@ -967,6 +1015,8 @@ h_sources = \
     decaf/util/concurrent/Concurrent.h \
     decaf/util/concurrent/ConcurrentMap.h \
     decaf/util/concurrent/ConcurrentStlMap.h \
+    decaf/util/concurrent/CopyOnWriteArrayList.h \
+    decaf/util/concurrent/CopyOnWriteArraySet.h \
     decaf/util/concurrent/CountDownLatch.h \
     decaf/util/concurrent/Delayed.h \
     decaf/util/concurrent/ExecutionException.h \

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=1050221&r1=1050220&r2=1050221&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 Thu Dec 16 23:18:02 2010
@@ -33,7 +33,7 @@ cms::Topic* DynamicDestinationResolver::
         // See if we already have a topic with this name.
         topic = topicMap.get( topicName );
 
-    } catch ( decaf::lang::exceptions::NoSuchElementException& ex ) {
+    } catch ( decaf::util::NoSuchElementException& ex ) {
 
         // Create a new topic.
         topic = session->createTopic( topicName );
@@ -56,7 +56,7 @@ cms::Queue* DynamicDestinationResolver::
         // See if we already have a queue with this name.
         queue = queueMap.get( queueName );
 
-    } catch ( decaf::lang::exceptions::NoSuchElementException& ex ) {
+    } catch ( decaf::util::NoSuchElementException& ex ) {
 
         // Create a new queue.
         queue = session->createQueue( queueName );
@@ -103,7 +103,7 @@ cms::Destination* DynamicDestinationReso
     SessionResolver* resolver = NULL;
     try {
         resolver = sessionResolverMap.get( session );
-    } catch ( decaf::lang::exceptions::NoSuchElementException& ex ) {
+    } catch ( decaf::util::NoSuchElementException& ex ) {
         resolver = new SessionResolver( session, resourceLifecycleManager );
         sessionResolverMap.put( session, resolver );
     }

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=1050221&r1=1050220&r2=1050221&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 Thu Dec 16 23:18:02 2010
@@ -89,7 +89,7 @@ cms::MessageProducer* PooledSession::cre
         CachedProducer* cachedProducer = NULL;
         try {
             cachedProducer = producerCache.get( key );
-        } catch( decaf::lang::exceptions::NoSuchElementException& e ) {
+        } catch( decaf::util::NoSuchElementException& e ) {
 
             // No producer exists for this destination - start by creating
             // a new producer resource.
@@ -132,7 +132,7 @@ cms::MessageConsumer* PooledSession::cre
         CachedConsumer* cachedConsumer = NULL;
         try {
             cachedConsumer = consumerCache.get( key );
-        } catch( decaf::lang::exceptions::NoSuchElementException& e ) {
+        } catch( decaf::util::NoSuchElementException& e ) {
 
             // No producer exists for this destination - start by creating
             // a new consumer resource.

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/ResourceLifecycleManager.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/ResourceLifecycleManager.h?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/ResourceLifecycleManager.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/cmsutil/ResourceLifecycleManager.h Thu Dec 16 23:18:02 2010
@@ -24,7 +24,7 @@
 #include <cms/MessageProducer.h>
 #include <cms/MessageConsumer.h>
 #include <activemq/util/Config.h>
-#include <decaf/util/StlList.h>
+#include <decaf/util/LinkedList.h>
 
 namespace activemq {
 namespace cmsutil {
@@ -37,11 +37,11 @@ namespace cmsutil {
     class AMQCPP_API ResourceLifecycleManager {
     private:
 
-        typedef decaf::util::StlList< cms::Connection* > ConnectionList;
-        typedef decaf::util::StlList< cms::Session* > SessionList;
-        typedef decaf::util::StlList< cms::Destination* > DestinationList;
-        typedef decaf::util::StlList< cms::MessageProducer* > ProducerList;
-        typedef decaf::util::StlList< cms::MessageConsumer* > ConsumerList;
+        typedef decaf::util::LinkedList< cms::Connection* > ConnectionList;
+        typedef decaf::util::LinkedList< cms::Session* > SessionList;
+        typedef decaf::util::LinkedList< cms::Destination* > DestinationList;
+        typedef decaf::util::LinkedList< cms::MessageProducer* > ProducerList;
+        typedef decaf::util::LinkedList< cms::MessageConsumer* > ConsumerList;
 
         ConnectionList connections;
         SessionList sessions;

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQConnection.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQConnection.cpp?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQConnection.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQConnection.cpp Thu Dec 16 23:18:02 2010
@@ -83,6 +83,16 @@ namespace core{
     class ConnectionConfig {
     public:
 
+        typedef decaf::util::StlMap< Pointer<commands::ConsumerId>,
+                                     Dispatcher*,
+                                     commands::ConsumerId::COMPARATOR > DispatcherMap;
+
+        typedef decaf::util::StlMap< Pointer<commands::ProducerId>,
+                                     ActiveMQProducer*,
+                                     commands::ProducerId::COMPARATOR > ProducerMap;
+
+    public:
+
         static util::IdGenerator CONNECTION_ID_GENERATOR;
 
         Pointer<decaf::util::Properties> properties;
@@ -125,6 +135,12 @@ namespace core{
 
         Pointer<Exception> firstFailureError;
 
+        DispatcherMap dispatchers;
+        ProducerMap activeProducers;
+
+        decaf::util::concurrent::CopyOnWriteArrayList<ActiveMQSession*> activeSessions;
+        decaf::util::concurrent::CopyOnWriteArrayList<transport::TransportListener*> transportListeners;
+
         ConnectionConfig() : clientIDSet( false ),
                              isConnectionInfoSentToBroker( false ),
                              userSpecifiedClientID( false ),
@@ -205,8 +221,8 @@ void ActiveMQConnection::addDispatcher(
 
     try{
         // Add the consumer to the map.
-        synchronized( &dispatchers ) {
-            dispatchers.put( consumer, dispatcher );
+        synchronized( &this->config->dispatchers ) {
+            this->config->dispatchers.put( consumer, dispatcher );
         }
     }
     AMQ_CATCH_ALL_THROW_CMSEXCEPTION()
@@ -217,8 +233,8 @@ void ActiveMQConnection::removeDispatche
 
     try{
         // Remove the consumer from the map.
-        synchronized( &dispatchers ) {
-            dispatchers.remove( consumer );
+        synchronized( &this->config->dispatchers ) {
+            this->config->dispatchers.remove( consumer );
         }
     }
     AMQ_CATCH_ALL_THROW_CMSEXCEPTION()
@@ -265,9 +281,7 @@ void ActiveMQConnection::addSession( Act
     try {
 
         // Remove this session from the set of active sessions.
-        synchronized( &activeSessions ) {
-            activeSessions.add( session );
-        }
+        this->config->activeSessions.add( session );
     }
     AMQ_CATCH_ALL_THROW_CMSEXCEPTION()
 }
@@ -278,9 +292,7 @@ void ActiveMQConnection::removeSession( 
     try {
 
         // Remove this session from the set of active sessions.
-        synchronized( &activeSessions ) {
-            activeSessions.remove( session );
-        }
+        this->config->activeSessions.remove( session );
     }
     AMQ_CATCH_ALL_THROW_CMSEXCEPTION()
 }
@@ -291,8 +303,8 @@ void ActiveMQConnection::addProducer( Ac
     try {
 
         // Add this producer from the set of active consumer.
-        synchronized( &activeProducers ) {
-            activeProducers.put( producer->getProducerInfo()->getProducerId(), producer );
+        synchronized( &this->config->activeProducers ) {
+            this->config->activeProducers.put( producer->getProducerInfo()->getProducerId(), producer );
         }
     }
     AMQ_CATCH_ALL_THROW_CMSEXCEPTION()
@@ -304,8 +316,8 @@ void ActiveMQConnection::removeProducer(
     try {
 
         // Remove this producer from the set of active consumer.
-        synchronized( &activeProducers ) {
-            activeProducers.remove( producerId );
+        synchronized( &this->config->activeProducers ) {
+            this->config->activeProducers.remove( producerId );
         }
     }
     AMQ_CATCH_ALL_THROW_CMSEXCEPTION()
@@ -370,16 +382,13 @@ void ActiveMQConnection::close() {
         this->closing.set( true );
 
         // Get the complete list of active sessions.
-        std::vector<ActiveMQSession*> allSessions;
-        synchronized( &activeSessions ) {
-            allSessions = activeSessions.toArray();
-        }
+        std::auto_ptr< Iterator<ActiveMQSession*> > iter( this->config->activeSessions.iterator() );
 
         long long lastDeliveredSequenceId = 0;
 
         // Dispose of all the Session resources we know are still open.
-        for( unsigned int ix=0; ix<allSessions.size(); ++ix ){
-            ActiveMQSession* session = allSessions[ix];
+        while( iter->hasNext() ) {
+            ActiveMQSession* session = iter->next();
             try{
                 session->dispose();
 
@@ -407,14 +416,11 @@ void ActiveMQConnection::cleanup() {
     try{
 
         // Get the complete list of active sessions.
-        std::vector<ActiveMQSession*> allSessions;
-        synchronized( &activeSessions ) {
-            allSessions = activeSessions.toArray();
-        }
+        std::auto_ptr< Iterator<ActiveMQSession*> > iter( this->config->activeSessions.iterator() );
 
         // Dispose of all the Session resources we know are still open.
-        for( unsigned int ix=0; ix<allSessions.size(); ++ix ){
-            ActiveMQSession* session = allSessions[ix];
+        while( iter->hasNext() ) {
+            ActiveMQSession* session = iter->next();
             try{
                 session->dispose();
             } catch( cms::CMSException& ex ){
@@ -454,9 +460,9 @@ void ActiveMQConnection::start() {
         if( this->started.compareAndSet( false, true ) ) {
 
             // Start all the sessions.
-            std::vector<ActiveMQSession*> sessions = activeSessions.toArray();
-            for( unsigned int ix=0; ix<sessions.size(); ++ix ) {
-                sessions[ix]->start();
+            std::auto_ptr< Iterator<ActiveMQSession*> > iter( this->config->activeSessions.iterator() );
+            while( iter->hasNext() ) {
+                iter->next()->start();
             }
         }
     }
@@ -473,10 +479,12 @@ void ActiveMQConnection::stop() {
         // Once current deliveries are done this stops the delivery of any
         // new messages.
         if( this->started.compareAndSet( true, false ) ) {
-            std::auto_ptr< Iterator<ActiveMQSession*> > iter( activeSessions.iterator() );
+            synchronized( &this->config->activeSessions ) {
+                std::auto_ptr< Iterator<ActiveMQSession*> > iter( this->config->activeSessions.iterator() );
 
-            while( iter->hasNext() ){
-                iter->next()->stop();
+                while( iter->hasNext() ){
+                    iter->next()->stop();
+                }
             }
         }
     }
@@ -629,9 +637,9 @@ void ActiveMQConnection::onCommand( cons
 
             // Look up the dispatcher.
             Dispatcher* dispatcher = NULL;
-            synchronized( &dispatchers ) {
+            synchronized( &this->config->dispatchers ) {
 
-                dispatcher = dispatchers.get( dispatch->getConsumerId() );
+                dispatcher = this->config->dispatchers.get( dispatch->getConsumerId() );
 
                 // If we have no registered dispatcher, the consumer was probably
                 // just closed.
@@ -652,13 +660,12 @@ void ActiveMQConnection::onCommand( cons
 
         } else if( command->isProducerAck() ) {
 
-            ProducerAck* producerAck =
-                dynamic_cast<ProducerAck*>( command.get() );
+            ProducerAck* producerAck = dynamic_cast<ProducerAck*>( command.get() );
 
             // Get the consumer info object for this consumer.
             ActiveMQProducer* producer = NULL;
-            synchronized( &this->activeProducers ) {
-                producer = this->activeProducers.get( producerAck->getProducerId() );
+            synchronized( &this->config->activeProducers ) {
+                producer = this->config->activeProducers.get( producerAck->getProducerId() );
                 if( producer != NULL ){
                     producer->onProducerAck( *producerAck );
                 }
@@ -686,15 +693,12 @@ void ActiveMQConnection::onCommand( cons
             //LOGDECAF_WARN( logger, "Received an unknown command" );
         }
 
-        synchronized( &transportListeners ) {
-
-            Pointer< Iterator<TransportListener*> > iter( transportListeners.iterator() );
+        Pointer< Iterator<TransportListener*> > iter( this->config->transportListeners.iterator() );
 
-            while( iter->hasNext() ) {
-                try{
-                    iter->next()->onCommand( command );
-                } catch(...) {}
-            }
+        while( iter->hasNext() ) {
+            try{
+                iter->next()->onCommand( command );
+            } catch(...) {}
         }
     }
     AMQ_CATCH_RETHROW( ActiveMQException )
@@ -735,15 +739,12 @@ void ActiveMQConnection::onException( co
         // Clean up the Connection resources.
         cleanup();
 
-        synchronized( &transportListeners ) {
-
-            Pointer< Iterator<TransportListener*> > iter( transportListeners.iterator() );
+        Pointer< Iterator<TransportListener*> > iter( this->config->transportListeners.iterator() );
 
-            while( iter->hasNext() ) {
-                try{
-                    iter->next()->onException( ex );
-                } catch(...) {}
-            }
+        while( iter->hasNext() ) {
+            try{
+                iter->next()->onException( ex );
+            } catch(...) {}
         }
     }
     AMQ_CATCH_RETHROW( ActiveMQException )
@@ -767,40 +768,33 @@ void ActiveMQConnection::onAsyncExceptio
 ////////////////////////////////////////////////////////////////////////////////
 void ActiveMQConnection::transportInterrupted() {
 
-    this->config->transportInterruptionProcessingComplete.reset( new CountDownLatch( (int)dispatchers.size() ) );
+    this->config->transportInterruptionProcessingComplete.reset(
+        new CountDownLatch( (int)this->config->dispatchers.size() ) );
 
-    synchronized( &activeSessions ) {
-        std::auto_ptr< Iterator<ActiveMQSession*> > iter( this->activeSessions.iterator() );
+    std::auto_ptr< Iterator<ActiveMQSession*> > sessions( this->config->activeSessions.iterator() );
 
-        while( iter->hasNext() ) {
-            iter->next()->clearMessagesInProgress();
-        }
+    while( sessions->hasNext() ) {
+        sessions->next()->clearMessagesInProgress();
     }
 
-    synchronized( &transportListeners ) {
-
-        Pointer< Iterator<TransportListener*> > iter( transportListeners.iterator() );
+    Pointer< Iterator<TransportListener*> > listeners( this->config->transportListeners.iterator() );
 
-        while( iter->hasNext() ) {
-            try{
-                iter->next()->transportInterrupted();
-            } catch(...) {}
-        }
+    while( listeners->hasNext() ) {
+        try{
+            listeners->next()->transportInterrupted();
+        } catch(...) {}
     }
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 void ActiveMQConnection::transportResumed() {
 
-    synchronized( &transportListeners ) {
-
-        Pointer< Iterator<TransportListener*> > iter( transportListeners.iterator() );
+    Pointer< Iterator<TransportListener*> > iter( this->config->transportListeners.iterator() );
 
-        while( iter->hasNext() ) {
-            try{
-                iter->next()->transportResumed();
-            } catch(...) {}
-        }
+    while( iter->hasNext() ) {
+        try{
+            iter->next()->transportResumed();
+        } catch(...) {}
     }
 }
 
@@ -934,9 +928,7 @@ void ActiveMQConnection::addTransportLis
     }
 
     // Add this listener from the set of active TransportListeners
-    synchronized( &transportListeners ) {
-        transportListeners.add( transportListener );
-    }
+    this->config->transportListeners.add( transportListener );
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -947,9 +939,7 @@ void ActiveMQConnection::removeTransport
     }
 
     // Remove this listener from the set of active TransportListeners
-    synchronized( &transportListeners ) {
-        transportListeners.remove( transportListener );
-    }
+    this->config->transportListeners.remove( transportListener );
 }
 
 ////////////////////////////////////////////////////////////////////////////////

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQConnection.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQConnection.h?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQConnection.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQConnection.h Thu Dec 16 23:18:02 2010
@@ -30,9 +30,8 @@
 #include <activemq/transport/Transport.h>
 #include <activemq/transport/TransportListener.h>
 #include <decaf/util/Properties.h>
-#include <decaf/util/StlMap.h>
-#include <decaf/util/StlSet.h>
 #include <decaf/util/concurrent/atomic/AtomicBoolean.h>
+#include <decaf/util/concurrent/CopyOnWriteArrayList.h>
 #include <decaf/lang/exceptions/UnsupportedOperationException.h>
 #include <decaf/lang/exceptions/NullPointerException.h>
 #include <decaf/lang/exceptions/IllegalStateException.h>
@@ -62,16 +61,6 @@ namespace core{
                                           public transport::TransportListener {
     private:
 
-        typedef decaf::util::StlMap< Pointer<commands::ConsumerId>,
-                                     Dispatcher*,
-                                     commands::ConsumerId::COMPARATOR > DispatcherMap;
-
-        typedef decaf::util::StlMap< Pointer<commands::ProducerId>,
-                                     ActiveMQProducer*,
-                                     commands::ProducerId::COMPARATOR > ProducerMap;
-
-    private:
-
         ConnectionConfig* config;
 
         /**
@@ -101,26 +90,6 @@ namespace core{
          */
         AtomicBoolean transportFailed;
 
-        /**
-         * Map of message dispatchers indexed by consumer id.
-         */
-        DispatcherMap dispatchers;
-
-        /**
-         * Map of message producers indexed by consumer id.
-         */
-        ProducerMap activeProducers;
-
-        /**
-         * Maintain the set of all active sessions.
-         */
-        decaf::util::StlSet<ActiveMQSession*> activeSessions;
-
-        /**
-         * Maintain the set of all active sessions.
-         */
-        decaf::util::StlSet<transport::TransportListener*> transportListeners;
-
     private:
 
         ActiveMQConnection( const ActiveMQConnection& );

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQProducer.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQProducer.cpp?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQProducer.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQProducer.cpp Thu Dec 16 23:18:02 2010
@@ -115,7 +115,7 @@ void ActiveMQProducer::close() {
 void ActiveMQProducer::dispose() {
 
     if( !this->isClosed() ) {
-        this->session->removeProducer( this->producerInfo->getProducerId() );
+        this->session->removeProducer( this );
         this->closed = true;
     }
 }

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQSession.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQSession.cpp?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQSession.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQSession.cpp Thu Dec 16 23:18:02 2010
@@ -63,6 +63,7 @@ using namespace activemq::core;
 using namespace activemq::commands;
 using namespace activemq::exceptions;
 using namespace decaf::util;
+using namespace decaf::util::concurrent;
 using namespace decaf::lang;
 using namespace decaf::lang::exceptions;
 
@@ -108,6 +109,39 @@ namespace {
 }
 
 ////////////////////////////////////////////////////////////////////////////////
+namespace activemq{
+namespace core{
+
+    class SessionConfig {
+    public:
+
+        typedef decaf::util::StlMap< Pointer<commands::ConsumerId>,
+                                     ActiveMQConsumer*,
+                                     commands::ConsumerId::COMPARATOR> ConsumersMap;
+
+    public:
+
+        /**
+         * Bool to indicate if the Session has added a Syncronization to a TransactionContext.
+         */
+        bool synchronizationRegistered;
+
+        /**
+         * Map of producers.
+         */
+        decaf::util::concurrent::CopyOnWriteArrayList<ActiveMQProducer*> producers;
+
+    public:
+
+        SessionConfig() : synchronizationRegistered( false ), producers() {
+        }
+
+        ~SessionConfig() {}
+    };
+
+}}
+
+////////////////////////////////////////////////////////////////////////////////
 ActiveMQSession::ActiveMQSession( ActiveMQConnection* connection,
                                   const Pointer<SessionId>& id,
                                   cms::Session::AcknowledgeMode ackMode,
@@ -119,6 +153,8 @@ ActiveMQSession::ActiveMQSession( Active
             "ActiveMQSession::ActiveMQSession - Constructor called with NULL data");
     }
 
+    this->config = new SessionConfig();
+
     this->sessionInfo.reset( new SessionInfo() );
     this->sessionInfo->setAckMode( ackMode );
     this->sessionInfo->setSessionId( id );
@@ -127,7 +163,6 @@ ActiveMQSession::ActiveMQSession( Active
 
     this->connection = connection;
     this->closed = false;
-    this->synchronizationRegistered = false;
     this->ackMode = ackMode;
     this->lastDeliveredSequenceId = -1;
 
@@ -153,6 +188,8 @@ ActiveMQSession::~ActiveMQSession() thro
     }
     AMQ_CATCH_NOTHROW( ActiveMQException )
     AMQ_CATCHALL_NOTHROW( )
+
+    delete this->config;
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -166,7 +203,7 @@ void ActiveMQSession::fire( const active
 void ActiveMQSession::close() {
 
     // If we're already closed, just return.
-    if( closed ) {
+    if( this->closed.get() ) {
         return;
     }
 
@@ -260,16 +297,13 @@ void ActiveMQSession::dispose() {
         }
 
         // Dispose of all Producers, the dispose method skips the RemoveInfo command.
-        synchronized( &this->producers ) {
+        std::auto_ptr< Iterator<ActiveMQProducer*> > producerIter( this->config->producers.iterator() );
 
-            std::vector<ActiveMQProducer*> closables = this->producers.values();
-
-            for( std::size_t i = 0; i < closables.size(); ++i ) {
-                try{
-                    closables[i]->dispose();
-                } catch( cms::CMSException& ex ){
-                    /* Absorb */
-                }
+        while( producerIter->hasNext() ) {
+            try{
+                producerIter->next()->dispose();
+            } catch( cms::CMSException& ex ){
+                /* Absorb */
             }
         }
     }
@@ -532,7 +566,7 @@ cms::MessageProducer* ActiveMQSession::c
             this->addProducer( producer.get() );
             this->connection->oneway( producer->getProducerInfo() );
         } catch( Exception& ex ) {
-            this->removeProducer( producer->getProducerId() );
+            this->removeProducer( producer.get() );
             throw ex;
         }
 
@@ -986,7 +1020,7 @@ Pointer<Response> ActiveMQSession::syncR
 
 ////////////////////////////////////////////////////////////////////////////////
 void ActiveMQSession::checkClosed() const {
-    if( closed ) {
+    if( this->closed.get() ) {
         throw ActiveMQException(
             __FILE__, __LINE__,
             "ActiveMQSession - Session Already Closed" );
@@ -1043,10 +1077,7 @@ void ActiveMQSession::addProducer( Activ
 
         this->checkClosed();
 
-        synchronized( &this->producers ) {
-            // Place the Producer into the Map.
-            this->producers.put( producer->getProducerInfo()->getProducerId(), producer );
-        }
+        this->config->producers.add( producer );
 
         // Add to the Connections list
         this->connection->addProducer( producer );
@@ -1057,20 +1088,14 @@ void ActiveMQSession::addProducer( Activ
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-void ActiveMQSession::removeProducer( const Pointer<ProducerId>& producerId ) {
+void ActiveMQSession::removeProducer( ActiveMQProducer* producer ) {
 
     try{
 
         this->checkClosed();
 
-        synchronized( &this->producers ) {
-
-            if( this->producers.containsKey( producerId ) ) {
-
-                this->connection->removeProducer( producerId );
-                this->producers.remove( producerId );
-            }
-        }
+        this->connection->removeProducer( producer->getProducerId() );
+        this->config->producers.remove( producer );
     }
     AMQ_CATCH_RETHROW( ActiveMQException )
     AMQ_CATCH_EXCEPTION_CONVERT( Exception, ActiveMQException )

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQSession.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQSession.h?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQSession.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQSession.h Thu Dec 16 23:18:02 2010
@@ -39,6 +39,8 @@
 #include <decaf/util/StlMap.h>
 #include <decaf/util/StlQueue.h>
 #include <decaf/util/Properties.h>
+#include <decaf/util/concurrent/atomic/AtomicBoolean.h>
+#include <decaf/util/concurrent/CopyOnWriteArrayList.h>
 
 #include <string>
 #include <memory>
@@ -47,7 +49,9 @@ namespace activemq{
 namespace core{
 
     using decaf::lang::Pointer;
+    using decaf::util::concurrent::atomic::AtomicBoolean;
 
+    class SessionConfig;
     class ActiveMQConnection;
     class ActiveMQConsumer;
     class ActiveMQMessage;
@@ -62,14 +66,12 @@ namespace core{
                                      ActiveMQConsumer*,
                                      commands::ConsumerId::COMPARATOR> ConsumersMap;
 
-        typedef decaf::util::StlMap< Pointer<commands::ProducerId>,
-                                     ActiveMQProducer*,
-                                     commands::ProducerId::COMPARATOR> ProducersMap;
-
         friend class ActiveMQSessionExecutor;
 
     protected:
 
+        SessionConfig* config;
+
         /**
          * SessionInfo for this Session
          */
@@ -86,24 +88,15 @@ namespace core{
         ActiveMQConnection* connection;
 
         /**
-         * Bool to indicate if this session was closed.
-         */
-        bool closed;
-
-        /**
-         * Bool to indicate if the Session has added a Syncronization to a TransactionContext.
-         */
-        bool synchronizationRegistered;
-
-        /**
          * Map of consumers.
          */
         ConsumersMap consumers;
 
         /**
-         * Map of producers.
+         * Indicates that this connection has been closed, it is no longer
+         * usable after this becomes true
          */
-        ProducersMap producers;
+        AtomicBoolean closed;
 
         /**
          * Sends incoming messages to the registered consumers.
@@ -394,7 +387,7 @@ namespace core{
          *
          * @throw ActiveMQException if an internal error occurs.
          */
-        void addProducer( ActiveMQProducer* consumer );
+        void addProducer( ActiveMQProducer* producer );
 
         /**
          * Dispose of a MessageProducer from this session.  Removes it from the Connection
@@ -405,7 +398,7 @@ namespace core{
          *
          * @throw ActiveMQException if an internal error occurs.
          */
-        void removeProducer( const Pointer<commands::ProducerId>& producerId );
+        void removeProducer( ActiveMQProducer* producer );
 
         /**
          * Starts if not already start a Transaction for this Session.  If the session
@@ -492,14 +485,12 @@ namespace core{
        // Send the Destination Creation Request to the Broker, alerting it
        // that we've created a new Temporary Destination.
        // @param tempDestination - The new Temporary Destination
-       void createTemporaryDestination(
-           commands::ActiveMQTempDestination* tempDestination );
+       void createTemporaryDestination( commands::ActiveMQTempDestination* tempDestination );
 
        // Send the Destination Destruction Request to the Broker, alerting
        // it that we've removed an existing Temporary Destination.
        // @param tempDestination - The Temporary Destination to remove
-       void destroyTemporaryDestination(
-           commands::ActiveMQTempDestination* tempDestination );
+       void destroyTemporaryDestination( commands::ActiveMQTempDestination* tempDestination );
 
        // Creates a new Temporary Destination name using the connection id
        // and a rolling count.

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQTransactionContext.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQTransactionContext.cpp?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQTransactionContext.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQTransactionContext.cpp Thu Dec 16 23:18:02 2010
@@ -33,7 +33,6 @@
 #include <decaf/lang/Integer.h>
 #include <decaf/lang/Long.h>
 #include <decaf/util/Iterator.h>
-#include <decaf/util/StlList.h>
 #include <decaf/util/concurrent/ConcurrentStlMap.h>
 
 using namespace std;

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/state/ConnectionState.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/state/ConnectionState.h?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/state/ConnectionState.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/state/ConnectionState.h Thu Dec 16 23:18:02 2010
@@ -34,7 +34,7 @@
 #include <decaf/util/StlMap.h>
 #include <decaf/util/concurrent/atomic/AtomicBoolean.h>
 #include <decaf/util/concurrent/ConcurrentStlMap.h>
-#include <decaf/util/StlList.h>
+#include <decaf/util/LinkedList.h>
 #include <decaf/lang/Pointer.h>
 
 #include <string>
@@ -57,7 +57,7 @@ namespace state {
         ConcurrentStlMap< Pointer<SessionId>,
                           Pointer<SessionState>,
                           SessionId::COMPARATOR > sessions;
-        StlList< Pointer<DestinationInfo> > tempDestinations;
+        LinkedList< Pointer<DestinationInfo> > tempDestinations;
         decaf::util::concurrent::atomic::AtomicBoolean disposed;
 
         bool connectionInterruptProcessingComplete;
@@ -133,7 +133,7 @@ namespace state {
             return sessions.get( id );
         }
 
-        const StlList< Pointer<DestinationInfo> >& getTempDesinations() const {
+        const LinkedList< Pointer<DestinationInfo> >& getTempDesinations() const {
             return tempDestinations;
         }
 

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/state/ConnectionStateTracker.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/state/ConnectionStateTracker.cpp?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/state/ConnectionStateTracker.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/state/ConnectionStateTracker.cpp Thu Dec 16 23:18:02 2010
@@ -18,7 +18,7 @@
 #include "ConnectionStateTracker.h"
 
 #include <decaf/lang/Runnable.h>
-#include <decaf/lang/exceptions/NoSuchElementException.h>
+#include <decaf/util/NoSuchElementException.h>
 
 #include <activemq/commands/ConsumerControl.h>
 #include <activemq/commands/RemoveInfo.h>

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/state/TransactionState.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/state/TransactionState.h?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/state/TransactionState.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/state/TransactionState.h Thu Dec 16 23:18:02 2010
@@ -24,7 +24,7 @@
 #include <activemq/commands/TransactionId.h>
 
 #include <decaf/lang/Pointer.h>
-#include <decaf/util/StlList.h>
+#include <decaf/util/LinkedList.h>
 #include <decaf/util/concurrent/atomic/AtomicBoolean.h>
 #include <decaf/util/concurrent/ConcurrentStlMap.h>
 
@@ -35,7 +35,7 @@ namespace activemq {
 namespace state {
 
     using decaf::lang::Pointer;
-    using decaf::util::StlList;
+    using decaf::util::LinkedList;
     using decaf::util::concurrent::atomic::AtomicBoolean;
     using decaf::util::concurrent::ConcurrentStlMap;
     using namespace activemq::commands;
@@ -45,7 +45,7 @@ namespace state {
     class AMQCPP_API TransactionState {
     private:
 
-        StlList< Pointer<Command> > commands;
+        LinkedList< Pointer<Command> > commands;
         Pointer<TransactionId> id;
         AtomicBoolean disposed;
         bool prepared;
@@ -69,7 +69,7 @@ namespace state {
             this->disposed.set( true );
         }
 
-        const StlList< Pointer<Command> >& getCommands() const {
+        const LinkedList< Pointer<Command> >& getCommands() const {
             return commands;
         }
 

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/threads/CompositeTaskRunner.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/threads/CompositeTaskRunner.h?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/threads/CompositeTaskRunner.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/threads/CompositeTaskRunner.h Thu Dec 16 23:18:02 2010
@@ -22,7 +22,7 @@
 #include <activemq/threads/TaskRunner.h>
 #include <activemq/threads/CompositeTask.h>
 #include <decaf/util/StlSet.h>
-#include <decaf/util/StlList.h>
+#include <decaf/util/LinkedList.h>
 #include <decaf/lang/Thread.h>
 #include <decaf/lang/Runnable.h>
 #include <decaf/util/concurrent/Mutex.h>
@@ -44,7 +44,7 @@ namespace threads {
                                            public decaf::lang::Runnable {
     private:
 
-        decaf::util::StlList<CompositeTask*> tasks;
+        decaf::util::LinkedList<CompositeTask*> tasks;
         decaf::util::concurrent::Mutex mutex;
 
         Pointer<decaf::lang::Thread> thread;

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/AbstractTransportFactory.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/AbstractTransportFactory.h?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/AbstractTransportFactory.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/AbstractTransportFactory.h Thu Dec 16 23:18:02 2010
@@ -22,7 +22,7 @@
 #include <activemq/transport/Transport.h>
 #include <activemq/transport/TransportFactory.h>
 #include <activemq/wireformat/WireFormat.h>
-#include <decaf/lang/exceptions/NoSuchElementException.h>
+#include <decaf/util/NoSuchElementException.h>
 #include <decaf/lang/Pointer.h>
 #include <decaf/util/Properties.h>
 

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/TransportRegistry.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/TransportRegistry.cpp?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/TransportRegistry.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/TransportRegistry.cpp Thu Dec 16 23:18:02 2010
@@ -21,6 +21,7 @@ using namespace std;
 using namespace activemq;
 using namespace activemq::transport;
 using namespace decaf;
+using namespace decaf::util;
 using namespace decaf::lang;
 using namespace decaf::lang::exceptions;
 

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/TransportRegistry.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/TransportRegistry.h?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/TransportRegistry.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/TransportRegistry.h Thu Dec 16 23:18:02 2010
@@ -25,7 +25,7 @@
 #include <activemq/transport/TransportFactory.h>
 
 #include <decaf/util/StlMap.h>
-#include <decaf/lang/exceptions/NoSuchElementException.h>
+#include <decaf/util/NoSuchElementException.h>
 #include <decaf/lang/exceptions/NullPointerException.h>
 #include <decaf/lang/exceptions/IllegalArgumentException.h>
 

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/BackupTransportPool.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/BackupTransportPool.cpp?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/BackupTransportPool.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/BackupTransportPool.cpp Thu Dec 16 23:18:02 2010
@@ -133,7 +133,7 @@ Pointer<BackupTransport> BackupTransport
 
     synchronized( &backups ) {
         if( !backups.isEmpty() ) {
-            result = backups.remove( 0 );
+            result = backups.removeAt( 0 );
         }
     }
 
@@ -157,7 +157,7 @@ bool BackupTransportPool::isPending() co
 ////////////////////////////////////////////////////////////////////////////////
 bool BackupTransportPool::iterate() {
 
-    StlList<URI> failures;
+    LinkedList<URI> failures;
 
     synchronized( &backups ) {
 

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/BackupTransportPool.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/BackupTransportPool.h?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/BackupTransportPool.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/BackupTransportPool.h Thu Dec 16 23:18:02 2010
@@ -27,14 +27,14 @@
 
 #include <decaf/lang/Pointer.h>
 #include <decaf/io/IOException.h>
-#include <decaf/util/StlList.h>
+#include <decaf/util/LinkedList.h>
 
 namespace activemq {
 namespace transport {
 namespace failover {
 
     using decaf::lang::Pointer;
-    using decaf::util::StlList;
+    using decaf::util::LinkedList;
     using activemq::threads::CompositeTaskRunner;
 
     class AMQCPP_API BackupTransportPool : public activemq::threads::CompositeTask {
@@ -42,7 +42,7 @@ namespace failover {
 
         friend class BackupTransport;
 
-        mutable StlList< Pointer<BackupTransport> > backups;
+        mutable LinkedList< Pointer<BackupTransport> > backups;
         Pointer<CompositeTaskRunner> taskRunner;
         Pointer<CloseTransportsTask> closeTask;
         Pointer<URIPool> uriPool;

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/FailoverTransport.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/FailoverTransport.cpp?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/FailoverTransport.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/FailoverTransport.cpp Thu Dec 16 23:18:02 2010
@@ -544,7 +544,7 @@ void FailoverTransport::processNewTransp
 
         if( newTransports.length() > 0 && isUpdateURIsSupported() ) {
 
-            StlList<URI> list;
+            LinkedList<URI> list;
             StringTokenizer tokenizer( newTransports, "," );
 
             while( tokenizer.hasMoreTokens() ) {
@@ -573,8 +573,8 @@ void FailoverTransport::updateURIs( bool
 
     if( isUpdateURIsSupported() ) {
 
-        StlList<URI> copy( this->updated );
-        StlList<URI> add;
+        LinkedList<URI> copy( this->updated );
+        LinkedList<URI> add;
 
         if( !updatedURIs.isEmpty() ) {
 
@@ -639,7 +639,7 @@ bool FailoverTransport::iterate() {
             return false;
         } else {
 
-            StlList<URI> failures;
+            LinkedList<URI> failures;
             Pointer<Transport> transport;
             URI uri;
 

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/FailoverTransport.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/FailoverTransport.h?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/FailoverTransport.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/FailoverTransport.h Thu Dec 16 23:18:02 2010
@@ -32,7 +32,7 @@
 #include <activemq/transport/failover/URIPool.h>
 #include <activemq/wireformat/WireFormat.h>
 
-#include <decaf/util/StlList.h>
+#include <decaf/util/LinkedList.h>
 #include <decaf/util/StlMap.h>
 #include <decaf/util/Properties.h>
 #include <decaf/util/concurrent/Mutex.h>
@@ -87,7 +87,7 @@ namespace failover {
         decaf::util::StlMap<int, Pointer<Command> > requestMap;
 
         Pointer<URIPool> uris;
-        decaf::util::StlList<URI> updated;
+        decaf::util::LinkedList<URI> updated;
         Pointer<URI> connectedTransportURI;
         Pointer<Transport> connectedTransport;
         Pointer<Exception> connectionFailure;

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/URIPool.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/URIPool.cpp?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/URIPool.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/URIPool.cpp Thu Dec 16 23:18:02 2010
@@ -58,7 +58,7 @@ URI URIPool::getURI() {
                 index = rand.nextInt( (int)uriPool.size() );
             }
 
-            return uriPool.remove( index );
+            return uriPool.removeAt( index );
         }
     }
 
@@ -77,7 +77,7 @@ void URIPool::addURI( const URI& uri ) {
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-void URIPool::addURIs( const StlList<URI>& uris ) {
+void URIPool::addURIs( const LinkedList<URI>& uris ) {
 
     synchronized( &uriPool ) {
 

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/URIPool.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/URIPool.h?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/URIPool.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/transport/failover/URIPool.h Thu Dec 16 23:18:02 2010
@@ -21,20 +21,20 @@
 #include <activemq/util/Config.h>
 
 #include <decaf/net/URI.h>
-#include <decaf/util/StlList.h>
-#include <decaf/lang/exceptions/NoSuchElementException.h>
+#include <decaf/util/LinkedList.h>
+#include <decaf/util/NoSuchElementException.h>
 
 namespace activemq {
 namespace transport {
 namespace failover {
 
-    using decaf::util::StlList;
+    using decaf::util::LinkedList;
     using decaf::net::URI;
 
     class AMQCPP_API URIPool {
     private:
 
-        StlList<URI> uriPool;
+        LinkedList<URI> uriPool;
         bool randomize;
 
     public:
@@ -80,7 +80,7 @@ namespace failover {
          *
          * @param uris - List of URIs to add into the Pool.
          */
-        void addURIs( const StlList<URI>& uris );
+        void addURIs( const LinkedList<URI>& uris );
 
         /**
          * Remove a given URI from the Free List.

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/CompositeData.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/CompositeData.h?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/CompositeData.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/CompositeData.h Thu Dec 16 23:18:02 2010
@@ -20,14 +20,14 @@
 
 #include <activemq/util/Config.h>
 #include <decaf/util/Properties.h>
-#include <decaf/util/StlList.h>
+#include <decaf/util/LinkedList.h>
 #include <decaf/net/URI.h>
 #include <decaf/net/URISyntaxException.h>
 
 namespace activemq {
 namespace util {
 
-    using decaf::util::StlList;
+    using decaf::util::LinkedList;
     using decaf::net::URI;
     using decaf::util::Properties;
 
@@ -42,7 +42,7 @@ namespace util {
         std::string host;
         std::string scheme;
         std::string path;
-        StlList<URI> components;
+        LinkedList<URI> components;
         Properties parameters;
         std::string fragment;
 
@@ -51,14 +51,14 @@ namespace util {
         CompositeData();
         virtual ~CompositeData();
 
-        StlList<URI>& getComponents() {
+        LinkedList<URI>& getComponents() {
             return components;
         }
-        const StlList<URI>& getComponents() const {
+        const LinkedList<URI>& getComponents() const {
             return components;
         }
 
-        void setComponents( const StlList<URI>& components ) {
+        void setComponents( const LinkedList<URI>& components ) {
             this->components = components;
         }
 

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/PrimitiveList.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/PrimitiveList.cpp?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/PrimitiveList.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/PrimitiveList.cpp Thu Dec 16 23:18:02 2010
@@ -32,12 +32,12 @@ PrimitiveList::PrimitiveList() {
 
 ////////////////////////////////////////////////////////////////////////////////
 PrimitiveList::PrimitiveList( const decaf::util::List<PrimitiveValueNode>& src )
-  : StlList<PrimitiveValueNode>( src ){
+  : LinkedList<PrimitiveValueNode>( src ){
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 PrimitiveList::PrimitiveList( const PrimitiveList& src )
-  : StlList<PrimitiveValueNode>( src ){
+  : LinkedList<PrimitiveValueNode>( src ){
 }
 
 ////////////////////////////////////////////////////////////////////////////////

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/PrimitiveList.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/PrimitiveList.h?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/PrimitiveList.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/PrimitiveList.h Thu Dec 16 23:18:02 2010
@@ -20,7 +20,7 @@
 
 #include <string>
 #include <vector>
-#include <decaf/util/StlList.h>
+#include <decaf/util/LinkedList.h>
 #include <decaf/lang/exceptions/UnsupportedOperationException.h>
 #include <decaf/lang/exceptions/IndexOutOfBoundsException.h>
 #include <stdio.h>
@@ -33,7 +33,7 @@ namespace util{
     /**
      * List of primitives.
      */
-    class AMQCPP_API PrimitiveList : public decaf::util::StlList<PrimitiveValueNode> {
+    class AMQCPP_API PrimitiveList : public decaf::util::LinkedList<PrimitiveValueNode> {
     private:
 
         PrimitiveValueConverter converter;

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/PrimitiveMap.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/PrimitiveMap.h?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/PrimitiveMap.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/PrimitiveMap.h Thu Dec 16 23:18:02 2010
@@ -23,7 +23,7 @@
 #include <activemq/util/Config.h>
 #include <decaf/util/Config.h>
 #include <decaf/util/StlMap.h>
-#include <decaf/lang/exceptions/NoSuchElementException.h>
+#include <decaf/util/NoSuchElementException.h>
 #include <activemq/util/PrimitiveValueNode.h>
 #include <activemq/util/PrimitiveValueConverter.h>
 

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/PrimitiveValueNode.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/PrimitiveValueNode.cpp?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/PrimitiveValueNode.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/PrimitiveValueNode.cpp Thu Dec 16 23:18:02 2010
@@ -21,7 +21,7 @@
 #include <activemq/util/PrimitiveMap.h>
 #include <decaf/lang/exceptions/NullPointerException.h>
 #include <decaf/util/StlMap.h>
-#include <decaf/util/StlList.h>
+#include <decaf/util/LinkedList.h>
 
 #ifdef HAVE_STRING_H
 #include <string.h>
@@ -246,7 +246,7 @@ void PrimitiveValueNode::setBool( bool l
 bool PrimitiveValueNode::getBool() const {
 
     if( valueType != BOOLEAN_TYPE ){
-        throw decaf::lang::exceptions::NoSuchElementException(
+        throw decaf::util::NoSuchElementException(
             __FILE__, __LINE__, "PrimitiveValue is not BOOLEAN_TYPE" );
     }
 
@@ -264,7 +264,7 @@ void PrimitiveValueNode::setByte( unsign
 unsigned char PrimitiveValueNode::getByte() const {
 
     if( valueType != BYTE_TYPE ){
-        throw decaf::lang::exceptions::NoSuchElementException(
+        throw decaf::util::NoSuchElementException(
             __FILE__, __LINE__, "PrimitiveValue is not BYTE_TYPE" );
     }
 
@@ -282,7 +282,7 @@ void PrimitiveValueNode::setChar( char l
 char PrimitiveValueNode::getChar() const {
 
     if( valueType != CHAR_TYPE ){
-        throw decaf::lang::exceptions::NoSuchElementException(
+        throw decaf::util::NoSuchElementException(
             __FILE__, __LINE__, "PrimitiveValue is not CHAR_TYPE" );
     }
 
@@ -300,7 +300,7 @@ void PrimitiveValueNode::setShort( short
 short PrimitiveValueNode::getShort() const {
 
     if( valueType != SHORT_TYPE ){
-        throw decaf::lang::exceptions::NoSuchElementException(
+        throw decaf::util::NoSuchElementException(
             __FILE__, __LINE__, "PrimitiveValue is not SHORT_TYPE" );
     }
 
@@ -318,7 +318,7 @@ void PrimitiveValueNode::setInt( int lva
 int PrimitiveValueNode::getInt() const {
 
     if( valueType != INTEGER_TYPE ){
-        throw decaf::lang::exceptions::NoSuchElementException(
+        throw decaf::util::NoSuchElementException(
             __FILE__, __LINE__, "PrimitiveValue is not INTEGER_TYPE" );
     }
 
@@ -336,7 +336,7 @@ void PrimitiveValueNode::setLong( long l
 long long PrimitiveValueNode::getLong() const {
 
     if( valueType != LONG_TYPE ){
-        throw decaf::lang::exceptions::NoSuchElementException(
+        throw decaf::util::NoSuchElementException(
             __FILE__, __LINE__, "PrimitiveValue is not LONG_TYPE" );
     }
 
@@ -354,7 +354,7 @@ void PrimitiveValueNode::setDouble( doub
 double PrimitiveValueNode::getDouble() const {
 
     if( valueType != DOUBLE_TYPE ){
-        throw decaf::lang::exceptions::NoSuchElementException(
+        throw decaf::util::NoSuchElementException(
             __FILE__, __LINE__, "PrimitiveValue is not DOUBLE_TYPE" );
     }
 
@@ -372,7 +372,7 @@ void PrimitiveValueNode::setFloat( float
 float PrimitiveValueNode::getFloat() const {
 
     if( valueType != FLOAT_TYPE ){
-        throw decaf::lang::exceptions::NoSuchElementException(
+        throw decaf::util::NoSuchElementException(
             __FILE__, __LINE__, "PrimitiveValue is not FLOAT_TYPE" );
     }
 
@@ -390,7 +390,7 @@ void PrimitiveValueNode::setString( cons
 std::string PrimitiveValueNode::getString() const {
 
     if( valueType != STRING_TYPE ){
-        throw decaf::lang::exceptions::NoSuchElementException(
+        throw decaf::util::NoSuchElementException(
             __FILE__, __LINE__, "PrimitiveValue is not STRING_TYPE" );
     }
 
@@ -412,7 +412,7 @@ void PrimitiveValueNode::setByteArray( c
 std::vector<unsigned char> PrimitiveValueNode::getByteArray() const {
 
     if( valueType != BYTE_ARRAY_TYPE ){
-        throw decaf::lang::exceptions::NoSuchElementException(
+        throw decaf::util::NoSuchElementException(
             __FILE__, __LINE__, "PrimitiveValue is not BYTE_ARRAY_TYPE" );
     }
 
@@ -427,7 +427,7 @@ std::vector<unsigned char> PrimitiveValu
 void PrimitiveValueNode::setList( const decaf::util::List<PrimitiveValueNode>& lvalue ) {
     clear();
     valueType = LIST_TYPE;
-    value.listValue = new decaf::util::StlList<PrimitiveValueNode>();
+    value.listValue = new decaf::util::LinkedList<PrimitiveValueNode>();
     value.listValue->copy( lvalue );
 }
 
@@ -435,13 +435,13 @@ void PrimitiveValueNode::setList( const 
 const decaf::util::List<PrimitiveValueNode>& PrimitiveValueNode::getList() const {
 
     if( valueType != LIST_TYPE ){
-        throw decaf::lang::exceptions::NoSuchElementException(
+        throw decaf::util::NoSuchElementException(
             __FILE__, __LINE__,
             "PrimitiveValue is not LIST_TYPE" );
     }
 
     if( value.listValue == NULL ){
-        throw decaf::lang::exceptions::NullPointerException(
+        throw decaf::util::NoSuchElementException(
             __FILE__, __LINE__,
             "PrimitiveValue is not set but an element was placed in the Map" );
     }
@@ -462,7 +462,7 @@ void PrimitiveValueNode::setMap(
 const decaf::util::Map<std::string, PrimitiveValueNode>& PrimitiveValueNode::getMap() const {
 
     if( valueType != MAP_TYPE ){
-        throw decaf::lang::exceptions::NoSuchElementException(
+        throw decaf::util::NoSuchElementException(
             __FILE__, __LINE__,
             "PrimitiveValue is not MAP_TYPE" );
     }

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/PrimitiveValueNode.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/PrimitiveValueNode.h?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/PrimitiveValueNode.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/PrimitiveValueNode.h Thu Dec 16 23:18:02 2010
@@ -19,7 +19,7 @@
 #define _ACTIVEMQ_UTIL_PRIMITIVEVALUENODE_H_
 
 #include <activemq/util/Config.h>
-#include <decaf/lang/exceptions/NoSuchElementException.h>
+#include <decaf/util/NoSuchElementException.h>
 #include <decaf/util/Map.h>
 #include <decaf/util/List.h>
 

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/URISupport.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/URISupport.cpp?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/URISupport.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/URISupport.cpp Thu Dec 16 23:18:02 2010
@@ -299,7 +299,7 @@ void URISupport::parseComposite( const U
         params = "";
     }
 
-    StlList<std::string> components = splitComponents( componentString );
+    LinkedList<std::string> components = splitComponents( componentString );
     std::auto_ptr< Iterator<std::string> > iter( components.iterator() );
     while( iter->hasNext() ) {
         rc.getComponents().add( URI( iter->next() ) );
@@ -320,9 +320,9 @@ void URISupport::parseComposite( const U
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-StlList<std::string> URISupport::splitComponents( const std::string& str ) {
+LinkedList<std::string> URISupport::splitComponents( const std::string& str ) {
 
-    StlList<std::string> components;
+    LinkedList<std::string> components;
 
     std::size_t last = 0;
     int depth = 0;

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/URISupport.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/URISupport.h?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/URISupport.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/URISupport.h Thu Dec 16 23:18:02 2010
@@ -21,7 +21,7 @@
 #include <activemq/util/Config.h>
 #include <activemq/util/CompositeData.h>
 #include <decaf/util/Properties.h>
-#include <decaf/util/StlList.h>
+#include <decaf/util/LinkedList.h>
 #include <decaf/lang/exceptions/IllegalArgumentException.h>
 
 namespace activemq{
@@ -112,7 +112,7 @@ namespace util{
          *
          * @param str - the set of Composite URIs
          */
-        static decaf::util::StlList<std::string> splitComponents( const std::string& str );
+        static decaf::util::LinkedList<std::string> splitComponents( const std::string& str );
 
         /**
          * Given a string value and a prefix value, return a new string that has the prefix

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/WireFormatRegistry.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/WireFormatRegistry.cpp?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/WireFormatRegistry.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/WireFormatRegistry.cpp Thu Dec 16 23:18:02 2010
@@ -21,6 +21,7 @@ using namespace std;
 using namespace activemq;
 using namespace activemq::wireformat;
 using namespace decaf;
+using namespace decaf::util;
 using namespace decaf::lang;
 using namespace decaf::lang::exceptions;
 

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/WireFormatRegistry.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/WireFormatRegistry.h?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/WireFormatRegistry.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/WireFormatRegistry.h Thu Dec 16 23:18:02 2010
@@ -25,7 +25,7 @@
 #include <activemq/wireformat/WireFormatFactory.h>
 
 #include <decaf/util/StlMap.h>
-#include <decaf/lang/exceptions/NoSuchElementException.h>
+#include <decaf/util/NoSuchElementException.h>
 #include <decaf/lang/exceptions/NullPointerException.h>
 #include <decaf/lang/exceptions/IllegalArgumentException.h>
 

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/openwire/marshal/PrimitiveTypesMarshaller.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/openwire/marshal/PrimitiveTypesMarshaller.cpp?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/openwire/marshal/PrimitiveTypesMarshaller.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/openwire/marshal/PrimitiveTypesMarshaller.cpp Thu Dec 16 23:18:02 2010
@@ -275,9 +275,9 @@ void PrimitiveTypesMarshaller::marshalPr
             std::vector<unsigned char> data = value.getByteArray();
 
             dataOut.writeInt( (int)data.size() );
-			if( !data.empty() ) {
-				dataOut.write( &data[0], (int)data.size() );
-			}
+            if( !data.empty() ) {
+                dataOut.write( &data[0], (int)data.size() );
+            }
 
         } else if( value.getType() == PrimitiveValueNode::STRING_TYPE ) {
 
@@ -343,7 +343,7 @@ void PrimitiveTypesMarshaller::unmarshal
 ///////////////////////////////////////////////////////////////////////////////
 void PrimitiveTypesMarshaller::unmarshalPrimitiveList(
     decaf::io::DataInputStream& dataIn,
-    decaf::util::StlList<PrimitiveValueNode>& list ) {
+    decaf::util::LinkedList<PrimitiveValueNode>& list ) {
 
     try{
 

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/openwire/marshal/PrimitiveTypesMarshaller.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/openwire/marshal/PrimitiveTypesMarshaller.h?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/openwire/marshal/PrimitiveTypesMarshaller.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/wireformat/openwire/marshal/PrimitiveTypesMarshaller.h Thu Dec 16 23:18:02 2010
@@ -200,7 +200,7 @@ namespace marshal{
          */
         static void unmarshalPrimitiveList(
             decaf::io::DataInputStream& dataIn,
-            decaf::util::StlList<util::PrimitiveValueNode>& list );
+            decaf::util::LinkedList<util::PrimitiveValueNode>& list );
 
         /**
          * Unmarshals a Primitive Type from the stream, and returns it as a

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/internal/net/Network.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/internal/net/Network.cpp?rev=1050221&r1=1050220&r2=1050221&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/internal/net/Network.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/internal/net/Network.cpp Thu Dec 16 23:18:02 2010
@@ -20,7 +20,7 @@
 #include <decaf/lang/Runnable.h>
 #include <decaf/lang/Exception.h>
 #include <decaf/lang/exceptions/IllegalStateException.h>
-#include <decaf/util/StlList.h>
+#include <decaf/util/LinkedList.h>
 #include <decaf/util/concurrent/Mutex.h>
 #include <decaf/internal/util/ResourceLifecycleManager.h>
 
@@ -48,7 +48,7 @@ namespace net{
 
         ResourceLifecycleManager resources;
         Mutex lock;
-        StlList<Runnable*> shutdownTasks;
+        LinkedList<Runnable*> shutdownTasks;
 
         ~NetworkData() {
             try{

Added: activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/AbstractCollection.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/AbstractCollection.cpp?rev=1050221&view=auto
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/AbstractCollection.cpp (added)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/AbstractCollection.cpp Thu Dec 16 23:18:02 2010
@@ -0,0 +1,18 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "AbstractCollection.h"

Propchange: activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/AbstractCollection.cpp
------------------------------------------------------------------------------
    svn:eol-style = native