ARTEMIS-3623 preserve type of numeric extraProperties
This commit is contained in:
parent
2e89dc25b6
commit
d02c8cd16f
|
@ -872,7 +872,12 @@ public abstract class AMQPMessage extends RefCountMessage implements org.apache.
|
|||
TypedProperties extraProperties = getExtraProperties();
|
||||
if (extraProperties != null) {
|
||||
extraProperties.forEach((s, o) -> {
|
||||
map.put(extraPropertiesPrefix + s.toString(), JsonUtil.truncate(o.toString(), valueSizeLimit));
|
||||
if (o instanceof Number) {
|
||||
// keep fields like _AMQ_ACTUAL_EXPIRY in their original type
|
||||
map.put(extraPropertiesPrefix + s.toString(), o);
|
||||
} else {
|
||||
map.put(extraPropertiesPrefix + s.toString(), JsonUtil.truncate(o.toString(), valueSizeLimit));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -2522,6 +2522,22 @@ public class AMQPMessageTest {
|
|||
assertEquals(org.apache.activemq.artemis.api.core.Message.TEXT_TYPE, cd.get(CompositeDataConstants.TYPE));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testToPropertyMap() throws Exception {
|
||||
Message protonMessage = Message.Factory.create();
|
||||
AMQPStandardMessage decoded = encodeAndDecodeMessage(protonMessage);
|
||||
TypedProperties props = decoded.createExtraProperties();
|
||||
props.putSimpleStringProperty(new SimpleString("firstString"), new SimpleString("firstValue"));
|
||||
props.putLongProperty(new SimpleString("secondLong"), 1234567);
|
||||
|
||||
// same as toPropertyMap(false,5)
|
||||
Map<String, Object> map = decoded.toPropertyMap(-1);
|
||||
|
||||
assertEquals(2, map.size());
|
||||
assertEquals(map.get("firstString"), "firstValue");
|
||||
assertEquals(map.get("secondLong"), 1234567L);
|
||||
}
|
||||
|
||||
//----- Test Support ------------------------------------------------------//
|
||||
|
||||
private MessageImpl createProtonMessage() {
|
||||
|
|
Loading…
Reference in New Issue