diff --git a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/MappingGenerator.java b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/MappingGenerator.java index ee6a46ef59..60d708a6ac 100644 --- a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/MappingGenerator.java +++ b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/MappingGenerator.java @@ -31,6 +31,7 @@ import org.springframework.cloud.contract.spec.Contract; import org.springframework.cloud.contract.verifier.converter.StubGenerator; import org.springframework.cloud.contract.verifier.converter.StubGeneratorProvider; import org.springframework.cloud.contract.verifier.file.ContractMetadata; +import org.springframework.cloud.contract.verifier.wiremock.DslToWireMockClientConverter; import org.springframework.util.StringUtils; final class MappingGenerator { @@ -43,7 +44,7 @@ final class MappingGenerator { static Collection toMappings(File contractFile, Collection contracts, File mappingsFolder) { StubGeneratorProvider provider = new StubGeneratorProvider(); - Collection stubGenerators = provider.converterForName(contractFile); + Collection stubGenerators = provider.allOrDefault(new DslToWireMockClientConverter()); if (log.isDebugEnabled()) { log.debug("Found following matching stub generators " + stubGenerators); } diff --git a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/StubRunnerFactory.java b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/StubRunnerFactory.java index 61d6bb32d9..b26970e919 100644 --- a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/StubRunnerFactory.java +++ b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/StubRunnerFactory.java @@ -37,6 +37,7 @@ import org.springframework.cloud.contract.verifier.converter.RecursiveFilesConve import org.springframework.cloud.contract.verifier.converter.StubGenerator; import org.springframework.cloud.contract.verifier.converter.StubGeneratorProvider; import org.springframework.cloud.contract.verifier.messaging.MessageVerifier; +import org.springframework.cloud.contract.verifier.wiremock.DslToWireMockClientConverter; import org.springframework.core.io.Resource; import org.springframework.core.io.support.SpringFactoriesLoader; @@ -129,9 +130,10 @@ class StubRunnerFactory { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { - File fileToConvert = file.toFile(); - Collection stubGenerators = this.provider.converterForName(fileToConvert); - if (!stubGenerators.isEmpty() || this.wireMockHttpServerStub.isAccepted(fileToConvert)) { + File potentialStubMapping = file.toFile(); + Collection stubGenerators = this.provider + .allOrDefault(new DslToWireMockClientConverter()); + if (stubGenerators.stream().anyMatch(s -> s.canReadStubMapping(potentialStubMapping))) { if (log.isDebugEnabled()) { log.debug("Deleting file [" + file.toString() + "] since it contains a valid mapping."); } diff --git a/spring-cloud-contract-tools/spring-cloud-contract-converters/src/main/java/org/springframework/cloud/contract/verifier/converter/RecursiveFilesConverter.java b/spring-cloud-contract-tools/spring-cloud-contract-converters/src/main/java/org/springframework/cloud/contract/verifier/converter/RecursiveFilesConverter.java index 8d14171a44..cda061bf3c 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-converters/src/main/java/org/springframework/cloud/contract/verifier/converter/RecursiveFilesConverter.java +++ b/spring-cloud-contract-tools/spring-cloud-contract-converters/src/main/java/org/springframework/cloud/contract/verifier/converter/RecursiveFilesConverter.java @@ -119,8 +119,7 @@ public class RecursiveFilesConverter { log.debug("Will create a stub for contract [" + contract + "]"); } File sourceFile = contract.getPath().toFile(); - Collection stubGenerators = contract.getConvertedContract() != null - ? holder.allOrDefault(new DslToWireMockClientConverter()) : holder.converterForName(sourceFile); + Collection stubGenerators = holder.allOrDefault(new DslToWireMockClientConverter()); try { String path = sourceFile.getPath(); if (excludeBuildFolders && (matchesPath(path, "target") || matchesPath(path, "build"))) { diff --git a/spring-cloud-contract-tools/spring-cloud-contract-converters/src/main/java/org/springframework/cloud/contract/verifier/converter/StubGenerator.java b/spring-cloud-contract-tools/spring-cloud-contract-converters/src/main/java/org/springframework/cloud/contract/verifier/converter/StubGenerator.java index 3f26ff8efe..7ab7e37c72 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-converters/src/main/java/org/springframework/cloud/contract/verifier/converter/StubGenerator.java +++ b/spring-cloud-contract-tools/spring-cloud-contract-converters/src/main/java/org/springframework/cloud/contract/verifier/converter/StubGenerator.java @@ -33,12 +33,11 @@ import org.springframework.cloud.contract.verifier.file.ContractMetadata; public interface StubGenerator { /** - * @param file - file - * @return {@code true} if the converter can handle the file to convert it into a - * stub. + * @param mapping - potential stub mapping mapping + * @return {@code true} if this converter could have generated this mapping stub. */ - default boolean canHandleFileName(File file) { - return file.getName().endsWith(fileExtension()); + default boolean canReadStubMapping(File mapping) { + return mapping.getName().endsWith(fileExtension()); } /** @@ -92,8 +91,9 @@ public interface StubGenerator { String generateOutputFileNameForInput(String inputFileName); /** - * Describes the file extension that this stub generator will generate. - * @return string describing the file extension starting with a dot + * Describes the file extension of the generated mapping that this stub generator can + * handle. + * @return string describing the file extension */ default String fileExtension() { return ".json"; diff --git a/spring-cloud-contract-tools/spring-cloud-contract-converters/src/main/java/org/springframework/cloud/contract/verifier/converter/StubGeneratorProvider.java b/spring-cloud-contract-tools/spring-cloud-contract-converters/src/main/java/org/springframework/cloud/contract/verifier/converter/StubGeneratorProvider.java index 1fbe8e4065..2c9f6c6ece 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-converters/src/main/java/org/springframework/cloud/contract/verifier/converter/StubGeneratorProvider.java +++ b/spring-cloud-contract-tools/spring-cloud-contract-converters/src/main/java/org/springframework/cloud/contract/verifier/converter/StubGeneratorProvider.java @@ -16,12 +16,10 @@ package org.springframework.cloud.contract.verifier.converter; -import java.io.File; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; -import java.util.stream.Collectors; import org.springframework.core.io.support.SpringFactoriesLoader; @@ -43,11 +41,6 @@ public class StubGeneratorProvider { this.converters.addAll(converters); } - public Collection converterForName(final File file) { - return this.converters.stream().filter(stubGenerator -> stubGenerator.canHandleFileName(file)) - .collect(Collectors.toList()); - } - public Collection allOrDefault(StubGenerator defaultStubGenerator) { return this.converters.isEmpty() ? Collections.singletonList(defaultStubGenerator) : this.converters; } diff --git a/spring-cloud-contract-tools/spring-cloud-contract-converters/src/main/java/org/springframework/cloud/contract/verifier/wiremock/DslToWireMockConverter.java b/spring-cloud-contract-tools/spring-cloud-contract-converters/src/main/java/org/springframework/cloud/contract/verifier/wiremock/DslToWireMockConverter.java index c9dc4197a6..ed106685c9 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-converters/src/main/java/org/springframework/cloud/contract/verifier/wiremock/DslToWireMockConverter.java +++ b/spring-cloud-contract-tools/spring-cloud-contract-converters/src/main/java/org/springframework/cloud/contract/verifier/wiremock/DslToWireMockConverter.java @@ -53,11 +53,11 @@ public abstract class DslToWireMockConverter implements StubGenerator> { true } + stubGenerator.canReadStubMapping(_) >> { true } stubGenerator.convertContents(_, _) >> { throw new NullPointerException("Test conversion error") } @@ -195,7 +195,7 @@ org.springframework.cloud.contract.spec.Contract.make { return new StubGenerator() { @Override - boolean canHandleFileName(File fileName) { + boolean canReadStubMapping(File mapping) { return true }