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

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

package io.codearte.accurest.stubrunner

import groovy.transform.CompileStatic
import groovy.transform.PackageScope

/**
 * Wraps the folder with WireMock mappings.
 */
@CompileStatic
@PackageScope
class StubRepository {

	private final File path

	StubRepository(File repository) {
		if (!repository.isDirectory()) {
			throw new FileNotFoundException('Missing descriptor repository')
		}
		this.path = repository
	}

	/**
	 * Returns the list of WireMock JSON files wrapped in {@link MappingDescriptor}
	 */
	List getProjectDescriptors() {
		List mappingDescriptors = []
		mappingDescriptors.addAll(contextDescriptors())
		return mappingDescriptors
	}

	private List contextDescriptors() {
		return path.exists() ? collectMappingDescriptors(path) : []
	}

	private List collectMappingDescriptors(File descriptorsDirectory) {
		List mappingDescriptors = []
		descriptorsDirectory.eachFileRecurse { File file ->
			if (isMappingDescriptor(file)) {
				mappingDescriptors << new MappingDescriptor(file)
			}
		}
		return mappingDescriptors
	}

	private static boolean isMappingDescriptor(File file) {
		return file.isFile() && file.name.endsWith('.json')
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy