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 2009/02/13 00:19:56 UTC

svn commit: r743923 [1/3] - in /activemq/activemq-cpp/trunk/src: main/ main/activemq/cmsutil/ main/activemq/core/ main/activemq/state/ main/activemq/transport/ main/activemq/transport/correlator/ main/activemq/transport/failover/ main/activemq/transpor...

Author: tabish
Date: Thu Feb 12 23:19:54 2009
New Revision: 743923

URL: http://svn.apache.org/viewvc?rev=743923&view=rev
Log:
1. Refactored decaf util collection classes.
2. Code uses new isXX method of Commands to remove several casts and now unecessary checking for nulls.

Added:
    activemq/activemq-cpp/trunk/src/main/decaf/util/StlList.h   (with props)
    activemq/activemq-cpp/trunk/src/main/decaf/util/StlMap.h
      - copied, changed from r743068, activemq/activemq-cpp/trunk/src/main/decaf/util/STLMap.h
    activemq/activemq-cpp/trunk/src/main/decaf/util/StlQueue.h   (with props)
    activemq/activemq-cpp/trunk/src/main/decaf/util/StlSet.h   (with props)
    activemq/activemq-cpp/trunk/src/main/decaf/util/concurrent/ConcurrentStlMap.h
      - copied, changed from r743103, activemq/activemq-cpp/trunk/src/main/decaf/util/concurrent/ConcurrentSTLMap.h
    activemq/activemq-cpp/trunk/src/test/decaf/util/StlMapTest.cpp
      - copied, changed from r743068, activemq/activemq-cpp/trunk/src/test/decaf/util/STLMapTest.cpp
    activemq/activemq-cpp/trunk/src/test/decaf/util/StlMapTest.h
      - copied, changed from r743068, activemq/activemq-cpp/trunk/src/test/decaf/util/STLMapTest.h
    activemq/activemq-cpp/trunk/src/test/decaf/util/concurrent/ConcurrentStlMapTest.cpp
      - copied, changed from r743103, activemq/activemq-cpp/trunk/src/test/decaf/util/concurrent/ConcurrentSTLMapTest.cpp
    activemq/activemq-cpp/trunk/src/test/decaf/util/concurrent/ConcurrentStlMapTest.h
      - copied, changed from r743103, activemq/activemq-cpp/trunk/src/test/decaf/util/concurrent/ConcurrentSTLMapTest.h
Removed:
    activemq/activemq-cpp/trunk/src/main/decaf/util/STLMap.h
    activemq/activemq-cpp/trunk/src/main/decaf/util/concurrent/ConcurrentSTLMap.h
    activemq/activemq-cpp/trunk/src/test/decaf/util/STLMapTest.cpp
    activemq/activemq-cpp/trunk/src/test/decaf/util/STLMapTest.h
    activemq/activemq-cpp/trunk/src/test/decaf/util/concurrent/ConcurrentSTLMapTest.cpp
    activemq/activemq-cpp/trunk/src/test/decaf/util/concurrent/ConcurrentSTLMapTest.h
Modified:
    activemq/activemq-cpp/trunk/src/main/Makefile.am
    activemq/activemq-cpp/trunk/src/main/activemq/cmsutil/DynamicDestinationResolver.h
    activemq/activemq-cpp/trunk/src/main/activemq/cmsutil/PooledSession.h
    activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQConnection.cpp
    activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQConnection.h
    activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQConsumer.h
    activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQSession.cpp
    activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQSession.h
    activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQTransactionContext.h
    activemq/activemq-cpp/trunk/src/main/activemq/state/ConnectionState.h
    activemq/activemq-cpp/trunk/src/main/activemq/state/SessionState.h
    activemq/activemq-cpp/trunk/src/main/activemq/state/TransactionState.cpp
    activemq/activemq-cpp/trunk/src/main/activemq/state/TransactionState.h
    activemq/activemq-cpp/trunk/src/main/activemq/transport/TransportRegistry.h
    activemq/activemq-cpp/trunk/src/main/activemq/transport/correlator/ResponseCorrelator.cpp
    activemq/activemq-cpp/trunk/src/main/activemq/transport/failover/FailoverTransport.h
    activemq/activemq-cpp/trunk/src/main/activemq/transport/mock/MockTransport.h
    activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveList.cpp
    activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveList.h
    activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveMap.cpp
    activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveMap.h
    activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveValueNode.cpp
    activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveValueNode.h
    activemq/activemq-cpp/trunk/src/main/activemq/wireformat/WireFormatRegistry.h
    activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/OpenWireFormatNegotiator.cpp
    activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/OpenWireResponseBuilder.cpp
    activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/OpenWireResponseBuilder.h
    activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/marshal/PrimitiveMapMarshaller.cpp
    activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/marshal/PrimitiveMapMarshaller.h
    activemq/activemq-cpp/trunk/src/main/decaf/lang/Iterable.h
    activemq/activemq-cpp/trunk/src/main/decaf/lang/System.cpp
    activemq/activemq-cpp/trunk/src/main/decaf/util/Collection.h
    activemq/activemq-cpp/trunk/src/main/decaf/util/List.h
    activemq/activemq-cpp/trunk/src/main/decaf/util/ListIterator.h
    activemq/activemq-cpp/trunk/src/main/decaf/util/Queue.h
    activemq/activemq-cpp/trunk/src/main/decaf/util/Set.h
    activemq/activemq-cpp/trunk/src/main/decaf/util/concurrent/ThreadPool.h
    activemq/activemq-cpp/trunk/src/test-benchmarks/decaf/util/MapBenchmark.cpp
    activemq/activemq-cpp/trunk/src/test-benchmarks/decaf/util/MapBenchmark.h
    activemq/activemq-cpp/trunk/src/test-benchmarks/decaf/util/QueueBenchmark.cpp
    activemq/activemq-cpp/trunk/src/test-benchmarks/decaf/util/QueueBenchmark.h
    activemq/activemq-cpp/trunk/src/test-benchmarks/decaf/util/SetBenchmark.cpp
    activemq/activemq-cpp/trunk/src/test-benchmarks/decaf/util/SetBenchmark.h
    activemq/activemq-cpp/trunk/src/test-integration/activemq/test/SlowListenerTest.cpp
    activemq/activemq-cpp/trunk/src/test/Makefile.am
    activemq/activemq-cpp/trunk/src/test/activemq/commands/BrokerIdTest.cpp
    activemq/activemq-cpp/trunk/src/test/decaf/lang/SystemTest.cpp
    activemq/activemq-cpp/trunk/src/test/decaf/util/ListTest.cpp
    activemq/activemq-cpp/trunk/src/test/decaf/util/ListTest.h
    activemq/activemq-cpp/trunk/src/test/decaf/util/MapTest.cpp
    activemq/activemq-cpp/trunk/src/test/decaf/util/QueueTest.cpp
    activemq/activemq-cpp/trunk/src/test/decaf/util/QueueTest.h
    activemq/activemq-cpp/trunk/src/test/decaf/util/SetTest.cpp
    activemq/activemq-cpp/trunk/src/test/decaf/util/SetTest.h
    activemq/activemq-cpp/trunk/src/test/testRegistry.cpp

Modified: activemq/activemq-cpp/trunk/src/main/Makefile.am
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/Makefile.am?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/Makefile.am (original)
+++ activemq/activemq-cpp/trunk/src/main/Makefile.am Thu Feb 12 23:19:54 2009
@@ -340,7 +340,7 @@
     decaf/util/concurrent/CancellationException.h \
     decaf/util/concurrent/Concurrent.h \
     decaf/util/concurrent/ConcurrentMap.h \
-    decaf/util/concurrent/ConcurrentSTLMap.h \
+    decaf/util/concurrent/ConcurrentStlMap.h \
     decaf/util/concurrent/CountDownLatch.h \
     decaf/util/concurrent/Executor.h \
     decaf/util/concurrent/ExecutionException.h \
@@ -370,6 +370,9 @@
     decaf/util/Comparator.h \
     decaf/util/List.h \
     decaf/util/Map.h \
+    decaf/util/StlMap.h \
+    decaf/util/StlList.h \
+    decaf/util/StlSet.h \
     decaf/util/Properties.h \
     decaf/util/Queue.h \
     decaf/util/Set.h \

Modified: activemq/activemq-cpp/trunk/src/main/activemq/cmsutil/DynamicDestinationResolver.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/cmsutil/DynamicDestinationResolver.h?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/cmsutil/DynamicDestinationResolver.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/cmsutil/DynamicDestinationResolver.h Thu Feb 12 23:19:54 2009
@@ -19,7 +19,7 @@
 
 #include <activemq/cmsutil/DestinationResolver.h>
 #include <cms/Session.h>
-#include <decaf/util/STLMap.h>
+#include <decaf/util/StlMap.h>
 #include <activemq/util/Config.h>
 
 namespace activemq {
@@ -39,8 +39,8 @@
 
             ResourceLifecycleManager* resourceLifecycleManager;
             cms::Session* session;
-            decaf::util::STLMap<std::string, cms::Topic*> topicMap;
-            decaf::util::STLMap<std::string, cms::Queue*> queueMap;
+            decaf::util::StlMap<std::string, cms::Topic*> topicMap;
+            decaf::util::StlMap<std::string, cms::Queue*> queueMap;
 
         public:
 
@@ -64,7 +64,7 @@
         /**
          * Maps a given session to the resolver for that session.
          */
-        decaf::util::STLMap< cms::Session*, SessionResolver*> sessionResolverMap;
+        decaf::util::StlMap< cms::Session*, SessionResolver*> sessionResolverMap;
 
         /**
          * Manages lifecycle of any allocated topics/queues.

Modified: activemq/activemq-cpp/trunk/src/main/activemq/cmsutil/PooledSession.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/cmsutil/PooledSession.h?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/cmsutil/PooledSession.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/cmsutil/PooledSession.h Thu Feb 12 23:19:54 2009
@@ -19,7 +19,7 @@
 #define ACTIVEMQ_CMSUTIL_POOLEDSESSION_H_
 
 #include <cms/Session.h>
-#include <decaf/util/STLMap.h>
+#include <decaf/util/StlMap.h>
 #include <activemq/cmsutil/CachedProducer.h>
 #include <activemq/cmsutil/CachedConsumer.h>
 #include <activemq/util/Config.h>
@@ -41,9 +41,9 @@
 
         cms::Session* session;
 
-        decaf::util::STLMap<std::string, CachedProducer*> producerCache;
+        decaf::util::StlMap<std::string, CachedProducer*> producerCache;
 
-        decaf::util::STLMap<std::string, CachedConsumer*> consumerCache;
+        decaf::util::StlMap<std::string, CachedConsumer*> consumerCache;
 
     public:
 

Modified: activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQConnection.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQConnection.cpp?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQConnection.cpp (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQConnection.cpp Thu Feb 12 23:19:54 2009
@@ -443,7 +443,7 @@
 
         std::auto_ptr<commands::Command> commandPtr( command );
 
-        if( typeid( *command ) == typeid( commands::MessageDispatch ) ) {
+        if( command->isMessageDispatch() ) {
 
             commands::MessageDispatch* dispatch =
                 dynamic_cast<commands::MessageDispatch*>( command );
@@ -472,7 +472,7 @@
                 }
             }
 
-        } else if( typeid( *command ) == typeid( commands::ProducerAck ) ) {
+        } else if( command->isProducerAck() ) {
 
             commands::ProducerAck* producerAck =
                 dynamic_cast<commands::ProducerAck*>( command );
@@ -486,13 +486,13 @@
                 }
             }
 
-        } else if( typeid( *command ) == typeid( commands::WireFormatInfo ) ) {
+        } else if( command->isWireFormatInfo() ) {
             this->brokerWireFormatInfo.reset(
                 dynamic_cast<commands::WireFormatInfo*>( commandPtr.release() ) );
-        } else if( typeid( *command ) == typeid( commands::BrokerInfo ) ) {
+        } else if( command->isBrokerInfo() ) {
             this->brokerInfo.reset(
                 dynamic_cast<commands::BrokerInfo*>( commandPtr.release() ) );
-        } else if( typeid( *command ) == typeid( commands::KeepAliveInfo ) ) {
+        } else if( command->isKeepAliveInfo() ) {
 
             if( command->isResponseRequired() ) {
                 command->setResponseRequired( false );
@@ -500,7 +500,7 @@
                 oneway( command );
             }
 
-        } else if( typeid( *command ) == typeid( commands::ShutdownInfo ) ) {
+        } else if( command->isShutdownInfo() ) {
 
             try {
                 if( !this->isClosed() ) {

Modified: activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQConnection.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQConnection.h?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQConnection.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQConnection.h Thu Feb 12 23:19:54 2009
@@ -32,8 +32,8 @@
 #include <activemq/commands/WireFormatInfo.h>
 #include <activemq/exceptions/ActiveMQException.h>
 #include <decaf/util/Properties.h>
-#include <decaf/util/STLMap.h>
-#include <decaf/util/Set.h>
+#include <decaf/util/StlMap.h>
+#include <decaf/util/StlSet.h>
 #include <decaf/lang/exceptions/UnsupportedOperationException.h>
 #include <decaf/lang/exceptions/NullPointerException.h>
 #include <decaf/lang/exceptions/IllegalStateException.h>
@@ -56,11 +56,11 @@
     {
     private:
 
-        typedef decaf::util::STLMap< decaf::lang::Pointer<commands::ConsumerId>,
+        typedef decaf::util::StlMap< decaf::lang::Pointer<commands::ConsumerId>,
                                      Dispatcher*,
                                      commands::ConsumerId::COMPARATOR > DispatcherMap;
 
-        typedef decaf::util::STLMap< decaf::lang::Pointer<commands::ProducerId>,
+        typedef decaf::util::StlMap< decaf::lang::Pointer<commands::ProducerId>,
                                      ActiveMQProducer*,
                                      commands::ProducerId::COMPARATOR > ProducerMap;
 
@@ -100,7 +100,7 @@
         /**
          * Maintain the set of all active sessions.
          */
-        decaf::util::Set<ActiveMQSession*> activeSessions;
+        decaf::util::StlSet<ActiveMQSession*> activeSessions;
 
         /**
          * Connection Information for this connection to the Broker

Modified: activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQConsumer.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQConsumer.h?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQConsumer.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQConsumer.h Thu Feb 12 23:19:54 2009
@@ -28,7 +28,7 @@
 #include <activemq/core/ActiveMQAckHandler.h>
 #include <activemq/core/Dispatcher.h>
 
-#include <decaf/util/Queue.h>
+#include <decaf/util/StlQueue.h>
 #include <decaf/util/concurrent/Mutex.h>
 #include <memory>
 
@@ -68,12 +68,12 @@
         /**
          * Queue of unconsumed messages.
          */
-        decaf::util::Queue<DispatchData> unconsumedMessages;
+        decaf::util::StlQueue<DispatchData> unconsumedMessages;
 
         /**
          * Queue of consumed messages.
          */
-        decaf::util::Queue< decaf::lang::Pointer<commands::Message> > dispatchedMessages;
+        decaf::util::StlQueue< decaf::lang::Pointer<commands::Message> > dispatchedMessages;
 
         /**
          * Boolean that indicates if the consumer has been closed

Modified: activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQSession.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQSession.cpp?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQSession.cpp (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQSession.cpp Thu Feb 12 23:19:54 2009
@@ -665,9 +665,9 @@
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-void ActiveMQSession::redispatch( decaf::util::Queue<DispatchData>& unconsumedMessages ) {
+void ActiveMQSession::redispatch( decaf::util::StlQueue<DispatchData>& unconsumedMessages ) {
 
-    decaf::util::Queue<DispatchData> reversedList;
+    decaf::util::StlQueue<DispatchData> reversedList;
 
     // Copy the list in reverse order then clear the original list.
     synchronized( &unconsumedMessages ) {

Modified: activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQSession.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQSession.h?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQSession.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQSession.h Thu Feb 12 23:19:54 2009
@@ -31,9 +31,8 @@
 #include <activemq/commands/TransactionId.h>
 #include <activemq/core/Dispatcher.h>
 
-#include <decaf/util/STLMap.h>
-#include <decaf/util/Set.h>
-#include <decaf/util/Queue.h>
+#include <decaf/util/StlMap.h>
+#include <decaf/util/StlQueue.h>
 #include <decaf/util/Properties.h>
 
 #include <string>
@@ -53,11 +52,11 @@
     class AMQCPP_API ActiveMQSession : public cms::Session, public Dispatcher {
     private:
 
-        typedef decaf::util::STLMap< decaf::lang::Pointer<commands::ConsumerId>,
+        typedef decaf::util::StlMap< decaf::lang::Pointer<commands::ConsumerId>,
                                      ActiveMQConsumer*,
                                      commands::ConsumerId::COMPARATOR> ConsumersMap;
 
-        typedef decaf::util::STLMap< decaf::lang::Pointer<commands::ProducerId>,
+        typedef decaf::util::StlMap< decaf::lang::Pointer<commands::ProducerId>,
                                      ActiveMQProducer*,
                                      commands::ProducerId::COMPARATOR> ProducersMap;
 
@@ -122,7 +121,7 @@
          * Redispatches the given set of unconsumed messages to the consumers.
          * @param unconsumedMessages - unconsumed messages to be redelivered.
          */
-        void redispatch( decaf::util::Queue<DispatchData>& unconsumedMessages );
+        void redispatch( decaf::util::StlQueue<DispatchData>& unconsumedMessages );
 
         /**
          * Stops asynchronous message delivery.

Modified: activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQTransactionContext.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQTransactionContext.h?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQTransactionContext.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/core/ActiveMQTransactionContext.h Thu Feb 12 23:19:54 2009
@@ -30,7 +30,7 @@
 
 #include <decaf/lang/exceptions/InvalidStateException.h>
 #include <decaf/lang/exceptions/IllegalArgumentException.h>
-#include <decaf/util/Set.h>
+#include <decaf/util/StlSet.h>
 #include <decaf/util/Properties.h>
 #include <decaf/util/concurrent/Mutex.h>
 
@@ -66,7 +66,7 @@
         std::auto_ptr<commands::TransactionInfo> transactionInfo;
 
         // List of Registered Synchronizations
-        decaf::util::Set<Synchronization*> synchronizations;
+        decaf::util::StlSet<Synchronization*> synchronizations;
 
         // Lock object to protect the rollback Map
         decaf::util::concurrent::Mutex mutex;

Modified: activemq/activemq-cpp/trunk/src/main/activemq/state/ConnectionState.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/state/ConnectionState.h?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/state/ConnectionState.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/state/ConnectionState.h Thu Feb 12 23:19:54 2009
@@ -31,8 +31,8 @@
 #include <activemq/state/TransactionState.h>
 
 #include <decaf/util/concurrent/atomic/AtomicBoolean.h>
-#include <decaf/util/STLMap.h>
-#include <decaf/util/List.h>
+#include <decaf/util/StlMap.h>
+#include <decaf/util/StlList.h>
 
 #include <string>
 #include <memory>
@@ -44,9 +44,9 @@
     private:
 
         std::auto_ptr<commands::ConnectionInfo> info;
-        decaf::util::STLMap< commands::TransactionId, TransactionState* > transactions;
-        decaf::util::STLMap< commands::SessionId, SessionState* > sessions;
-        decaf::util::List< commands::DestinationInfo* > tempDestinations;
+        decaf::util::StlMap< commands::TransactionId, TransactionState* > transactions;
+        decaf::util::StlMap< commands::SessionId, SessionState* > sessions;
+        decaf::util::StlList< commands::DestinationInfo* > tempDestinations;
         decaf::util::concurrent::atomic::AtomicBoolean disposed;
 
     public:

Modified: activemq/activemq-cpp/trunk/src/main/activemq/state/SessionState.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/state/SessionState.h?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/state/SessionState.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/state/SessionState.h Thu Feb 12 23:19:54 2009
@@ -26,7 +26,7 @@
 #include <activemq/state/ProducerState.h>
 
 #include <decaf/util/concurrent/atomic/AtomicBoolean.h>
-#include <decaf/util/STLMap.h>
+#include <decaf/util/StlMap.h>
 
 #include <string>
 #include <memory>
@@ -42,11 +42,11 @@
 
         Pointer<SessionInfo> info;
 
-        decaf::util::STLMap< Pointer<ProducerId>,
+        decaf::util::StlMap< Pointer<ProducerId>,
                              Pointer<ProducerState>,
                              ProducerId::COMPARATOR > producers;
 
-        decaf::util::STLMap< Pointer<ConsumerId>,
+        decaf::util::StlMap< Pointer<ConsumerId>,
                              Pointer<ConsumerState>,
                              ConsumerId::COMPARATOR > consumers;
 

Modified: activemq/activemq-cpp/trunk/src/main/activemq/state/TransactionState.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/state/TransactionState.cpp?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/state/TransactionState.cpp (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/state/TransactionState.cpp Thu Feb 12 23:19:54 2009
@@ -28,7 +28,7 @@
 
 ////////////////////////////////////////////////////////////////////////////////
 TransactionState::TransactionState( const Pointer<TransactionId>& id ) :
-    disposed( false ), id( id ), prepared( false ), preparedResult( 0 ) {
+    id( id ), disposed( false ), prepared( false ), preparedResult( 0 ) {
 }
 
 ////////////////////////////////////////////////////////////////////////////////

Modified: activemq/activemq-cpp/trunk/src/main/activemq/state/TransactionState.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/state/TransactionState.h?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/state/TransactionState.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/state/TransactionState.h Thu Feb 12 23:19:54 2009
@@ -23,7 +23,7 @@
 #include <activemq/commands/TransactionId.h>
 
 #include <decaf/lang/Pointer.h>
-#include <decaf/util/List.h>
+#include <decaf/util/StlList.h>
 #include <decaf/util/concurrent/atomic/AtomicBoolean.h>
 
 #include <string>
@@ -35,7 +35,7 @@
     class AMQCPP_API TransactionState {
     private:
 
-        decaf::util::List< decaf::lang::Pointer<commands::Command> > commands;
+        decaf::util::StlList< decaf::lang::Pointer<commands::Command> > commands;
         decaf::lang::Pointer<commands::TransactionId> id;
         decaf::util::concurrent::atomic::AtomicBoolean disposed;
         bool prepared;

Modified: activemq/activemq-cpp/trunk/src/main/activemq/transport/TransportRegistry.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/transport/TransportRegistry.h?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/transport/TransportRegistry.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/transport/TransportRegistry.h Thu Feb 12 23:19:54 2009
@@ -24,7 +24,7 @@
 #include <vector>
 #include <activemq/transport/TransportFactory.h>
 
-#include <decaf/util/STLMap.h>
+#include <decaf/util/StlMap.h>
 #include <decaf/lang/exceptions/NoSuchElementException.h>
 #include <decaf/lang/exceptions/NullPointerException.h>
 #include <decaf/lang/exceptions/IllegalArgumentException.h>
@@ -42,7 +42,7 @@
     class AMQCPP_API TransportRegistry {
     private:
 
-        decaf::util::STLMap<std::string, TransportFactory*> registry;
+        decaf::util::StlMap<std::string, TransportFactory*> registry;
 
     private:
 

Modified: activemq/activemq-cpp/trunk/src/main/activemq/transport/correlator/ResponseCorrelator.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/transport/correlator/ResponseCorrelator.cpp?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/transport/correlator/ResponseCorrelator.cpp (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/transport/correlator/ResponseCorrelator.cpp Thu Feb 12 23:19:54 2009
@@ -185,15 +185,15 @@
 void ResponseCorrelator::onCommand( commands::Command* command ) {
 
     // Let's see if the incoming command is a response.
-    commands::Response* response = dynamic_cast<commands::Response*>( command );
-
-    if( response == NULL ){
+    if( !command->isResponse() ){
 
         // It's a non-response - just notify the listener.
         fire( command );
         return;
     }
 
+    commands::Response* response = dynamic_cast<commands::Response*>( command );
+
     // It is a response - let's correlate ...
     synchronized( &mapMutex ){
 

Modified: activemq/activemq-cpp/trunk/src/main/activemq/transport/failover/FailoverTransport.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/transport/failover/FailoverTransport.h?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/transport/failover/FailoverTransport.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/transport/failover/FailoverTransport.h Thu Feb 12 23:19:54 2009
@@ -23,7 +23,7 @@
 #include <activemq/commands/Command.h>
 #include <activemq/transport/CompositeTransport.h>
 
-#include <decaf/util/Set.h>
+#include <decaf/util/StlSet.h>
 #include <decaf/util/Properties.h>
 #include <decaf/net/URI.h>
 
@@ -40,7 +40,7 @@
         bool connected;
         bool started;
 
-        decaf::util::Set<decaf::net::URI> uris;
+        decaf::util::StlSet<decaf::net::URI> uris;
 
         long long timeout;
         long long initialReconnectDelay;

Modified: activemq/activemq-cpp/trunk/src/main/activemq/transport/mock/MockTransport.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/transport/mock/MockTransport.h?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/transport/mock/MockTransport.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/transport/mock/MockTransport.h Thu Feb 12 23:19:54 2009
@@ -27,7 +27,7 @@
 #include <activemq/wireformat/WireFormat.h>
 
 #include <decaf/lang/Thread.h>
-#include <decaf/util/Queue.h>
+#include <decaf/util/StlQueue.h>
 #include <decaf/util/concurrent/Concurrent.h>
 #include <decaf/util/concurrent/atomic/AtomicInteger.h>
 #include <decaf/util/concurrent/CountDownLatch.h>
@@ -82,7 +82,7 @@
              */
             virtual void buildIncomingCommands(
                 const commands::Command* cmd,
-                decaf::util::Queue<commands::Command*>& queue ) = 0;
+                decaf::util::StlQueue<commands::Command*>& queue ) = 0;
 
         };
 
@@ -103,7 +103,7 @@
             ResponseBuilder* responseBuilder;
             bool done;
             decaf::util::concurrent::CountDownLatch startedLatch;
-            decaf::util::Queue<commands::Command*> inboundQueue;
+            decaf::util::StlQueue<commands::Command*> inboundQueue;
 
         public:
 

Modified: activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveList.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveList.cpp?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveList.cpp (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveList.cpp Thu Feb 12 23:19:54 2009
@@ -32,12 +32,12 @@
 
 ////////////////////////////////////////////////////////////////////////////////
 PrimitiveList::PrimitiveList( const decaf::util::List<PrimitiveValueNode>& src )
-  : List<PrimitiveValueNode>( src ){
+  : StlList<PrimitiveValueNode>( src ){
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 PrimitiveList::PrimitiveList( const PrimitiveList& src )
-  : List<PrimitiveValueNode>( src ){
+  : StlList<PrimitiveValueNode>( src ){
 }
 
 ////////////////////////////////////////////////////////////////////////////////

Modified: activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveList.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveList.h?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveList.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveList.h Thu Feb 12 23:19:54 2009
@@ -20,7 +20,7 @@
 
 #include <string>
 #include <vector>
-#include <decaf/util/List.h>
+#include <decaf/util/StlList.h>
 #include <decaf/lang/exceptions/NoSuchElementException.h>
 #include <stdio.h>
 #include <activemq/util/PrimitiveValueNode.h>
@@ -31,7 +31,7 @@
     /**
      * List of primitives.
      */
-    class AMQCPP_API PrimitiveList : public decaf::util::List<PrimitiveValueNode> {
+    class AMQCPP_API PrimitiveList : public decaf::util::StlList<PrimitiveValueNode> {
     public:
 
         /**

Modified: activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveMap.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveMap.cpp?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveMap.cpp (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveMap.cpp Thu Feb 12 23:19:54 2009
@@ -33,12 +33,12 @@
 
 ////////////////////////////////////////////////////////////////////////////////
 PrimitiveMap::PrimitiveMap( const decaf::util::Map<std::string, PrimitiveValueNode>& src )
-  : decaf::util::STLMap<std::string, PrimitiveValueNode>( src ) {
+  : decaf::util::StlMap<std::string, PrimitiveValueNode>( src ) {
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 PrimitiveMap::PrimitiveMap( const PrimitiveMap& src )
-  : decaf::util::STLMap<std::string, PrimitiveValueNode>( src ) {
+  : decaf::util::StlMap<std::string, PrimitiveValueNode>( src ) {
 }
 
 ////////////////////////////////////////////////////////////////////////////////

Modified: activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveMap.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveMap.h?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveMap.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveMap.h Thu Feb 12 23:19:54 2009
@@ -22,7 +22,7 @@
 #include <vector>
 #include <activemq/util/Config.h>
 #include <decaf/util/Config.h>
-#include <decaf/util/STLMap.h>
+#include <decaf/util/StlMap.h>
 #include <decaf/lang/exceptions/NoSuchElementException.h>
 #include <activemq/util/PrimitiveValueNode.h>
 
@@ -32,7 +32,7 @@
     /**
      * Map of named primitives.
      */
-    class AMQCPP_API PrimitiveMap : public decaf::util::STLMap<std::string, PrimitiveValueNode> {
+    class AMQCPP_API PrimitiveMap : public decaf::util::StlMap<std::string, PrimitiveValueNode> {
     public:
 
         /**

Modified: activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveValueNode.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveValueNode.cpp?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveValueNode.cpp (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveValueNode.cpp Thu Feb 12 23:19:54 2009
@@ -20,6 +20,8 @@
 #include <activemq/util/PrimitiveList.h>
 #include <activemq/util/PrimitiveMap.h>
 #include <decaf/lang/exceptions/NullPointerException.h>
+#include <decaf/util/StlMap.h>
+#include <decaf/util/StlList.h>
 
 using namespace std;
 using namespace activemq;
@@ -413,11 +415,11 @@
 void PrimitiveValueNode::setList( const decaf::util::List<PrimitiveValueNode>& lvalue ){
     clear();
     valueType = LIST_TYPE;
-    value.listValue = new decaf::util::List<PrimitiveValueNode>( lvalue );
+    value.listValue = new decaf::util::StlList<PrimitiveValueNode>( lvalue );
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-decaf::util::List<PrimitiveValueNode> PrimitiveValueNode::getList() const
+const decaf::util::List<PrimitiveValueNode>& PrimitiveValueNode::getList() const
     throw( decaf::lang::exceptions::NoSuchElementException ) {
 
     if( valueType != LIST_TYPE ){
@@ -428,7 +430,10 @@
     }
 
     if( value.listValue == NULL ){
-        return decaf::util::List<PrimitiveValueNode>();
+        throw decaf::lang::exceptions::NullPointerException(
+            __FILE__,
+            __LINE__,
+            "PrimitiveValue is not set but an element was placed in the Map" );
     }
 
     return *value.listValue;
@@ -440,7 +445,7 @@
 
     clear();
     valueType = MAP_TYPE;
-    value.mapValue = new decaf::util::STLMap<std::string, PrimitiveValueNode>( lvalue );
+    value.mapValue = new decaf::util::StlMap<std::string, PrimitiveValueNode>( lvalue );
 }
 
 ////////////////////////////////////////////////////////////////////////////////

Modified: activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveValueNode.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveValueNode.h?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveValueNode.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/util/PrimitiveValueNode.h Thu Feb 12 23:19:54 2009
@@ -202,7 +202,7 @@
 
         /**
          * Gets the internal Primitive Value object from this wrapper.
-         * @return a copy of the contianed PrimitiveValue
+         * @return a copy of the contained PrimitiveValue
          */
         PrimitiveValue getValue() const {
             return this->value;
@@ -404,7 +404,7 @@
          * @throw NoSuchElementException this node cannot be returned as the
          * requested type.
          */
-        decaf::util::List<PrimitiveValueNode> getList() const
+        const decaf::util::List<PrimitiveValueNode>& getList() const
             throw( decaf::lang::exceptions::NoSuchElementException );
 
         /**

Modified: activemq/activemq-cpp/trunk/src/main/activemq/wireformat/WireFormatRegistry.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/wireformat/WireFormatRegistry.h?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/wireformat/WireFormatRegistry.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/wireformat/WireFormatRegistry.h Thu Feb 12 23:19:54 2009
@@ -24,7 +24,7 @@
 #include <vector>
 #include <activemq/wireformat/WireFormatFactory.h>
 
-#include <decaf/util/STLMap.h>
+#include <decaf/util/StlMap.h>
 #include <decaf/lang/exceptions/NoSuchElementException.h>
 #include <decaf/lang/exceptions/NullPointerException.h>
 #include <decaf/lang/exceptions/IllegalArgumentException.h>
@@ -42,7 +42,7 @@
     class AMQCPP_API WireFormatRegistry {
     private:
 
-        decaf::util::STLMap<std::string, WireFormatFactory*> registry;
+        decaf::util::StlMap<std::string, WireFormatFactory*> registry;
 
     private:
 

Modified: activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/OpenWireFormatNegotiator.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/OpenWireFormatNegotiator.cpp?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/OpenWireFormatNegotiator.cpp (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/OpenWireFormatNegotiator.cpp Thu Feb 12 23:19:54 2009
@@ -141,13 +141,9 @@
 ////////////////////////////////////////////////////////////////////////////////
 void OpenWireFormatNegotiator::onCommand( commands::Command* command ) {
 
-    DataStructure* dataStructure =
-        dynamic_cast<DataStructure*>( command );
+    if( command->isWireFormatInfo() ) {
 
-    if( dataStructure != NULL &&
-        dataStructure->getDataStructureType() == WireFormatInfo::ID_WIREFORMATINFO ) {
-
-        WireFormatInfo* info = dynamic_cast<WireFormatInfo*>( dataStructure );
+        WireFormatInfo* info = dynamic_cast<WireFormatInfo*>( command );
 
         try {
 

Modified: activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/OpenWireResponseBuilder.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/OpenWireResponseBuilder.cpp?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/OpenWireResponseBuilder.cpp (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/OpenWireResponseBuilder.cpp Thu Feb 12 23:19:54 2009
@@ -78,7 +78,7 @@
 
 ////////////////////////////////////////////////////////////////////////////////
 void OpenWireResponseBuilder::buildIncomingCommands(
-    const commands::Command* command, decaf::util::Queue<commands::Command*>& queue ){
+    const commands::Command* command, decaf::util::StlQueue<commands::Command*>& queue ){
 
     // Delegate this to buildResponse
     if( command->isResponseRequired() ) {

Modified: activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/OpenWireResponseBuilder.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/OpenWireResponseBuilder.h?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/OpenWireResponseBuilder.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/OpenWireResponseBuilder.h Thu Feb 12 23:19:54 2009
@@ -20,6 +20,7 @@
 
 #include <activemq/util/Config.h>
 #include <activemq/transport/mock/MockTransport.h>
+#include <decaf/util/StlQueue.h>
 
 namespace activemq{
 namespace wireformat{
@@ -36,7 +37,7 @@
 
         virtual void buildIncomingCommands(
             const commands::Command* command,
-            decaf::util::Queue<commands::Command*>& queue );
+            decaf::util::StlQueue<commands::Command*>& queue );
 
     };
 

Modified: activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/marshal/PrimitiveMapMarshaller.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/marshal/PrimitiveMapMarshaller.cpp?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/marshal/PrimitiveMapMarshaller.cpp (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/marshal/PrimitiveMapMarshaller.cpp Thu Feb 12 23:19:54 2009
@@ -267,7 +267,7 @@
 ///////////////////////////////////////////////////////////////////////////////
 void PrimitiveMapMarshaller::unmarshalPrimitiveList(
     decaf::io::DataInputStream& dataIn,
-    decaf::util::List<PrimitiveValueNode>& list )
+    decaf::util::StlList<PrimitiveValueNode>& list )
         throw ( decaf::io::IOException ) {
 
     try{

Modified: activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/marshal/PrimitiveMapMarshaller.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/marshal/PrimitiveMapMarshaller.h?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/marshal/PrimitiveMapMarshaller.h (original)
+++ activemq/activemq-cpp/trunk/src/main/activemq/wireformat/openwire/marshal/PrimitiveMapMarshaller.h Thu Feb 12 23:19:54 2009
@@ -129,7 +129,7 @@
          */
         static void unmarshalPrimitiveList(
             decaf::io::DataInputStream& dataIn,
-            decaf::util::List<util::PrimitiveValueNode>& list )
+            decaf::util::StlList<util::PrimitiveValueNode>& list )
                 throw ( decaf::io::IOException );
 
         /**

Modified: activemq/activemq-cpp/trunk/src/main/decaf/lang/Iterable.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/decaf/lang/Iterable.h?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/decaf/lang/Iterable.h (original)
+++ activemq/activemq-cpp/trunk/src/main/decaf/lang/Iterable.h Thu Feb 12 23:19:54 2009
@@ -19,6 +19,7 @@
 #define _DECAF_LANG_ITERABLE_H_
 
 #include <decaf/util/Config.h>
+#include <decaf/util/Iterator.h>
 
 namespace decaf{
 namespace lang{
@@ -27,7 +28,7 @@
      * Implementing this interface allows an object to be cast to an Iterable
      * type for generic collections API calls.
      */
-    template< typename T >
+    template< typename E >
     class DECAF_API Iterable {
     public:
 
@@ -36,8 +37,8 @@
         /**
          * @returns an iterator over a set of elements of type T.
          */
-        T iterator() = 0;
-        const T iterator() = 0;
+        virtual decaf::util::Iterator<E>* iterator() = 0;
+        virtual decaf::util::Iterator<E>* iterator() const = 0;
 
     };
 

Modified: activemq/activemq-cpp/trunk/src/main/decaf/lang/System.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/decaf/lang/System.cpp?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/decaf/lang/System.cpp (original)
+++ activemq/activemq-cpp/trunk/src/main/decaf/lang/System.cpp Thu Feb 12 23:19:54 2009
@@ -22,7 +22,7 @@
 #include <decaf/lang/exceptions/RuntimeException.h>
 #include <decaf/util/Date.h>
 #include <decaf/util/StringTokenizer.h>
-#include <decaf/util/STLMap.h>
+#include <decaf/util/StlMap.h>
 #include <apr.h>
 #include <apr_errno.h>
 #include <apr_env.h>
@@ -134,7 +134,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 const Map<string, string>& System::getenv() throw ( Exception ) {
 
-    static STLMap<string, string> values;
+    static StlMap<string, string> values;
     values.clear();
 
     StringTokenizer tokenizer( "" );

Modified: activemq/activemq-cpp/trunk/src/main/decaf/util/Collection.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/decaf/util/Collection.h?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/decaf/util/Collection.h (original)
+++ activemq/activemq-cpp/trunk/src/main/decaf/util/Collection.h Thu Feb 12 23:19:54 2009
@@ -19,10 +19,12 @@
 #define _DECAF_UTIL_COLLECTION_H_
 
 #include <decaf/util/Config.h>
-#include <devaf/lang/exceptions/UnsupportedOperationException.h>
-#include <devaf/lang/exceptions/NullPointerException.h>
-#include <devaf/lang/exceptions/IllegalArgumentException.h>
+#include <decaf/lang/exceptions/UnsupportedOperationException.h>
+#include <decaf/lang/exceptions/NullPointerException.h>
+#include <decaf/lang/exceptions/IllegalArgumentException.h>
+#include <decaf/lang/Iterable.h>
 #include <decaf/util/Iterator.h>
+#include <decaf/util/concurrent/Synchronizable.h>
 
 namespace decaf{
 namespace util{
@@ -62,9 +64,9 @@
      *
      * @since 1.0
      */
-    template< typename T >
-    class Collection
-    {
+    template< typename E >
+    class DECAF_API Collection : public lang::Iterable<E>,
+        virtual public util::concurrent::Synchronizable {
     public:
 
         virtual ~Collection() {}
@@ -74,12 +76,20 @@
          * contains more than Integer.MAX_VALUE elements, returns Integer.MAX_VALUE.
          * @returns the number of elements in this collection
          */
-        virtual int size() = 0;
+        virtual std::size_t size() const = 0;
 
         /**
          * @returns true if this collection contains no elements.
          */
-        virtual bool isEmpty() = 0;
+        virtual bool isEmpty() const = 0;
+
+        /**
+         * Compares the passed collection to this one, if they contain the
+         * same elements, i.e. all their elements are equivalent, then it
+         * returns true.
+         * @returns true if the Collections contain the same elements.
+         */
+        virtual bool equals( const Collection<E>& value ) const = 0;
 
         /**
          * Returns true if this collection contains the specified element. More
@@ -87,19 +97,18 @@
          * least one element e such that (o==null ? e==null : o.equals(e)).
          * @param value - value to check for presence in the collection
          * @returns true if there is at least one of the elements in the collection
-         * @thorws NullPointerException
+         * @throw Exception
          */
-        virtual bool contains( const E& value )
-            throw ( lang::exceptions::NullPointerException ) = 0;
+        virtual bool contains( const E& value ) const throw ( lang::Exception ) = 0;
 
         /**
-         * Returns an iterator over the elements in this collection. There are
-         * no guarantees concerning the order in which the elements are
-         * returned (unless this collection is an instance of some class that
-         * provides a guarantee).
-         * @returns an Iterator over the elements in this collection
+         * Returns true if this collection contains all of the elements in
+         * the specified collection.
+         * @param source - Collection to compare to this one.
+         * @throw Exception
          */
-        virtual Iterator<E>* iterator() = 0;
+        virtual bool containsAll( const Collection<E>& source ) const
+            throw ( lang::Exception ) = 0;
 
         /**
          * Returns an array containing all of the elements in this collection. If
@@ -110,7 +119,7 @@
          * This method acts as bridge between array-based and collection-based APIs.
          * @returns an array of the elements in this collection.
          */
-        virtual std::vector<E> toArray() = 0;
+        virtual std::vector<E> toArray() const = 0;
 
         /**
          * Returns true if this collection changed as a result of the call.
@@ -138,12 +147,10 @@
          * @param value - reference to the element to add.
          * @returns true if the element was added
          * @throw UnsupportedOperationException
-         * @throw NullPointerException
          * @throw IllegalArgumentException
          */
         virtual bool add( const E& value )
             throw ( lang::exceptions::UnsupportedOperationException,
-                    lang::exceptions::NullPointerException,
                     lang::exceptions::IllegalArgumentException ) = 0;
 
         /**
@@ -156,20 +163,11 @@
          * @param value - reference to the element to remove.
          * @returns true if the collection was changed
          * @throw UnsupportedOperationException
-         * @throw NullPointerException
+         * @throw IllegalArgumentException
          */
         virtual bool remove( const E& value )
             throw ( lang::exceptions::UnsupportedOperationException,
-                    lang::exceptions::NullPointerException ) = 0;
-
-        /**
-         * Returns true if this collection contains all of the elements in
-         * the specified collection.
-         * @param source - Collection to compare to this one.
-         * @thorw Exception
-         */
-        virtual bool containsAll( const Collection<E>& source )
-            throw ( lang::Exception ) = 0;
+                    lang::exceptions::IllegalArgumentException ) = 0;
 
         /**
          * Adds all of the elements in the specified collection to this
@@ -181,12 +179,10 @@
          * @param source - Collection whose elements are added to this one.
          * @return true if this collection changed as a result of the call
          * @throw UnsupportedOperationException
-         * @throw NullPointerException
          * @throw IllegalArgumentException
          */
         virtual bool addAll( const Collection<E>& source )
             throw ( lang::exceptions::UnsupportedOperationException,
-                    lang::exceptions::NullPointerException,
                     lang::exceptions::IllegalArgumentException ) = 0;
 
         /**
@@ -197,12 +193,10 @@
          * @param value - The Collection whose elements are to be removed
          * @returns true if the collection changed as a result of this call
          * @throw UnsupportedOperationException
-         * @throw NullPointerException
          * @throw IllegalArgumentException
          */
         virtual bool removeAll( const Collection<E>& value )
             throw ( lang::exceptions::UnsupportedOperationException,
-                    lang::exceptions::NullPointerException,
                     lang::exceptions::IllegalArgumentException ) = 0;
 
         /**
@@ -213,12 +207,10 @@
          * @param value - The Collection whose elements are to be retained
          * @returns true if the collection changed as a result of this call
          * @throw UnsupportedOperationException
-         * @throw NullPointerException
          * @throw IllegalArgumentException
          */
-        virtual bool retainAll( const Collection<E> value )
+        virtual bool retainAll( const Collection<E>& value )
             throw ( lang::exceptions::UnsupportedOperationException,
-                    lang::exceptions::NullPointerException,
                     lang::exceptions::IllegalArgumentException ) = 0;
 
         /**
@@ -230,14 +222,6 @@
         virtual void clear()
             throw ( lang::exceptions::UnsupportedOperationException ) = 0;
 
-        /**
-         * Compares the passed collection to this one, if they contain the
-         * same elements, i.e. all their elements are equivalent, then it
-         * returns true.
-         * @returns true if the Collections contain the same elements.
-         */
-        virtual bool equals( const Collection<E>& value ) = 0;
-
     };
 
 }}

Modified: activemq/activemq-cpp/trunk/src/main/decaf/util/List.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/decaf/util/List.h?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/decaf/util/List.h (original)
+++ activemq/activemq-cpp/trunk/src/main/decaf/util/List.h Thu Feb 12 23:19:54 2009
@@ -18,139 +18,59 @@
 #ifndef _DECAF_UTIL_LIST_H_
 #define _DECAF_UTIL_LIST_H_
 
-#include <list>
-#include <algorithm>
 #include <decaf/lang/exceptions/NoSuchElementException.h>
 #include <decaf/lang/exceptions/IndexOutOfBoundsException.h>
 #include <decaf/util/concurrent/Synchronizable.h>
-#include <decaf/util/concurrent/Mutex.h>
+#include <decaf/util/Config.h>
 #include <decaf/util/Iterator.h>
+#include <decaf/util/Collection.h>
+#include <decaf/util/ListIterator.h>
 
 namespace decaf{
 namespace util{
 
     /**
-     * Set template that wraps around a std::set to provide a more
-     * user-friendly interface and to provide common functions that do
-     * not exist in std::list.
+     * An ordered collection (also known as a sequence). The user of this interface has
+     * precise control over where in the list each element is inserted. The user can
+     * access elements by their integer index (position in the list), and search for
+     * elements in the list.
+     *
+     * Unlike sets, lists typically allow duplicate elements. More formally, lists
+     * typically allow pairs of elements e1 and e2 such that e1.equals(e2), and they
+     * typically allow multiple null elements if they allow null elements at all.
+     * It is not inconceivable that someone might wish to implement a list that
+     * prohibits duplicates, by throwing runtime exceptions when the user attempts
+     * to insert them, but we expect this usage to be rare.
      */
-    template <typename E> class List : public util::concurrent::Synchronizable {
-    private:
-
-        std::list<E> values;
-        util::concurrent::Mutex mutex;
-
-    private:
-
-        class ListIterator : public Iterator<E> {
-        private:
-
-            typename std::list<E>::iterator current;
-            typename std::list<E>::iterator previous;
-            typename std::list<E>* list;
-
-        public:
-
-            ListIterator( typename std::list<E>* list ) {
-                this->current = list->begin();
-                this->previous = list->end();
-                this->list = list;
-            }
-            virtual ~ListIterator() {}
-
-            virtual E next() throw( lang::exceptions::NoSuchElementException ){
-                if( this->current == list->end() ) {
-                    throw lang::exceptions::NoSuchElementException(
-                        __FILE__, __LINE__,
-                        "List::Iterator::next - No more elements to return" );
-                }
-
-                this->previous = this->current;
-                return *( this->current++ );
-            }
-
-            virtual bool hasNext() const {
-                return ( this->current != list->end() );
-            }
-
-            virtual void remove() throw ( lang::exceptions::IllegalStateException,
-                                          lang::exceptions::UnsupportedOperationException ){
-                if( this->previous == list->end() ) {
-                    throw lang::exceptions::IllegalStateException(
-                        __FILE__, __LINE__,
-                        "List::Iterator::remove - Invalid State to call remove" );
-                }
-
-                this->list->erase( this->previous );
-                this->previous = this->list->end();
-            }
-        };
-
+    template <typename E>
+    class DECAF_API List : public decaf::util::Collection<E> {
     public:
 
-        /**
-         * Default constructor - does nothing.
-         */
-        List(){}
-
-        /**
-         * Copy constructor - copies the content of the given set into this
-         * one.
-         * @param source The source set.
-         */
-        List( const List& source ) : decaf::util::concurrent::Synchronizable() {
-            copy( source );
-        }
-
-        virtual ~List(){}
+        virtual ~List() {}
 
         /**
-         * Comparison, equality is dependant on the method of determining
-         * if the element are equal.
-         * @param source - List to compare to this one.
-         * @returns true if the List passed is equal in value to this one.
+         * @return a list iterator over the elements in this list (in proper sequence).
          */
-        virtual bool equals( const List& source ) const {
-            return this->values == source.values;
-        }
+        virtual ListIterator<E>* listIterator() = 0;
+        virtual ListIterator<E>* listIterator() const = 0;
 
         /**
-         * Returns an iterator for this collection.  The order of Iteration
-         * is in no particular order other than the natural ording of the
-         * elements in the List class.
-         * @returns Iterator<E> for this collection
-         */
-        Iterator<E>* iterator() {
-            return new ListIterator( &values );
-        }
-
-        /**
-         * Copies the content of the source set into this set.  Erases
-         * all existing data in this st.
-         * @param source The source object to copy from.
-         */
-        virtual void copy( const List& source ) {
-            // Add all of the entries to this map.
-            values = source.values;
-        }
-
-        /**
-         * Removes all values from this set.
-         */
-        virtual void clear() {
-            values.clear();
-        }
-
-        /**
-         * Indicates whether or this set contains the given value.
-         * @param value The value to look up.
-         * @return true if this set contains the value, otherwise false.
+         * @param index index of first element to be returned from the list iterator
+         *              (by a call to the next method).
+         *
+         * @return a list iterator of the elements in this list (in proper sequence),
+         *         starting at the specified position in this list. The specified index
+         *         indicates the first element that would be returned by an initial call
+         *         to next. An initial call to previous would return the element with the
+         *         specified index minus one.
+         *
+         * @throws IndexOutOfBoundsException if the index is out of range
+         *         (index < 0 || index > size())
          */
-        virtual bool contains( const E& value ) const {
-            typename std::list<E>::const_iterator iter;
-            iter = std::find( values.begin(), values.end(), value );
-            return iter != values.end();
-        }
+        virtual ListIterator<E>* listIterator( std::size_t index )
+            throw( decaf::lang::exceptions::IndexOutOfBoundsException ) = 0;
+        virtual ListIterator<E>* listIterator( std::size_t index ) const
+            throw( decaf::lang::exceptions::IndexOutOfBoundsException ) = 0;
 
         /**
          * Returns the index of the first occurrence of the specified element in
@@ -163,20 +83,8 @@
          * this list,
          * @throw NoSuchElementException if value is not in the list
          */
-        virtual size_t indexOf( const E& value )
-            throw ( decaf::lang::exceptions::NoSuchElementException ) {
-
-            typename std::list<E>::iterator iter;
-            iter = std::find( values.begin(), values.end(), value );
-
-            if( iter == values.end() ) {
-                throw decaf::lang::exceptions::NoSuchElementException(
-                    __FILE__, __LINE__,
-                    "List::indexOf - No matching element in list" );
-            }
-
-            return std::distance( values.begin(), iter );
-        }
+        virtual std::size_t indexOf( const E& value )
+            throw ( decaf::lang::exceptions::NoSuchElementException ) = 0;
 
         /**
          * Returns the index of the last occurrence of the specified element in
@@ -189,33 +97,8 @@
          * this list.
          * @throw NoSuchElementException if value is not in the list
          */
-        virtual size_t lastIndexOf( const E& value ) {
-            typename std::list<E>::reverse_iterator iter;
-            iter = std::find( values.rbegin(), values.rend(), value );
-
-            if( iter == values.rend() ) {
-                throw decaf::lang::exceptions::NoSuchElementException(
-                    __FILE__, __LINE__,
-                    "List::lastIndexOf - No matching element in list" );
-            }
-
-            // Now reverse the result to get the last index
-            return this->size() - std::distance( values.rbegin(), iter ) - 1;
-        }
-
-        /**
-         * @return if the set contains any element or not, TRUE or FALSE
-         */
-        virtual bool isEmpty() const {
-            return values.empty();
-        }
-
-        /**
-         * @return The number of elements in this set.
-         */
-        virtual std::size_t size() const {
-            return values.size();
-        }
+        virtual size_t lastIndexOf( const E& value )
+            throw ( decaf::lang::exceptions::NoSuchElementException ) = 0;
 
         /**
          * Gets the element contained at position passed
@@ -223,19 +106,7 @@
          * @return value at index
          */
         virtual E get( std::size_t index ) const
-            throw ( decaf::lang::exceptions::IndexOutOfBoundsException ) {
-
-            if( index >= this->size() ) {
-                throw decaf::lang::exceptions::IndexOutOfBoundsException(
-                    __FILE__, __LINE__,
-                    "List::get - Index greater than size()" );
-            }
-
-            // Advance from begin and return the value at that location.
-            typename std::list<E>::const_iterator iter = this->values.begin();
-            std::advance( iter, index );
-            return *( iter );
-        }
+            throw ( decaf::lang::exceptions::IndexOutOfBoundsException ) = 0;
 
         /**
          * Replaces the element at the specified position in this list with the
@@ -244,34 +115,10 @@
          * @param index - index of the element to replace
          * @param element - element to be stored at the specified position
          * @return the element previously at the specified position
-         * @throw IndexOutOfBoundsException - if the index is greater tham size
+         * @throw IndexOutOfBoundsException - if the index is greater than size
          */
-        virtual E set( std::size_t index, E element )
-            throw ( decaf::lang::exceptions::IndexOutOfBoundsException ){
-
-            if( index >= this->size() ) {
-                throw decaf::lang::exceptions::IndexOutOfBoundsException(
-                    __FILE__, __LINE__,
-                    "List::get - Index greater than size()" );
-            }
-
-            // Advance from begin and return the value at that location
-            // after setting the value to the new value.
-            typename std::list<E>::iterator iter = this->values.begin();
-            std::advance( iter, index );
-            E oldValue = *iter;
-            *iter = element;
-
-            return oldValue;
-        }
-
-        /**
-         * Adds the given value to the set.
-         * @param value The value to add.
-         */
-        virtual void add( const E& value ) {
-            values.insert( values.end(), value );
-        }
+        virtual E set( std::size_t index, const E& element )
+            throw ( decaf::lang::exceptions::IndexOutOfBoundsException ) = 0;
 
         /**
          * Inserts the specified element at the specified position in this list.
@@ -280,30 +127,35 @@
          *
          * @param index - index at which the specified element is to be inserted
          * @param element - element to be inserted
-         * @throw IndexOutOfBoundsException - if the index is greater tham size
+         *
+         * @throw IndexOutOfBoundsException - if the index is greater than size
+         * @throw UnsupportedOperationException - If the collection is non-modifiable.
          */
-        virtual void add( std::size_t index, E element )
-            throw ( decaf::lang::exceptions::IndexOutOfBoundsException ){
-
-            if( index > this->size() ) {
-                throw decaf::lang::exceptions::IndexOutOfBoundsException(
-                    __FILE__, __LINE__,
-                    "List::add - Index greater than size()" );
-            }
-
-            // Advance from begin and insert the value at that location
-            typename std::list<E>::iterator iter = this->values.begin();
-            std::advance( iter, index );
-            this->values.insert( iter, element );
-        }
-
-        /**
-         * Removes the value from the set.
-         * @param value The value to be removed.
+        virtual void add( std::size_t index, const E& element )
+            throw ( decaf::lang::exceptions::UnsupportedOperationException,
+                    decaf::lang::exceptions::IndexOutOfBoundsException ) = 0;
+
+        /**
+         * Inserts all of the elements in the specified collection into this list at
+         * the specified position (optional operation). Shifts the element currently at
+         * that position (if any) and any subsequent elements to the right (increases
+         * their indices). The new elements will appear in this list in the order that
+         * they are returned by the specified collection's iterator. The behavior of this
+         * operation is undefined if the specified collection is modified while the
+         * operation is in progress. (Note that this will occur if the specified collection
+         * is this list, and it's nonempty.)
+         *
+         * @param index index at which to insert the first element from the specified collection
+         * @param c collection containing elements to be added to this list
+         *
+         * @return true if this list changed as a result of the call
+         *
+         * @throw IndexOutOfBoundsException - if the index is greater than size
+         * @throw UnsupportedOperationException - If the collection is non-modifiable.
          */
-        virtual void remove( const E& value ) {
-            values.remove( value );
-        }
+        virtual bool addAll( std::size_t index, const Collection<E>& c )
+            throw ( decaf::lang::exceptions::UnsupportedOperationException,
+                    decaf::lang::exceptions::IndexOutOfBoundsException ) = 0;
 
         /**
          * Removes the element at the specified position in this list.
@@ -312,101 +164,12 @@
          *
          * @param index - the index of the element to be removed
          * @return the element previously at the specified position
-         * @throw IndexOutOfBoundsException - if the index >= size()
-         */
-        virtual E remove( std::size_t index ) {
-
-            if( index > this->size() ) {
-                throw decaf::lang::exceptions::IndexOutOfBoundsException(
-                    __FILE__, __LINE__,
-                    "List::add - Index greater than size()" );
-            }
-
-            // Advance from begin and insert the value at that location
-            typename std::list<E>::iterator iter = this->values.begin();
-            std::advance( iter, index );
-            E oldValue = *iter;
-            this->values.erase( iter );
-
-            return oldValue;
-        }
-
-        /**
-         * @return the all values in this set as a std::vector.
-         */
-        virtual std::vector<E> toArray() const {
-            std::vector<E> valueArray( values.size() );
-
-            typename std::list<E>::const_iterator iter;
-            iter=values.begin();
-            for( int ix=0; iter != values.end(); ++iter, ++ix ){
-                valueArray[ix] = *iter;
-            }
-
-            return valueArray;
-        }
-
-    public:     // Methods from Synchronizable
-
-        /**
-         * Locks the object.
-         * @throws Exception
-         */
-        virtual void lock() throw( lang::Exception ) {
-            mutex.lock();
-        }
-
-        /**
-         * Unlocks the object.
-         * @throws Exception
-         */
-        virtual void unlock() throw( lang::Exception ) {
-            mutex.unlock();
-        }
-
-        /**
-         * Waits on a signal from this object, which is generated
-         * by a call to Notify.  Must have this object locked before
-         * calling.
-         * @throws Exception
-         */
-        virtual void wait() throw( lang::Exception ) {
-            mutex.wait();
-        }
-
-        /**
-         * Waits on a signal from this object, which is generated
-         * by a call to Notify.  Must have this object locked before
-         * calling.  This wait will timeout after the specified time
-         * interval.
-         * @param millisecs the time in millisecsonds to wait, or
-         * WAIT_INIFINITE
-         * @throws Exception
-         */
-        virtual void wait( unsigned long millisecs )
-            throw( lang::Exception ) {
-            mutex.wait( millisecs );
-        }
-
-        /**
-         * Signals a waiter on this object that it can now wake
-         * up and continue.  Must have this object locked before
-         * calling.
-         * @throws Exception
-         */
-        virtual void notify() throw(  lang::Exception  ) {
-            mutex.notify();
-        }
-
-        /**
-         * Signals the waiters on this object that it can now wake
-         * up and continue.  Must have this object locked before
-         * calling.
-         * @throws Exception
+         * @throw IndexOutOfBoundsException - if the index is greater than size
+         * @throw UnsupportedOperationException - If the collection is non-modifiable.
          */
-        virtual void notifyAll() throw(  lang::Exception  ) {
-            mutex.notifyAll();
-        }
+        virtual E remove( std::size_t index )
+            throw ( decaf::lang::exceptions::UnsupportedOperationException,
+                    decaf::lang::exceptions::IndexOutOfBoundsException ) = 0;
 
     };
 

Modified: activemq/activemq-cpp/trunk/src/main/decaf/util/ListIterator.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/decaf/util/ListIterator.h?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/decaf/util/ListIterator.h (original)
+++ activemq/activemq-cpp/trunk/src/main/decaf/util/ListIterator.h Thu Feb 12 23:19:54 2009
@@ -18,7 +18,9 @@
 #ifndef _DECAF_UTIL_LISTITERATOR_H_
 #define _DECAF_UTIL_LISTITERATOR_H_
 
-#include <decaf/til/Iterator.h>
+#include <decaf/util/Iterator.h>
+#include <decaf/util/Config.h>
+#include <decaf/lang/exceptions/IllegalArgumentException.h>
 
 namespace decaf{
 namespace util{
@@ -33,7 +35,7 @@
      * returned by a call to next() or previous().
      */
     template< typename E>
-    class ListIterator : public decaf::util::Iterator<E> {
+    class DECAF_API ListIterator : public decaf::util::Iterator<E> {
     public:
 
         virtual ~ListIterator() {}
@@ -75,7 +77,20 @@
          * called, or remove or add have been called after the last call to next
          * or previous.
          */
-        virtual void set( const E& e ) = 0;
+        virtual void set( const E& e )
+            throw ( decaf::lang::exceptions::UnsupportedOperationException,
+                    decaf::lang::exceptions::IllegalArgumentException,
+                    decaf::lang::exceptions::IllegalStateException ) = 0;
+
+        /**
+         * Returns true if this list iterator has more elements when traversing the
+         * list in the reverse direction. (In other words, returns true if previous
+         * would return an element rather than throwing an exception.)
+         *
+         * @return true if the list iterator has more elements when traversing the list
+         *         in the reverse direction.
+         */
+        virtual bool hasPrevious() const = 0;
 
         /**
          * Returns the previous element in the list. This method may be called
@@ -97,7 +112,7 @@
          * subsequent call to next, or list size if list iterator is at end
          * of list.
          */
-        virtual int nextIndex() = 0;
+        virtual int nextIndex() const = 0;
 
         /**
          * Returns the index of the element that would be returned by a
@@ -108,7 +123,7 @@
          * subsequent call to previous, or -1 if list iterator is at beginning
          * of list.
          */
-        virtual int previousIndex() = 0;
+        virtual int previousIndex() const = 0;
 
     };
 

Modified: activemq/activemq-cpp/trunk/src/main/decaf/util/Queue.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/main/decaf/util/Queue.h?rev=743923&r1=743922&r2=743923&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/main/decaf/util/Queue.h (original)
+++ activemq/activemq-cpp/trunk/src/main/decaf/util/Queue.h Thu Feb 12 23:19:54 2009
@@ -17,246 +17,95 @@
 #ifndef _DECAF_UTIL_QUEUE_H_
 #define _DECAF_UTIL_QUEUE_H_
 
-#include <list>
-#include <vector>
-#include <decaf/util/concurrent/Mutex.h>
+#include <decaf/util/Config.h>
+#include <decaf/util/Iterator.h>
+#include <decaf/util/Collection.h>
 #include <decaf/lang/Exception.h>
+#include <decaf/lang/exceptions/NoSuchElementException.h>
+#include <decaf/lang/exceptions/IndexOutOfBoundsException.h>
 
 namespace decaf{
 namespace util{
 
     /**
-     * The Queue class accepts messages with an psuh(m) command
-     * where m is the message to be queued.  It destructively
-     * returns the message with pop().  pop() returns messages in
-     * the order they were enqueued.
+     * A kind of collection provides advanced operations than other basic
+     * collections, such as insertion, extraction, and inspection.
      *
-     * Queue is implemented with an instance of the STL queue object.
-     * The interface is essentially the same as that of the STL queue
-     * except that the pop method actually reaturns a reference to the
-     * element popped.  This frees the app from having to call the
-     * <code>front</code> method before calling pop.
+     * Generally, a queue orders its elements by means of first-in-first-out. While
+     * priority queue orders its elements according to a comparator specified or the
+     * elements' natural order. Furthermore, a stack orders its elements
+     * last-in-first out.
      *
-     *  Queue<string> sq;     // make a queue to hold string messages
-     *  sq.push(s);           // enqueues a message m
-     *  string s = sq.pop();  // dequeues a message
+     * Queue does not provide blocking queue methods, which will block until the
+     * operation of the method is allowed. BlockingQueue interface defines such
+     * methods.
      *
-     * = DESIGN CONSIDERATIONS
-     *
-     * The Queue class inherits from the Synchronizable interface and
-     * provides methods for locking and unlocking this queue as well as
-     * waiting on this queue.  In a multi-threaded app this can allow
-     * for multiple threads to be reading from and writing to the same
-     * Queue.
-     *
-     * Clients should consider that in a multiple threaded app it is
-     * possible that items could be placed on the queue faster than
-     * you are taking them off, so protection should be placed in your
-     * polling loop to ensure that you don't get stuck there.
+     * Certain methods in the Queue interface return a special value instead of throwing
+     * an exception if there is no element in the Queue to return, this special value
+     * can be obtained by calling the Queue method <code>getEmptyMarker</code>.
      */
-
-    template <typename T> class Queue : public concurrent::Synchronizable {
+    template <typename E>
+    class DECAF_API Queue : public decaf::util::Collection<E> {
     public:
 
-        Queue() {}
         virtual ~Queue() {}
 
         /**
-         * Empties this queue.
-         */
-        void clear() {
-            queue.clear();
-        }
-
-        /**
-         * Returns a Reference to the element at the head of the queue
-         * @return reference to a queue type object or (safe)
-         */
-        T& front() {
-            if( queue.empty() ) {
-                return getSafeValue();
-            }
-
-            return queue.front();
-        }
-
-        /**
-         * Returns a Reference to the element at the head of the queue
-         * @return reference to a queue type object or (safe)
+         * Returns a reference to the Marker value that is returned from methods that
+         * do not throw an exception when there is no element in the Queue to return.
          */
-        const T& front() const {
-            if( queue.empty() ) {
-                return getSafeValue();
-            }
-
-            return queue.front();
-        }
+        virtual const E& getEmptyMarker() const = 0;
 
         /**
-         * Returns a Reference to the element at the tail of the queue
-         * @return reference to a queue type object or (safe)
+         * Inserts the specified element into the queue provided that the condition
+         * allows such an operation. The method is generally preferable to the
+         * collection.add(E), since the latter might throw an exception if the
+         * operation fails.
+         *
+         * @param value
+         *        the specified element to insert into the queue.
+         *
+         * @return true if the operation succeeds and false if it fails.
          */
-        T& back() {
-            if( queue.empty() ) {
-                return getSafeValue();
-            }
-
-            return queue.back();
-        }
-
-        /**
-         * Returns a Reference to the element at the tail of the queue
-         * @return reference to a queue type object or (safe)
-         */
-        const T& back() const {
-            if( queue.empty() ) {
-                return getSafeValue();
-            }
-
-            return queue.back();
-        }
-
-        /**
-         * Places a new Object at the Tail of the queue
-         * @param t - Queue Object Type reference.
-         */
-        void push( const T &t ) {
-            queue.push_back( t );
-        }
-
-        /**
-         * Places a new Object at the front of the queue
-         * @param t - Queue Object Type reference.
-         */
-        void enqueueFront( const T &t ) {
-            queue.push_front( t );
-        }
-
-        /**
-         * Removes and returns the element that is at the Head of the queue
-         * @return reference to a queue type object or (safe)
-         */
-        T pop() {
-            if( queue.empty() ) {
-                return getSafeValue();
-            }
-
-            // Pop the element into a temp, since we need to remain locked.
-            // this means getting front and then popping.
-            T temp = queue.front();
-            queue.pop_front();
-
-            return temp;
-        }
+        virtual bool offer( const E& value ) = 0;
 
         /**
-         * Gets the Number of elements currently in the Queue
-         * @return Queue Size
+         * Gets and removes the element in the head of the queue, or returns null if
+         * there is no element in the queue.
+         *
+         * @return the element in the head of the queue or null if there is no
+         *         element in the queue.
          */
-        size_t size() const{
-            return queue.size();
-        }
+        virtual E poll() = 0;
 
         /**
-         * Checks if this Queue is currently empty
-         * @return boolean indicating queue emptiness
+         * Gets and removes the element in the head of the queue. Throws a
+         * NoSuchElementException if there is no element in the queue.
+         *
+         * @return the element in the head of the queue.
+         * @throws NoSuchElementException
+         *         if there is no element in the queue.
          */
-        bool empty() const {
-            return queue.empty();
-        }
+        virtual E remove() throw ( decaf::lang::exceptions::NoSuchElementException ) = 0;
 
         /**
-         * @return the all values in this queue as a std::vector.
+         * Gets but not removes the element in the head of the queue.
+         *
+         * @return the element in the head of the queue or null if there is no
+         *         element in the queue.
          */
-        virtual std::vector<T> toArray() const {
-            std::vector<T> valueArray( queue.begin(), queue.end() );
-            return valueArray;
-        }
+        virtual const E& peek() const = 0;
 
         /**
-         * Reverses the order of the contents of this queue and stores them
-         * in the target queue.
-         * @param target - The target queue that will receive the contents of
-         * this queue in reverse order.
+         * Gets but not removes the element in the head of the queue. Throws a
+         * NoSuchElementException if there is no element in the queue.
+         *
+         * @return the element in the head of the queue.
+         * @throws NoSuchElementException
+         *         if there is no element in the queue.
          */
-        void reverse( Queue<T>& target ) const {
-            target.queue.insert( target.queue.end(), queue.rbegin(), queue.rend() );
-        }
-
-        /**
-         * Locks the object.
-         */
-        virtual void lock() throw( lang::Exception ){
-            mutex.lock();
-        }
-
-        /**
-         * Unlocks the object.
-         */
-        virtual void unlock() throw( lang::Exception ){
-            mutex.unlock();
-        }
-
-        /**
-         * Waits on a signal from this object, which is generated
-         * by a call to Notify.  Must have this object locked before
-         * calling.
-         */
-        virtual void wait() throw( lang::Exception ){
-            mutex.wait();
-        }
-
-        /**
-         * Waits on a signal from this object, which is generated
-         * by a call to Notify.  Must have this object locked before
-         * calling.  This wait will timeout after the specified time
-         * interval.
-         * @param millisecs time to wait, or WAIT_INIFINITE
-         * @throws ActiveMQException
-         */
-        virtual void wait( unsigned long millisecs )
-            throw( lang::Exception ) {
-
-            mutex.wait(millisecs);
-        }
-
-        /**
-         * Signals a waiter on this object that it can now wake
-         * up and continue.  Must have this object locked before
-         * calling.
-         */
-        virtual void notify() throw( lang::Exception ){
-            mutex.notify();
-        }
-
-        /**
-         * Signals the waiters on this object that it can now wake
-         * up and continue.  Must have this object locked before
-         * calling.
-         */
-        virtual void notifyAll() throw( lang::Exception ){
-            mutex.notifyAll();
-        }
-
-    public:   // Statics
-
-        /**
-         * Fetch a reference to the safe value this object will return
-         * when there is nothing to fetch from the queue.
-         * @return Reference to this Queues safe object
-         */
-        T& getSafeValue() {
-            static T safe;
-            return safe;
-        }
-
-    private:
-
-        // The real queue
-        std::list<T> queue;
-
-        // Object used for sync
-        util::concurrent::Mutex mutex;
+        virtual const E& element() const
+            throw( decaf::lang::exceptions::NoSuchElementException ) = 0;
 
     };