diff --git a/src/main/groovy/io/codearte/accurest/maven/AccurestConverter.groovy b/src/main/groovy/io/codearte/accurest/maven/AccurestConverter.groovy deleted file mode 100644 index dba4190397..0000000000 --- a/src/main/groovy/io/codearte/accurest/maven/AccurestConverter.groovy +++ /dev/null @@ -1,17 +0,0 @@ -package io.codearte.accurest.maven; - -import groovy.transform.CompileStatic; -import groovy.transform.PackageScope; -import io.codearte.accurest.config.AccurestConfigProperties; -import io.codearte.accurest.wiremock.DslToWireMockClientConverter; -import io.codearte.accurest.wiremock.RecursiveFilesConverter; - -@CompileStatic -class AccurestConverter { - - static void convertAccurestToStubs(AccurestConfigProperties config) { - RecursiveFilesConverter converter = new RecursiveFilesConverter(new DslToWireMockClientConverter(), config) - converter.processFiles() - } - -} diff --git a/src/main/groovy/io/codearte/accurest/maven/ConvertMojo.groovy b/src/main/groovy/io/codearte/accurest/maven/ConvertMojo.groovy index d90cbc7133..662911053e 100644 --- a/src/main/groovy/io/codearte/accurest/maven/ConvertMojo.groovy +++ b/src/main/groovy/io/codearte/accurest/maven/ConvertMojo.groovy @@ -2,35 +2,71 @@ package io.codearte.accurest.maven import groovy.transform.CompileStatic import io.codearte.accurest.config.AccurestConfigProperties +import io.codearte.accurest.wiremock.DslToWireMockClientConverter +import io.codearte.accurest.wiremock.RecursiveFilesConverter +import org.apache.maven.execution.MavenSession +import org.apache.maven.model.path.PathTranslator import org.apache.maven.plugin.AbstractMojo import org.apache.maven.plugin.MojoExecutionException import org.apache.maven.plugin.MojoFailureException +import org.apache.maven.plugins.annotations.Component +import org.apache.maven.plugins.annotations.LifecyclePhase import org.apache.maven.plugins.annotations.Mojo import org.apache.maven.plugins.annotations.Parameter -import static io.codearte.accurest.maven.AccurestConverter.convertAccurestToStubs +import javax.inject.Inject -@Mojo(name = 'convert', requiresProject = false) +@Mojo(name = 'convert', requiresProject = false, defaultPhase = LifecyclePhase.PROCESS_RESOURCES) @CompileStatic -public class ConvertMojo extends AbstractMojo { +class ConvertMojo extends AbstractMojo { - @Parameter(property = 'contractsDir', defaultValue = '${basedir}') - private File contractsDir + @Parameter(defaultValue = '${basedir}', readonly = true, required = true) + private File baseDir - @Parameter(property = 'mappingsDir', defaultValue = '${basedir}') - private File mappingsDir + @Parameter(defaultValue = '${project.build.directory}', readonly = true, required = true) + private File projectBuildDirectory - public void execute() throws MojoExecutionException, MojoFailureException { + @Parameter(property = 'contractsDir') + private String contractsDir + + @Parameter(property = 'mappingsDir') + private String mappingsDir + + @Component + private MavenSession mavenSession + + private final PathTranslator translator + + @Inject + ConvertMojo(PathTranslator translator) { + this.translator = translator + } + + void execute() throws MojoExecutionException, MojoFailureException { AccurestConfigProperties config = new AccurestConfigProperties() - config.contractsDslDir = contractsDir - config.stubsOutputDir = mappingsDir + + config.contractsDslDir = resolveFile(baseDir, contractsDir, isInsideProject() ? 'src/test/accurest' : '') + config.stubsOutputDir = resolveFile(projectBuildDirectory, mappingsDir, isInsideProject() ? 'mappings' : '') log.info('Converting from accurest contracts written in GroovyDSL to WireMock stubs mappings') - log.info(" Accurest contracts directory: ${config.contractsDslDir.absolutePath}") - log.info("WireMock stubs mappings directory: ${config.stubsOutputDir.absolutePath}") + log.info(" Accurest contracts directory: ${config.contractsDslDir}") + log.info("WireMock stubs mappings directory: ${config.stubsOutputDir}") - convertAccurestToStubs(config) + RecursiveFilesConverter converter = new RecursiveFilesConverter(new DslToWireMockClientConverter(), config) + converter.processFiles() + } + + private boolean isInsideProject() { + mavenSession.getRequest().isProjectPresent() + } + + private File resolveFile(File baseDir, String requestedPath, String defaultPath) { + requestedPath ? alignToBaseDirectory(requestedPath, baseDir) : alignToBaseDirectory(defaultPath, baseDir) + } + + private File alignToBaseDirectory(String dir1, File dir) { + return new File(translator.alignToBaseDirectory(dir1, dir)) } } diff --git a/src/main/groovy/io/codearte/accurest/maven/GenerateStubsMojo.groovy b/src/main/groovy/io/codearte/accurest/maven/GenerateStubsMojo.groovy index 82ec235e0f..165dc96663 100644 --- a/src/main/groovy/io/codearte/accurest/maven/GenerateStubsMojo.groovy +++ b/src/main/groovy/io/codearte/accurest/maven/GenerateStubsMojo.groovy @@ -1,42 +1,19 @@ package io.codearte.accurest.maven import groovy.transform.CompileStatic -import io.codearte.accurest.config.AccurestConfigProperties -import io.codearte.accurest.wiremock.DslToWireMockClientConverter -import io.codearte.accurest.wiremock.RecursiveFilesConverter -import org.apache.maven.plugin.AbstractMojo -import org.apache.maven.plugin.MojoExecutionException -import org.apache.maven.plugin.MojoFailureException +import org.apache.maven.model.path.PathTranslator import org.apache.maven.plugins.annotations.LifecyclePhase import org.apache.maven.plugins.annotations.Mojo -import org.apache.maven.plugins.annotations.Parameter + +import javax.inject.Inject @Mojo(name = 'generateStubs', defaultPhase = LifecyclePhase.PROCESS_RESOURCES) @CompileStatic -public class GenerateStubsMojo extends AbstractMojo { +@Deprecated +class GenerateStubsMojo extends ConvertMojo { - @Parameter(defaultValue = '${basedir}', readonly = true, required = true) - private File baseDir - - @Parameter(defaultValue = '${project.build.directory}', readonly = true, required = true) - private File projectBuildDirectory - - @Parameter(defaultValue = '/src/test/accurest') - private String contractsDir - - @Parameter(defaultValue = 'mappings') - private String mappingsDir - - public void execute() throws MojoExecutionException, MojoFailureException { - AccurestConfigProperties config = new AccurestConfigProperties() - config.contractsDslDir = new File(baseDir, contractsDir) - config.stubsOutputDir = new File(projectBuildDirectory, mappingsDir) - - log.info('Accurest Plugin: Invoking GroovyDSL to WireMock client stubs conversion') - log.info("From '${config.contractsDslDir}' to '${config.stubsOutputDir}'") - - RecursiveFilesConverter converter = new RecursiveFilesConverter(new DslToWireMockClientConverter(), config) - converter.processFiles() + @Inject + GenerateStubsMojo(PathTranslator translator) { + super(translator) } - } diff --git a/src/main/groovy/io/codearte/accurest/maven/GenerateTestsMojo.groovy b/src/main/groovy/io/codearte/accurest/maven/GenerateTestsMojo.groovy index 1f642b109b..f13814382c 100644 --- a/src/main/groovy/io/codearte/accurest/maven/GenerateTestsMojo.groovy +++ b/src/main/groovy/io/codearte/accurest/maven/GenerateTestsMojo.groovy @@ -17,7 +17,7 @@ import static java.lang.String.format @Mojo(name = 'generateTests', defaultPhase = LifecyclePhase.GENERATE_TEST_SOURCES) @CompileStatic -public class GenerateTestsMojo extends AbstractMojo { +class GenerateTestsMojo extends AbstractMojo { @Parameter(defaultValue = '${basedir}', readonly = true, required = true) private File baseDir @@ -49,7 +49,7 @@ public class GenerateTestsMojo extends AbstractMojo { @Parameter private String nameSuffixForTests - public void execute() throws MojoExecutionException, MojoFailureException { + void execute() throws MojoExecutionException, MojoFailureException { log.info('Generating server tests source code for Accurest contract verification') AccurestConfigProperties config = new AccurestConfigProperties() diff --git a/src/main/groovy/io/codearte/accurest/maven/RunMojo.groovy b/src/main/groovy/io/codearte/accurest/maven/RunMojo.groovy index 82c1b49f8c..9a0e7b539a 100644 --- a/src/main/groovy/io/codearte/accurest/maven/RunMojo.groovy +++ b/src/main/groovy/io/codearte/accurest/maven/RunMojo.groovy @@ -15,7 +15,7 @@ import javax.inject.Inject @Mojo(name = 'run', requiresProject = false) @CompileStatic -public class RunMojo extends AbstractMojo { +class RunMojo extends AbstractMojo { @Parameter(defaultValue = '${repositorySystemSession}', readonly = true) private RepositorySystemSession repoSession @@ -38,12 +38,12 @@ public class RunMojo extends AbstractMojo { private final RemoteStubRunner remoteStubRunner @Inject - public RunMojo(LocalStubRunner localStubRunner, RemoteStubRunner remoteStubRunner) { + RunMojo(LocalStubRunner localStubRunner, RemoteStubRunner remoteStubRunner) { this.localStubRunner = localStubRunner this.remoteStubRunner = remoteStubRunner } - public void execute() throws MojoExecutionException, MojoFailureException { + void execute() throws MojoExecutionException, MojoFailureException { StubRunnerOptions options = new StubRunnerOptions(minPort, maxPort, "", false, stubsClassifier) log.debug("Launching StubRunner with args: $options") if (!stubs) { diff --git a/src/main/groovy/io/codearte/accurest/maven/stubrunner/AetherStubDownloaderFactory.groovy b/src/main/groovy/io/codearte/accurest/maven/stubrunner/AetherStubDownloaderFactory.groovy index 241b9a6cac..63f9e5bef0 100644 --- a/src/main/groovy/io/codearte/accurest/maven/stubrunner/AetherStubDownloaderFactory.groovy +++ b/src/main/groovy/io/codearte/accurest/maven/stubrunner/AetherStubDownloaderFactory.groovy @@ -14,13 +14,13 @@ import javax.inject.Singleton @Singleton @CompileStatic @Slf4j -public class AetherStubDownloaderFactory { +class AetherStubDownloaderFactory { private final MavenProject project private final RepositorySystem repoSystem @Inject - public AetherStubDownloaderFactory(RepositorySystem repoSystem, MavenProject project) { + AetherStubDownloaderFactory(RepositorySystem repoSystem, MavenProject project) { this.repoSystem = repoSystem this.project = project } diff --git a/src/test/java/io/codearte/accurest/maven/PluginIT.java b/src/test/java/io/codearte/accurest/maven/PluginIT.java index a13dcc4257..6dd0080e4c 100644 --- a/src/test/java/io/codearte/accurest/maven/PluginIT.java +++ b/src/test/java/io/codearte/accurest/maven/PluginIT.java @@ -35,7 +35,7 @@ public class PluginIT { .assertErrorFreeLog() .assertLogText("Generating server tests source code for Accurest contract verification") .assertLogText("Generated 1 test classes.") - .assertLogText("Accurest Plugin: Invoking GroovyDSL to WireMock client stubs conversion") + .assertLogText("Converting from accurest contracts written in GroovyDSL to WireMock stubs mappings") .assertLogText("Creating new json") .assertErrorFreeLog(); } @@ -48,7 +48,7 @@ public class PluginIT { .assertErrorFreeLog() .assertLogText("Generating server tests source code for Accurest contract verification") .assertLogText("Generated 1 test classes.") - .assertLogText("Accurest Plugin: Invoking GroovyDSL to WireMock client stubs conversion") + .assertLogText("Converting from accurest contracts written in GroovyDSL to WireMock stubs mappings") .assertLogText("Creating new json") .assertErrorFreeLog(); } diff --git a/src/test/java/io/codearte/accurest/maven/PluginUnitTest.java b/src/test/java/io/codearte/accurest/maven/PluginUnitTest.java index 35ebfc472a..1a82b32990 100644 --- a/src/test/java/io/codearte/accurest/maven/PluginUnitTest.java +++ b/src/test/java/io/codearte/accurest/maven/PluginUnitTest.java @@ -22,21 +22,21 @@ public class PluginUnitTest { @Test public void shouldGenerateWireMockStubsInDefaultLocation() throws Exception { File basedir = resources.getBasedir("basic"); - maven.executeMojo(basedir, "generateStubs"); + maven.executeMojo(basedir, "convert"); assertFilesPresent(basedir, "target/mappings/Sample.json"); } @Test public void shouldGenerateWireMockFromStubsDirectory() throws Exception { File basedir = resources.getBasedir("withStubs"); - maven.executeMojo(basedir, "generateStubs", newParameter("contractsDir", "/src/test/resources/stubs")); + maven.executeMojo(basedir, "convert", newParameter("contractsDir", "src/test/resources/stubs")); assertFilesPresent(basedir, "target/mappings/Sample.json"); } @Test public void shouldGenerateWireMockStubsInSelectedLocation() throws Exception { File basedir = resources.getBasedir("basic"); - maven.executeMojo(basedir, "generateStubs", newParameter("mappingsDir", "foo")); + maven.executeMojo(basedir, "convert", newParameter("mappingsDir", "foo")); assertFilesPresent(basedir, "target/foo/Sample.json"); } diff --git a/src/test/projects/spring-boot-groovy/pom.xml b/src/test/projects/spring-boot-groovy/pom.xml index 12ba2e0d33..66077131b8 100644 --- a/src/test/projects/spring-boot-groovy/pom.xml +++ b/src/test/projects/spring-boot-groovy/pom.xml @@ -86,14 +86,14 @@ - generateStubs + convert generateTests com.ofg.twitter.place.BaseMockMvcTest - /src/test/resources/stubs + src/test/resources/stubs SPOCK Test diff --git a/src/test/projects/spring-boot-java/pom.xml b/src/test/projects/spring-boot-java/pom.xml index 7ca7455ae5..56ec273c19 100644 --- a/src/test/projects/spring-boot-java/pom.xml +++ b/src/test/projects/spring-boot-java/pom.xml @@ -75,7 +75,7 @@ - generateStubs + convert generateTests