From 525bc4eeadb8e495001a3ba58b436f97cc78acba Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Thu, 8 Nov 2018 20:04:35 +0100 Subject: [PATCH 1/2] Ensures that can parse amqp headers when they are a list; fixes gh-789 --- .../messaging/amqp/SpringAmqpStubMessages.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) 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(); From 14d968a63f5159fd9c69e7eb9e46f945fbc8ac4d Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Sun, 28 Oct 2018 14:07:28 +0100 Subject: [PATCH 2/2] Should pick all the properties --- .../plugin/ExtensionToProperties.groovy | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/ExtensionToProperties.groovy b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/ExtensionToProperties.groovy index efdb8c2ad2..6b199b3abc 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/ExtensionToProperties.groovy +++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/ExtensionToProperties.groovy @@ -13,24 +13,24 @@ class ExtensionToProperties { protected static ContractVerifierConfigProperties fromExtension(ContractVerifierExtension extension) { return new ContractVerifierConfigProperties( - targetFramework: extension.targetFramework, - testMode: extension.testMode, - basePackageForTests: extension.basePackageForTests, - baseClassForTests: extension.baseClassForTests, - nameSuffixForTests: extension.nameSuffixForTests, - ruleClassForTests: extension.ruleClassForTests, - excludedFiles: extension.excludedFiles, - ignoredFiles: extension.ignoredFiles, - imports: extension.imports, - staticImports: extension.staticImports, - contractsDslDir: extension.contractsDslDir, - generatedTestSourcesDir: extension.generatedTestSourcesDir, - stubsOutputDir: extension.stubsOutputDir, - stubsSuffix: extension.stubsSuffix, - assertJsonSize: extension.assertJsonSize, - packageWithBaseClasses: extension.packageWithBaseClasses, - baseClassMappings: extension.baseClassMappings, - excludeBuildFolders: extension.excludeBuildFolders + targetFramework: extension.getTargetFramework(), + testMode: extension.getTestMode(), + basePackageForTests: extension.getBasePackageForTests(), + baseClassForTests: extension.getBaseClassForTests(), + nameSuffixForTests: extension.getNameSuffixForTests(), + ruleClassForTests: extension.getRuleClassForTests(), + excludedFiles: extension.getExcludedFiles(), + ignoredFiles: extension.getIgnoredFiles(), + imports: extension.getImports(), + staticImports: extension.getStaticImports(), + contractsDslDir: extension.getContractsDslDir(), + generatedTestSourcesDir: extension.getGeneratedTestSourcesDir(), + stubsOutputDir: extension.getStubsOutputDir(), + stubsSuffix: extension.getStubsSuffix(), + assertJsonSize: extension.getAssertJsonSize(), + packageWithBaseClasses: extension.getPackageWithBaseClasses(), + baseClassMappings: extension.getBaseClassMappings(), + excludeBuildFolders: extension.getExcludeBuildFolders() ) } }