replace generateStubs with convert (#5)

This commit is contained in:
Mariusz Smykuła
2016-04-15 23:36:29 +02:00
parent ba4765f23b
commit 30bb65b47e
10 changed files with 72 additions and 76 deletions

View File

@@ -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()
}
}

View File

@@ -2,35 +2,71 @@ package io.codearte.accurest.maven
import groovy.transform.CompileStatic import groovy.transform.CompileStatic
import io.codearte.accurest.config.AccurestConfigProperties 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.AbstractMojo
import org.apache.maven.plugin.MojoExecutionException import org.apache.maven.plugin.MojoExecutionException
import org.apache.maven.plugin.MojoFailureException 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.Mojo
import org.apache.maven.plugins.annotations.Parameter 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 @CompileStatic
public class ConvertMojo extends AbstractMojo { class ConvertMojo extends AbstractMojo {
@Parameter(property = 'contractsDir', defaultValue = '${basedir}') @Parameter(defaultValue = '${basedir}', readonly = true, required = true)
private File contractsDir private File baseDir
@Parameter(property = 'mappingsDir', defaultValue = '${basedir}') @Parameter(defaultValue = '${project.build.directory}', readonly = true, required = true)
private File mappingsDir 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() 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('Converting from accurest contracts written in GroovyDSL to WireMock stubs mappings')
log.info(" Accurest contracts directory: ${config.contractsDslDir.absolutePath}") log.info(" Accurest contracts directory: ${config.contractsDslDir}")
log.info("WireMock stubs mappings directory: ${config.stubsOutputDir.absolutePath}") 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))
} }
} }

View File

@@ -1,42 +1,19 @@
package io.codearte.accurest.maven package io.codearte.accurest.maven
import groovy.transform.CompileStatic import groovy.transform.CompileStatic
import io.codearte.accurest.config.AccurestConfigProperties import org.apache.maven.model.path.PathTranslator
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.plugins.annotations.LifecyclePhase import org.apache.maven.plugins.annotations.LifecyclePhase
import org.apache.maven.plugins.annotations.Mojo 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) @Mojo(name = 'generateStubs', defaultPhase = LifecyclePhase.PROCESS_RESOURCES)
@CompileStatic @CompileStatic
public class GenerateStubsMojo extends AbstractMojo { @Deprecated
class GenerateStubsMojo extends ConvertMojo {
@Parameter(defaultValue = '${basedir}', readonly = true, required = true) @Inject
private File baseDir GenerateStubsMojo(PathTranslator translator) {
super(translator)
@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()
} }
} }

View File

@@ -17,7 +17,7 @@ import static java.lang.String.format
@Mojo(name = 'generateTests', defaultPhase = LifecyclePhase.GENERATE_TEST_SOURCES) @Mojo(name = 'generateTests', defaultPhase = LifecyclePhase.GENERATE_TEST_SOURCES)
@CompileStatic @CompileStatic
public class GenerateTestsMojo extends AbstractMojo { class GenerateTestsMojo extends AbstractMojo {
@Parameter(defaultValue = '${basedir}', readonly = true, required = true) @Parameter(defaultValue = '${basedir}', readonly = true, required = true)
private File baseDir private File baseDir
@@ -49,7 +49,7 @@ public class GenerateTestsMojo extends AbstractMojo {
@Parameter @Parameter
private String nameSuffixForTests 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') log.info('Generating server tests source code for Accurest contract verification')
AccurestConfigProperties config = new AccurestConfigProperties() AccurestConfigProperties config = new AccurestConfigProperties()

View File

@@ -15,7 +15,7 @@ import javax.inject.Inject
@Mojo(name = 'run', requiresProject = false) @Mojo(name = 'run', requiresProject = false)
@CompileStatic @CompileStatic
public class RunMojo extends AbstractMojo { class RunMojo extends AbstractMojo {
@Parameter(defaultValue = '${repositorySystemSession}', readonly = true) @Parameter(defaultValue = '${repositorySystemSession}', readonly = true)
private RepositorySystemSession repoSession private RepositorySystemSession repoSession
@@ -38,12 +38,12 @@ public class RunMojo extends AbstractMojo {
private final RemoteStubRunner remoteStubRunner private final RemoteStubRunner remoteStubRunner
@Inject @Inject
public RunMojo(LocalStubRunner localStubRunner, RemoteStubRunner remoteStubRunner) { RunMojo(LocalStubRunner localStubRunner, RemoteStubRunner remoteStubRunner) {
this.localStubRunner = localStubRunner this.localStubRunner = localStubRunner
this.remoteStubRunner = remoteStubRunner this.remoteStubRunner = remoteStubRunner
} }
public void execute() throws MojoExecutionException, MojoFailureException { void execute() throws MojoExecutionException, MojoFailureException {
StubRunnerOptions options = new StubRunnerOptions(minPort, maxPort, "", false, stubsClassifier) StubRunnerOptions options = new StubRunnerOptions(minPort, maxPort, "", false, stubsClassifier)
log.debug("Launching StubRunner with args: $options") log.debug("Launching StubRunner with args: $options")
if (!stubs) { if (!stubs) {

View File

@@ -14,13 +14,13 @@ import javax.inject.Singleton
@Singleton @Singleton
@CompileStatic @CompileStatic
@Slf4j @Slf4j
public class AetherStubDownloaderFactory { class AetherStubDownloaderFactory {
private final MavenProject project private final MavenProject project
private final RepositorySystem repoSystem private final RepositorySystem repoSystem
@Inject @Inject
public AetherStubDownloaderFactory(RepositorySystem repoSystem, MavenProject project) { AetherStubDownloaderFactory(RepositorySystem repoSystem, MavenProject project) {
this.repoSystem = repoSystem this.repoSystem = repoSystem
this.project = project this.project = project
} }

View File

@@ -35,7 +35,7 @@ public class PluginIT {
.assertErrorFreeLog() .assertErrorFreeLog()
.assertLogText("Generating server tests source code for Accurest contract verification") .assertLogText("Generating server tests source code for Accurest contract verification")
.assertLogText("Generated 1 test classes.") .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") .assertLogText("Creating new json")
.assertErrorFreeLog(); .assertErrorFreeLog();
} }
@@ -48,7 +48,7 @@ public class PluginIT {
.assertErrorFreeLog() .assertErrorFreeLog()
.assertLogText("Generating server tests source code for Accurest contract verification") .assertLogText("Generating server tests source code for Accurest contract verification")
.assertLogText("Generated 1 test classes.") .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") .assertLogText("Creating new json")
.assertErrorFreeLog(); .assertErrorFreeLog();
} }

View File

@@ -22,21 +22,21 @@ public class PluginUnitTest {
@Test @Test
public void shouldGenerateWireMockStubsInDefaultLocation() throws Exception { public void shouldGenerateWireMockStubsInDefaultLocation() throws Exception {
File basedir = resources.getBasedir("basic"); File basedir = resources.getBasedir("basic");
maven.executeMojo(basedir, "generateStubs"); maven.executeMojo(basedir, "convert");
assertFilesPresent(basedir, "target/mappings/Sample.json"); assertFilesPresent(basedir, "target/mappings/Sample.json");
} }
@Test @Test
public void shouldGenerateWireMockFromStubsDirectory() throws Exception { public void shouldGenerateWireMockFromStubsDirectory() throws Exception {
File basedir = resources.getBasedir("withStubs"); 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"); assertFilesPresent(basedir, "target/mappings/Sample.json");
} }
@Test @Test
public void shouldGenerateWireMockStubsInSelectedLocation() throws Exception { public void shouldGenerateWireMockStubsInSelectedLocation() throws Exception {
File basedir = resources.getBasedir("basic"); 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"); assertFilesPresent(basedir, "target/foo/Sample.json");
} }

View File

@@ -86,14 +86,14 @@
<executions> <executions>
<execution> <execution>
<goals> <goals>
<goal>generateStubs</goal> <goal>convert</goal>
<goal>generateTests</goal> <goal>generateTests</goal>
</goals> </goals>
</execution> </execution>
</executions> </executions>
<configuration> <configuration>
<baseClassForTests>com.ofg.twitter.place.BaseMockMvcTest</baseClassForTests> <baseClassForTests>com.ofg.twitter.place.BaseMockMvcTest</baseClassForTests>
<contractsDir>/src/test/resources/stubs</contractsDir> <contractsDir>src/test/resources/stubs</contractsDir>
<testFramework>SPOCK</testFramework> <testFramework>SPOCK</testFramework>
<nameSuffixForTests>Test</nameSuffixForTests> <nameSuffixForTests>Test</nameSuffixForTests>
</configuration> </configuration>

View File

@@ -75,7 +75,7 @@
<executions> <executions>
<execution> <execution>
<goals> <goals>
<goal>generateStubs</goal> <goal>convert</goal>
<goal>generateTests</goal> <goal>generateTests</goal>
</goals> </goals>
</execution> </execution>