diff --git a/spring-cloud-contract-spec/src/main/groovy/org/springframework/cloud/contract/spec/ContractStorer.java b/spring-cloud-contract-spec/src/main/groovy/org/springframework/cloud/contract/spec/ContractStorer.java index dc94ffb2d7..1df2b4dda9 100644 --- a/spring-cloud-contract-spec/src/main/groovy/org/springframework/cloud/contract/spec/ContractStorer.java +++ b/spring-cloud-contract-spec/src/main/groovy/org/springframework/cloud/contract/spec/ContractStorer.java @@ -4,7 +4,7 @@ import java.util.HashMap; import java.util.Map; /** - * Defines how to store converted contracts to a String representation + * Defines how to store converted contracts to a byte array representation * that can be stored to drive * * @author Marcin Grzejszczak @@ -15,11 +15,11 @@ public interface ContractStorer { * Stores the contracts as a map of filename and String * * @param contracts - to convert - * @return mapping of filename to converted String representation of the contract + * @return mapping of filename to converted byte array representation of the contract */ - default Map storeAsString(T contracts) { - Map map = new HashMap<>(); - map.put(String.valueOf(Math.abs(hashCode())), contracts.toString()); + default Map store(T contracts) { + Map map = new HashMap<>(); + map.put(String.valueOf(Math.abs(hashCode())), contracts.toString().getBytes()); return map; } } diff --git a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/groovy/org/springframework/cloud/contract/verifier/spec/pact/PactContractConverter.groovy b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/groovy/org/springframework/cloud/contract/verifier/spec/pact/PactContractConverter.groovy index af0e3ea9e9..834d74e55a 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/groovy/org/springframework/cloud/contract/verifier/spec/pact/PactContractConverter.groovy +++ b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/groovy/org/springframework/cloud/contract/verifier/spec/pact/PactContractConverter.groovy @@ -77,9 +77,9 @@ class PactContractConverter implements ContractConverter> { } @Override - Map storeAsString(Collection contracts) { + Map store(Collection contracts) { return contracts.collectEntries { - return [(name(it)) : JsonOutput.prettyPrint(JsonOutput.toJson(it.toMap(PactSpecVersion.V3)))] + return [(name(it)) : JsonOutput.prettyPrint(JsonOutput.toJson(it.toMap(PactSpecVersion.V3))).bytes] } } diff --git a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/groovy/org/springframework/cloud/contract/verifier/spec/pact/PactContractConverterSpec.groovy b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/groovy/org/springframework/cloud/contract/verifier/spec/pact/PactContractConverterSpec.groovy index 39e87e7674..0052e0c2f5 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/groovy/org/springframework/cloud/contract/verifier/spec/pact/PactContractConverterSpec.groovy +++ b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/groovy/org/springframework/cloud/contract/verifier/spec/pact/PactContractConverterSpec.groovy @@ -424,14 +424,14 @@ class PactContractConverterSpec extends Specification { and: Collection pacts = converter.convertTo(contracts) when: - Map strings = converter.storeAsString(pacts) + Map strings = converter.store(pacts) then: strings.size() == 1 strings.keySet().first().startsWith("10-04-pact-consumer_10-05-pact-producer_") strings.keySet().first().endsWith(".json") JSONAssert.assertEquals( new File("src/test/resources/contracts/grouped/shouldWorkWithBeer.json").text, - strings.values().first(), false) + new String(strings.values().first()), false) } def "should convert from pact v2 to two SC contracts"() { diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/converter/YamlContractConverter.groovy b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/converter/YamlContractConverter.groovy index 23abecf05c..9c941a374b 100644 --- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/converter/YamlContractConverter.groovy +++ b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/converter/YamlContractConverter.groovy @@ -52,10 +52,10 @@ class YamlContractConverter implements ContractConverter> { } @Override - Map storeAsString(List contracts) { + Map store(List contracts) { return contracts.collectEntries { return [(name(it)) : - this.mapper.writeValueAsString(it)] + this.mapper.writeValueAsString(it).bytes] } } diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/util/ToFileContractsTransformer.groovy b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/util/ToFileContractsTransformer.groovy index 401d171bcb..41ee952e71 100644 --- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/util/ToFileContractsTransformer.groovy +++ b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/util/ToFileContractsTransformer.groovy @@ -75,16 +75,16 @@ final class ToFileContractsTransformer { ContractConverter contractConverter = (ContractConverter) name.newInstance() Collection converted = contractConverter.convertTo(contracts) log.info("Successfully converted contracts definitions") - Map stored = contractConverter.storeAsString(converted) + Map stored = contractConverter.store(converted) File outputFolder = new File(outputPath) outputFolder.mkdirs() int i = 1 - Set> entries = stored.entrySet() + Set> entries = stored.entrySet() log.info("Will convert [" + entries.size() + "] contracts") List files = new ArrayList<>() - for (Map.Entry entry : entries) { + for (Map.Entry entry : entries) { File outputFile = new File(outputFolder, entry.getKey()) - Files.write(outputFile.toPath(), entry.getValue().getBytes()) + Files.write(outputFile.toPath(), entry.getValue()) log.info("[" + i + "/" + entries.size() + "] Successfully stored [" + outputFile.getName() + "]") files.add(outputFile) } diff --git a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/converter/YamlContractConverterSpec.groovy b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/converter/YamlContractConverterSpec.groovy index 039bb82f53..5fa4734f89 100644 --- a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/converter/YamlContractConverterSpec.groovy +++ b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/converter/YamlContractConverterSpec.groovy @@ -616,7 +616,7 @@ priority: null ignored: false ''' when: - Map strings = converter.storeAsString([ + Map strings = converter.store([ new YamlContract( name: "post1", request: new YamlContract.Request(method: "POST", url: "/users/1"), @@ -629,8 +629,8 @@ ignored: false ]) then: strings.size() == 2 - strings["post1.yml"].trim() == expectedYaml1.trim() - strings["post2.yml"].trim() == expectedYaml2.trim() + new String(strings["post1.yml"]).trim() == expectedYaml1.trim() + new String(strings["post2.yml"]).trim() == expectedYaml2.trim() } def "should parse messaging contract for [#file]"() {