convertContents(String rootName, ContractMetadata content);
+
+ /**
+ * @param inputFileName - name of the input file
+ * @return the name of the converted stub file. If you have multiple contracts in a
+ * single file then a prefix will be added to the generated file. If you provide the
+ * {@link Contract#name} field then that field will override the generated file name.
+ *
+ * Example: name of file with 2 contracts is {@code foo.groovy}, it will be converted
+ * by the implementation to {@code foo.json}. The recursive file converter will create
+ * two files {@code 0_foo.json} and {@code 1_foo.json}
+ */
+ String generateOutputFileNameForInput(String inputFileName);
+
+ /**
+ * Describes the file extension 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/groovy/org/springframework/cloud/contract/verifier/wiremock/DslToWireMockConverter.groovy b/spring-cloud-contract-tools/spring-cloud-contract-converters/src/main/groovy/org/springframework/cloud/contract/verifier/wiremock/DslToWireMockConverter.groovy
index cdfc9eb186..85fc32e44e 100644
--- a/spring-cloud-contract-tools/spring-cloud-contract-converters/src/main/groovy/org/springframework/cloud/contract/verifier/wiremock/DslToWireMockConverter.groovy
+++ b/spring-cloud-contract-tools/spring-cloud-contract-converters/src/main/groovy/org/springframework/cloud/contract/verifier/wiremock/DslToWireMockConverter.groovy
@@ -28,11 +28,6 @@ import org.springframework.cloud.contract.verifier.converter.StubGenerator
@CompileStatic
abstract class DslToWireMockConverter implements StubGenerator {
- @Override
- boolean canHandleFileName(String fileName) {
- return fileName.endsWith('.groovy')
- }
-
@Override
String generateOutputFileNameForInput(String inputFileName) {
return inputFileName.replaceAll(extension(inputFileName), 'json')
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/main/java/org/springframework/cloud/contract/maven/verifier/ConvertMojo.java b/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/main/java/org/springframework/cloud/contract/maven/verifier/ConvertMojo.java
index 7469d9f88a..1bef296575 100644
--- a/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/main/java/org/springframework/cloud/contract/maven/verifier/ConvertMojo.java
+++ b/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/main/java/org/springframework/cloud/contract/maven/verifier/ConvertMojo.java
@@ -38,10 +38,10 @@ import org.springframework.cloud.contract.verifier.converter.RecursiveFilesConve
import org.springframework.cloud.contract.verifier.converter.ToYamlConverter;
/**
- * Convert Spring Cloud Contract Verifier contracts into WireMock stubs mappings.
+ * Convert Spring Cloud Contract Verifier contracts into stubs mappings.
*
* This goal allows you to generate `stubs-jar` or execute `spring-cloud-contract:run`
- * with generated WireMock mappings.
+ * with generated mappings.
*
* @author Mariusz Smykula
*/
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/groovy/org/springframework/cloud/contract/stubrunner/PactStubDownloaderBuilder.java b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/groovy/org/springframework/cloud/contract/stubrunner/PactStubDownloaderBuilder.java
index 60f76fa4e4..f1cdf47823 100644
--- a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/groovy/org/springframework/cloud/contract/stubrunner/PactStubDownloaderBuilder.java
+++ b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/groovy/org/springframework/cloud/contract/stubrunner/PactStubDownloaderBuilder.java
@@ -47,9 +47,6 @@ import org.jetbrains.annotations.NotNull;
import org.springframework.cloud.contract.spec.Contract;
import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties;
-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.spec.pact.PactContractConverter;
import org.springframework.core.io.AbstractResource;
import org.springframework.core.io.Resource;
@@ -216,32 +213,16 @@ class PactStubDownloader implements StubDownloader {
log.debug("Converted pact file [" + file + "] to [" + contracts.size()
+ "] contracts");
}
- StubGeneratorProvider provider = new StubGeneratorProvider();
- Collection stubGenerators = provider
- .converterForName(ARTIFICIAL_NAME_ENDING_WITH_GROOVY);
- if (log.isDebugEnabled()) {
- log.debug("Found following matching stub generators " + stubGenerators);
- }
- for (StubGenerator stubGenerator : stubGenerators) {
- Map map = stubGenerator.convertContents(file.getName(),
- new ContractMetadata(file.toPath(), false, contracts.size(), null,
- contracts));
- for (Map.Entry entry : map.entrySet()) {
- String value = entry.getValue();
- File mapping = new File(mappingsFolder,
- StringUtils.stripFilenameExtension(file.getName()) + "_"
- + Math.abs(entry.getKey().hashCode()) + ".json");
- storeFile(mapping.toPath(), value.getBytes());
- }
- }
+ MappingGenerator.toMappings(file, contracts, mappingsFolder);
}
- private void storeFile(Path path, byte[] contents) {
+ private Path storeFile(Path path, byte[] contents) {
try {
- Files.write(path, contents);
+ Path storedPath = Files.write(path, contents);
if (log.isDebugEnabled()) {
log.debug("Stored file [" + path.toString() + "]");
}
+ return storedPath;
}
catch (IOException e) {
throw new IllegalStateException(e);