Ensures that can parse amqp headers when they are a list; fixes gh-789

This commit is contained in:
Marcin Grzejszczak
2018-11-08 20:04:35 +01:00
parent 182aa430b5
commit 525bc4eead

View File

@@ -76,7 +76,7 @@ public class SpringAmqpStubMessages implements
.withBody(((String) payload).getBytes())
.andProperties(
MessagePropertiesBuilder.newInstance()
.setContentType((String) headers.get("contentType"))
.setContentType(header(headers, "contentType"))
.copyHeaders(headers).build())
.build();
if (headers != null && headers.containsKey(DEFAULT_CLASSID_FIELD_NAME)) {
@@ -84,11 +84,25 @@ public class SpringAmqpStubMessages implements
}
if (headers != null && headers.containsKey(AmqpHeaders.RECEIVED_ROUTING_KEY)) {
message.getMessageProperties()
.setReceivedRoutingKey((String) headers.get(AmqpHeaders.RECEIVED_ROUTING_KEY));
.setReceivedRoutingKey(header(headers, AmqpHeaders.RECEIVED_ROUTING_KEY));
}
send(message, destination);
}
private String header(Map<String, Object> headers, String headerName) {
if (headers == null) {
return "";
}
Object value = headers.get(headerName);
if (value instanceof String) {
return (String) value;
} else if (value instanceof Iterable) {
Iterable values = ((Iterable) value);
return values.iterator().hasNext() ? (String) values.iterator().next() : "";
}
return value.toString();
}
@Override
public void send(Message message, String destination) {
final String routingKey = message.getMessageProperties().getReceivedRoutingKey();