From 1e71a32d21c9a60c652dd52665dec362d49162b0 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Wed, 17 Apr 2019 08:19:58 +0400 Subject: [PATCH] Checking the path for classpath resource; related to gh-1045 --- .../stubrunner/ClasspathStubProvider.java | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/ClasspathStubProvider.java b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/ClasspathStubProvider.java index 097f0766dc..993b394fa6 100644 --- a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/ClasspathStubProvider.java +++ b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/ClasspathStubProvider.java @@ -35,6 +35,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties; +import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.DefaultResourceLoader; import org.springframework.core.io.Resource; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; @@ -207,17 +208,20 @@ public class ClasspathStubProvider implements StubDownloaderBuilder { private List repoRoot(StubRunnerOptions stubRunnerOptions, StubConfiguration configuration) { - if (StringUtils.hasText(stubRunnerOptions.getStubRepositoryRootAsString())) { - return Collections.singletonList( - new RepoRoot(stubRunnerOptions.getStubRepositoryRootAsString())); - } - else { - String path = "/**/" + configuration.getGroupId() + "/" - + configuration.getArtifactId(); - return Arrays.asList(new RepoRoot("classpath*:/META-INF" + path, "/**/*.*"), - new RepoRoot("classpath*:/contracts" + path, "/**/*.*"), - new RepoRoot("classpath*:/mappings" + path, "/**/*.*")); + Resource repositoryRoot = stubRunnerOptions.getStubRepositoryRoot(); + if (repositoryRoot instanceof ClassPathResource) { + ClassPathResource classPathResource = (ClassPathResource) repositoryRoot; + String path = classPathResource.getPath(); + if (StringUtils.hasText(path)) { + return Collections.singletonList( + new RepoRoot(stubRunnerOptions.getStubRepositoryRootAsString())); + } } + String path = "/**/" + configuration.getGroupId() + "/" + + configuration.getArtifactId(); + return Arrays.asList(new RepoRoot("classpath*:/META-INF" + path, "/**/*.*"), + new RepoRoot("classpath*:/contracts" + path, "/**/*.*"), + new RepoRoot("classpath*:/mappings" + path, "/**/*.*")); } // Taken from Guava