diff --git a/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/messaging/amqp/SpringAmqpStubMessages.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/messaging/amqp/SpringAmqpStubMessages.java index 6d4a271abd..93c8b6c313 100644 --- a/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/messaging/amqp/SpringAmqpStubMessages.java +++ b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/messaging/amqp/SpringAmqpStubMessages.java @@ -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 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();