
io.codearte.accurest.stubrunner.StubRunnerFactory.groovy Maven / Gradle / Ivy
package io.codearte.accurest.stubrunner
import groovy.transform.CompileStatic
import groovy.util.logging.Slf4j
import io.codearte.accurest.messaging.AccurestMessaging
/**
* Factory of StubRunners. Basing on the options and passed collaborators
* downloads the stubs and returns a list of corresponding stub runners.
*/
@Slf4j
@CompileStatic
class StubRunnerFactory {
private final StubRunnerOptions stubRunnerOptions
private final Collection collaborators
private final StubDownloader stubDownloader
private final AccurestMessaging accurestMessaging
StubRunnerFactory(StubRunnerOptions stubRunnerOptions,
Collection collaborators,
StubDownloader stubDownloader, AccurestMessaging accurestMessaging) {
this.stubRunnerOptions = stubRunnerOptions
this.collaborators = collaborators
this.stubDownloader = stubDownloader
this.accurestMessaging = accurestMessaging
}
Collection createStubsFromServiceConfiguration() {
return collaborators.collect { StubConfiguration stubsConfiguration ->
final File unzipedStubDir = stubDownloader.downloadAndUnpackStubJar(stubRunnerOptions.workOffline,
stubRunnerOptions.stubRepositoryRoot,
stubsConfiguration.groupId, stubsConfiguration.artifactId, stubsConfiguration.classifier)
return createStubRunner(unzipedStubDir, stubsConfiguration)
}.findAll { it != null }
}
private StubRunner createStubRunner(File unzipedStubDir, StubConfiguration stubsConfiguration) {
if (!unzipedStubDir) {
return null
}
return createStubRunner(unzipedStubDir, stubsConfiguration, stubRunnerOptions)
}
private StubRunner createStubRunner(File unzippedStubsDir, StubConfiguration stubsConfiguration,
StubRunnerOptions stubRunnerOptions) {
return new StubRunner(stubRunnerOptions, unzippedStubsDir.path, stubsConfiguration, accurestMessaging)
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy