in activemq-cpp/src/main/activemq/util/ActiveMQMessageTransformation.cpp [257:331]
void ActiveMQMessageTransformation::copyProperties(const cms::Message* fromMessage, cms::Message* toMessage) {
if (fromMessage == NULL) {
throw NullPointerException(__FILE__, __LINE__, "Provided source cms::Message pointer was NULL");
}
if (toMessage == NULL) {
throw NullPointerException(__FILE__, __LINE__, "Provided destination cms::Message pointer was NULL");
}
if (fromMessage->getCMSDestination() != NULL) {
const ActiveMQDestination* transformed = NULL;
if (transformDestination(fromMessage->getCMSDestination(), &transformed)) {
toMessage->setCMSDestination(dynamic_cast<const cms::Destination*>(transformed));
delete transformed;
} else {
toMessage->setCMSDestination(fromMessage->getCMSDestination());
}
}
if (fromMessage->getCMSReplyTo() != NULL) {
const ActiveMQDestination* transformed = NULL;
if (transformDestination(fromMessage->getCMSReplyTo(), &transformed)) {
toMessage->setCMSReplyTo(dynamic_cast<const cms::Destination*>(transformed));
delete transformed;
} else {
toMessage->setCMSReplyTo(fromMessage->getCMSReplyTo());
}
}
toMessage->setCMSMessageID(fromMessage->getCMSMessageID());
toMessage->setCMSCorrelationID(fromMessage->getCMSCorrelationID());
toMessage->setCMSDeliveryMode(fromMessage->getCMSDeliveryMode());
toMessage->setCMSRedelivered(fromMessage->getCMSRedelivered());
toMessage->setCMSType(fromMessage->getCMSType());
toMessage->setCMSExpiration(fromMessage->getCMSExpiration());
toMessage->setCMSPriority(fromMessage->getCMSPriority());
toMessage->setCMSTimestamp(fromMessage->getCMSTimestamp());
std::vector<std::string> propertyNames = fromMessage->getPropertyNames();
std::vector<std::string>::iterator iter = propertyNames.begin();
for(; iter != propertyNames.end() ; ++iter) {
std::string name = *iter;
cms::Message::ValueType propertyType = fromMessage->getPropertyValueType(name);
switch(propertyType) {
case cms::Message::BOOLEAN_TYPE:
toMessage->setBooleanProperty(name, fromMessage->getBooleanProperty(name));
break;
case cms::Message::BYTE_TYPE:
toMessage->setByteProperty(name, fromMessage->getByteProperty(name));
break;
case cms::Message::SHORT_TYPE:
toMessage->setShortProperty(name, fromMessage->getShortProperty(name));
break;
case cms::Message::INTEGER_TYPE:
toMessage->setIntProperty(name, fromMessage->getIntProperty(name));
break;
case cms::Message::LONG_TYPE:
toMessage->setLongProperty(name, fromMessage->getLongProperty(name));
break;
case cms::Message::FLOAT_TYPE:
toMessage->setFloatProperty(name, fromMessage->getFloatProperty(name));
break;
case cms::Message::DOUBLE_TYPE:
toMessage->setDoubleProperty(name, fromMessage->getDoubleProperty(name));
break;
case cms::Message::STRING_TYPE:
toMessage->setStringProperty(name, fromMessage->getStringProperty(name));
break;
default:
break;
}
}
}