Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
git-svn-id: https://svn.apache.org/repos/asf/activemq/activemq-cpp/trunk@1335280 13f79535-47bb-0310-9956-ffa450edef68
  • Loading branch information
Timothy A. Bish committed May 7, 2012
1 parent a523328 commit b528e8a
Show file tree
Hide file tree
Showing 32 changed files with 721 additions and 156 deletions.
Expand Up @@ -72,6 +72,19 @@ protected void generateAdditonalMembers( PrintWriter out ) {

super.generateAdditonalMembers(out);


out.println(" /**");
out.println(" * Create a Pointer based copy of this message. Useful for chaining a clone");
out.println(" * operation with other operation such as casting to a cms Message type.");
out.println(" *");
out.println(" * Pointer<cms::Message> cmsMsg = message->copy().dynamic_cast<cms::Message>();");
out.println(" *");
out.println(" * @returns a Pointer<Message> which is a duplicate of this object.");
out.println(" */");
out.println(" Pointer<Message> copy() const {");
out.println(" return Pointer<Message>(this->cloneDataStructure());");
out.println(" }");
out.println("");
out.println(" /**");
out.println(" * Handles the marshaling of the objects properties into the");
out.println(" * internal byte array before the object is marshaled to the");
Expand Down
4 changes: 2 additions & 2 deletions activemq-cpp/configure.ac
Expand Up @@ -38,8 +38,8 @@ ACTIVEMQ_API_VERSION=${ACTIVEMQ_VERSION}
## ------------------------------------------------------------
## Define the Version variables for the CMS API Library
## ------------------------------------------------------------
CMSAPI_MAJOR_VERSION=2
CMSAPI_MINOR_VERSION=4
CMSAPI_MAJOR_VERSION=3
CMSAPI_MINOR_VERSION=0
CMSAPI_VERSION=${CMSAPI_MAJOR_VERSION}.${CMSAPI_MINOR_VERSION}

AC_SUBST(CMSAPI_MAJOR_VERSION)
Expand Down
8 changes: 8 additions & 0 deletions activemq-cpp/src/main/activemq/cmsutil/CachedConsumer.h
Expand Up @@ -84,6 +84,14 @@ namespace cmsutil {
return consumer->getMessageSelector();
}

virtual void setMessageTransformer(cms::MessageTransformer* transformer) {
consumer->setMessageTransformer(transformer);
}

virtual cms::MessageTransformer* getMessageTransformer() const {
return consumer->getMessageTransformer();
}

};

}}
Expand Down
8 changes: 8 additions & 0 deletions activemq-cpp/src/main/activemq/cmsutil/CachedProducer.h
Expand Up @@ -116,6 +116,14 @@ namespace cmsutil {
return producer->getTimeToLive();
}

virtual void setMessageTransformer(cms::MessageTransformer* transformer) {
producer->setMessageTransformer(transformer);
}

virtual cms::MessageTransformer* getMessageTransformer() const {
return producer->getMessageTransformer();
}

};

}}
Expand Down
8 changes: 8 additions & 0 deletions activemq-cpp/src/main/activemq/cmsutil/PooledSession.h
Expand Up @@ -225,6 +225,14 @@ namespace cmsutil {
session->unsubscribe( name );
}

virtual void setMessageTransformer(cms::MessageTransformer* transformer) {
session->setMessageTransformer(transformer);
}

virtual cms::MessageTransformer* getMessageTransformer() const {
return session->getMessageTransformer();
}

private:

std::string getUniqueDestName( const cms::Destination* dest );
Expand Down
12 changes: 12 additions & 0 deletions activemq-cpp/src/main/activemq/commands/Message.h
Expand Up @@ -136,6 +136,18 @@ namespace commands{

virtual bool equals( const DataStructure* value ) const;

/**
* Create a Pointer based copy of this message. Useful for chaining a clone
* operation with other operation such as casting to a cms Message type.
*
* Pointer<cms::Message> cmsMsg = message->copy().dynamic_cast<cms::Message>();
*
* @returns a Pointer<Message> which is a duplicate of this object.
*/
Pointer<Message> copy() const {
return Pointer<Message>(this->cloneDataStructure());
}

/**
* Handles the marshaling of the objects properties into the
* internal byte array before the object is marshaled to the
Expand Down
14 changes: 14 additions & 0 deletions activemq-cpp/src/main/activemq/core/ActiveMQConnection.cpp
Expand Up @@ -145,6 +145,7 @@ namespace core{
std::auto_ptr<RedeliveryPolicy> defaultRedeliveryPolicy;

cms::ExceptionListener* exceptionListener;
cms::MessageTransformer* transformer;

Pointer<commands::ConnectionInfo> connectionInfo;
Pointer<commands::BrokerInfo> brokerInfo;
Expand Down Expand Up @@ -190,6 +191,7 @@ namespace core{
defaultPrefetchPolicy(NULL),
defaultRedeliveryPolicy(NULL),
exceptionListener(NULL),
transformer(NULL),
connectionInfo(),
brokerInfo(),
brokerWireFormatInfo(),
Expand Down Expand Up @@ -400,6 +402,8 @@ cms::Session* ActiveMQConnection::createSession(cms::Session::AcknowledgeMode ac
Pointer<ActiveMQSessionKernel> session(new ActiveMQSessionKernel(
this, getNextSessionId(), ackMode, *this->config->properties));

session->setMessageTransformer(this->config->transformer);

this->addSession(session);

return new ActiveMQSession(session);
Expand Down Expand Up @@ -1209,6 +1213,16 @@ cms::ExceptionListener* ActiveMQConnection::getExceptionListener() const {
return this->config->exceptionListener;
}

////////////////////////////////////////////////////////////////////////////////
void ActiveMQConnection::setMessageTransformer(cms::MessageTransformer* transformer) {
this->config->transformer = transformer;
}

////////////////////////////////////////////////////////////////////////////////
cms::MessageTransformer* ActiveMQConnection::getMessageTransformer() const {
return this->config->transformer;
}

////////////////////////////////////////////////////////////////////////////////
void ActiveMQConnection::setPrefetchPolicy(PrefetchPolicy* policy) {
this->config->defaultPrefetchPolicy.reset(policy);
Expand Down
10 changes: 10 additions & 0 deletions activemq-cpp/src/main/activemq/core/ActiveMQConnection.h
Expand Up @@ -295,6 +295,16 @@ namespace core{
*/
virtual void setExceptionListener(cms::ExceptionListener* listener);

/**
* {@inheritDoc}
*/
virtual void setMessageTransformer(cms::MessageTransformer* transformer);

/**
* {@inheritDoc}
*/
virtual cms::MessageTransformer* getMessageTransformer() const;

public: // Configuration Options

/**
Expand Down
17 changes: 17 additions & 0 deletions activemq-cpp/src/main/activemq/core/ActiveMQConnectionFactory.cpp
Expand Up @@ -16,6 +16,7 @@
*/
#include "ActiveMQConnectionFactory.h"

#include <cms/MessageTransformer.h>
#include <decaf/net/URI.h>
#include <decaf/util/Properties.h>
#include <decaf/lang/Boolean.h>
Expand Down Expand Up @@ -81,6 +82,7 @@ namespace core{
unsigned int producerWindowSize;

cms::ExceptionListener* defaultListener;
cms::MessageTransformer* defaultTransformer;
std::auto_ptr<PrefetchPolicy> defaultPrefetchPolicy;
std::auto_ptr<RedeliveryPolicy> defaultRedeliveryPolicy;

Expand All @@ -100,6 +102,7 @@ namespace core{
closeTimeout(15000),
producerWindowSize(0),
defaultListener(NULL),
defaultTransformer(NULL),
defaultPrefetchPolicy(new DefaultPrefetchPolicy()),
defaultRedeliveryPolicy(new DefaultRedeliveryPolicy()) {
}
Expand Down Expand Up @@ -370,6 +373,10 @@ void ActiveMQConnectionFactory::configureConnection(ActiveMQConnection* connecti
if (this->settings->defaultListener) {
connection->setExceptionListener(this->settings->defaultListener);
}

if (this->settings->defaultTransformer) {
connection->setMessageTransformer(this->settings->defaultTransformer);
}
}

////////////////////////////////////////////////////////////////////////////////
Expand Down Expand Up @@ -427,6 +434,16 @@ cms::ExceptionListener* ActiveMQConnectionFactory::getExceptionListener() const
return this->settings->defaultListener;
}

////////////////////////////////////////////////////////////////////////////////
void ActiveMQConnectionFactory::setMessageTransformer(cms::MessageTransformer* transformer) {
this->settings->defaultTransformer = transformer;
}

////////////////////////////////////////////////////////////////////////////////
cms::MessageTransformer* ActiveMQConnectionFactory::getMessageTransformer() const {
return this->settings->defaultTransformer;
}

////////////////////////////////////////////////////////////////////////////////
void ActiveMQConnectionFactory::setPrefetchPolicy(PrefetchPolicy* policy) {
this->settings->defaultPrefetchPolicy.reset(policy);
Expand Down
20 changes: 18 additions & 2 deletions activemq-cpp/src/main/activemq/core/ActiveMQConnectionFactory.h
Expand Up @@ -188,15 +188,31 @@ namespace core{
* @param listener
* The listener to set on the connection or NULL for no listener.
*/
void setExceptionListener(cms::ExceptionListener* listener);
virtual void setExceptionListener(cms::ExceptionListener* listener);

/**
* Returns the currently set ExceptionListener that will be set on any new Connection
* instance that is created by this factory.
*
* @return a pointer to a CMS ExceptionListener instance or NULL if not set.
*/
cms::ExceptionListener* getExceptionListener() const;
virtual cms::ExceptionListener* getExceptionListener() const;

/**
* Set an MessageTransformer instance that is passed on to all Connection objects created from
* this ConnectionFactory
*
* @param transformer
* Pointer to the cms::MessageTransformer to set on all newly created Connection objects.
*/
virtual void setMessageTransformer(cms::MessageTransformer* transformer);

/**
* Gets the currently configured MessageTransformer for this ConnectionFactory.
*
* @returns the pointer to the currently set cms::MessageTransformer.
*/
virtual cms::MessageTransformer* getMessageTransformer() const;

/**
* Sets the PrefetchPolicy instance that this factory should use when it creates
Expand Down
10 changes: 10 additions & 0 deletions activemq-cpp/src/main/activemq/core/ActiveMQConsumer.cpp
Expand Up @@ -189,3 +189,13 @@ const Pointer<commands::ConsumerId>& ActiveMQConsumer::getConsumerId() const {
decaf::lang::Exception* ActiveMQConsumer::getFailureError() const {
return this->config->kernel->getFailureError();
}

////////////////////////////////////////////////////////////////////////////////
void ActiveMQConsumer::setMessageTransformer(cms::MessageTransformer* transformer) {
this->config->kernel->setMessageTransformer(transformer);
}

////////////////////////////////////////////////////////////////////////////////
cms::MessageTransformer* ActiveMQConsumer::getMessageTransformer() const {
return this->config->kernel->getMessageTransformer();
}
4 changes: 4 additions & 0 deletions activemq-cpp/src/main/activemq/core/ActiveMQConsumer.h
Expand Up @@ -81,6 +81,10 @@ namespace core{

virtual std::string getMessageSelector() const;

virtual void setMessageTransformer(cms::MessageTransformer* transformer);

virtual cms::MessageTransformer* getMessageTransformer() const;

public:

/**
Expand Down
8 changes: 8 additions & 0 deletions activemq-cpp/src/main/activemq/core/ActiveMQProducer.h
Expand Up @@ -165,6 +165,14 @@ namespace core{
return this->kernel->getSendTimeout();
}

virtual void setMessageTransformer(cms::MessageTransformer* transformer) {
this->kernel->setMessageTransformer(transformer);
}

virtual cms::MessageTransformer* getMessageTransformer() const {
return this->kernel->getMessageTransformer();
}

public:

/**
Expand Down
20 changes: 20 additions & 0 deletions activemq-cpp/src/main/activemq/core/ActiveMQSession.h
Expand Up @@ -149,6 +149,26 @@ namespace core{
return this->kernel->getExceptionListener();
}

/**
* Set an MessageTransformer instance that is passed on to all MessageProducer and MessageConsumer
* objects created from this Session.
*
* @param transformer
* Pointer to the cms::MessageTransformer to set on all MessageConsumers and MessageProducers.
*/
virtual void setMessageTransformer(cms::MessageTransformer* transformer) {
this->kernel->setMessageTransformer(transformer);
}

/**
* Gets the currently configured MessageTransformer for this Session.
*
* @returns the pointer to the currently set cms::MessageTransformer.
*/
virtual cms::MessageTransformer* getMessageTransformer() const {
return this->kernel->getMessageTransformer();
}

/**
* Gets the Session Information object for this session, if the
* session is closed than this method throws an exception.
Expand Down

0 comments on commit b528e8a

Please sign in to comment.