Копировать свойства сообщения JMS

есть ли простой способ копирования свойств из одного сообщения JMS в другое?

Я могу представить что-то вроде этого:

private void copyMessageProperties (Message msg1, Message msg2) throws JMSException {
    Enumeration srcProperties = msg1.getPropertyNames();
    while (srcProperties.hasMoreElements()) {
        String propertyName = (String) srcProperties.nextElement ();

        // Now try to read and set
        try {
            Object obj = msg1.getObjectProperty (propertyName);
            msg2.setObjectProperty (propertyName, obj);
            continue;
        } catch (Exception e) {}
        try {
            String str = msg1.getStringProperty (propertyName);
            msg2.setStringProperty (propertyName, str);
            continue;
            ...
        }
    }
}

но это серьезно некрасиво. Должен быть другой способ!--2-->

1 ответов


вот решение, которое я получил...

@SuppressWarnings("unchecked")
private static HashMap<String, Object> getMessageProperties(Message msg) throws JMSException 
{
   HashMap<String, Object> properties = new HashMap<String, Object> ();
   Enumeration srcProperties = msg.getPropertyNames();
   while (srcProperties.hasMoreElements()) {
       String propertyName = (String)srcProperties.nextElement ();
       properties.put(propertyName, msg.getObjectProperty (propertyName));
   }
   return properties;
}

private static void setMessageProperties(Message msg, HashMap<String, Object> properties) throws JMSException {
    if (properties == null) {
        return;
    }
    for (Map.Entry<String, Object> entry : properties.entrySet()) {
        String propertyName = entry.getKey ();
        Object value = entry.getValue ();
        msg.setObjectProperty(propertyName, value);
    }
}