All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.codearte.accurest.stubrunner.BatchStubRunner.groovy Maven / Gradle / Ivy

package io.codearte.accurest.stubrunner

import groovy.transform.CompileStatic

/**
 * Manages lifecycle of multiple {@link StubRunner} instances.
 *
 * @see StubRunner
 */
@CompileStatic
class BatchStubRunner implements StubRunning {

	private final Iterable stubRunners

	BatchStubRunner(Iterable stubRunners) {
		this.stubRunners = stubRunners
	}

	@Override
	RunningStubs runStubs() {
		Map appsAndPorts = stubRunners.inject([:]) { Map acc, StubRunner value ->
			acc.putAll(value.runStubs().namesAndPorts)
			return acc
		} as Map
		return new RunningStubs(appsAndPorts)
	}

	@Override
	URL findStubUrl(String groupId, String artifactId) {
		return stubRunners.findResult(null) { StubRunner stubRunner ->
			return stubRunner.findStubUrl(groupId, artifactId)
		} as URL
	}

	@Override
	URL findStubUrl(String ivyNotation) {
		String[] splitString = ivyNotation.split(":")
		if (splitString.length > 3) {
			throw new IllegalArgumentException("$ivyNotation is invalid")
		} else if (splitString.length == 2) {
			return findStubUrl(splitString[0], splitString[1])
		}
		return findStubUrl(null, splitString[0])
	}

	@Override
	RunningStubs findAllRunningStubs() {
		return new RunningStubs(stubRunners.collect { StubRunner runner -> runner.findAllRunningStubs() })
	}

	@Override
	void close() throws IOException {
		stubRunners.each {
			it.close()
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy