From f433118a150aeb4e8ef7710db9cfc4e6454f2256 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Mon, 19 Mar 2018 14:45:09 +0100 Subject: [PATCH] Allows exposure of multiple versions via Stub Runner without this change for a single group and artifact id you can have only one entry in stub runner with this change you can have multiple ones fixes gh-474 --- .../stubrunner/StubRunnerOptionsBuilder.java | 4 ++-- .../cloud/contract/stubrunner/util/StubsParser.java | 8 ++++---- .../stubrunner/StubRunnerOptionsBuilderSpec.groovy | 12 ++++++++++++ 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/StubRunnerOptionsBuilder.java b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/StubRunnerOptionsBuilder.java index 0a003d36d6..86c6a4e54c 100644 --- a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/StubRunnerOptionsBuilder.java +++ b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/StubRunnerOptionsBuilder.java @@ -23,7 +23,6 @@ import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; -import java.util.Set; import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties; import org.springframework.cloud.contract.stubrunner.util.StubsParser; @@ -155,7 +154,7 @@ public class StubRunnerOptionsBuilder { } private Collection buildDependencies() { - Set stubConfigurations = StubsParser + List stubConfigurations = StubsParser .fromString(this.stubs, this.stubsClassifier); this.stubConfigurations.addAll(stubConfigurations); return this.stubConfigurations; @@ -178,6 +177,7 @@ public class StubRunnerOptionsBuilder { } } list.addAll(linkedList); + return list; } Collections.addAll(list, stubIdsToPortMapping); return list; diff --git a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/util/StubsParser.java b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/util/StubsParser.java index 3f6a16938e..fcce3d6e10 100644 --- a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/util/StubsParser.java +++ b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/util/StubsParser.java @@ -16,11 +16,11 @@ package org.springframework.cloud.contract.stubrunner.util; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.LinkedHashSet; +import java.util.List; import java.util.Map; -import java.util.Set; import org.springframework.cloud.contract.stubrunner.StubConfiguration; @@ -46,8 +46,8 @@ public class StubsParser { * * "a:b,c:d:e" */ - public static Set fromString(Collection collection, String defaultClassifier) { - Set stubs = new LinkedHashSet<>(); + public static List fromString(Collection collection, String defaultClassifier) { + List stubs = new ArrayList<>(); for (String config : collection) { if (StringUtils.hasText(config)) { stubs.add(StubSpecification.parse(config, defaultClassifier).stub); diff --git a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/StubRunnerOptionsBuilderSpec.groovy b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/StubRunnerOptionsBuilderSpec.groovy index 3981896873..707220e8ff 100644 --- a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/StubRunnerOptionsBuilderSpec.groovy +++ b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/StubRunnerOptionsBuilderSpec.groovy @@ -38,6 +38,18 @@ class StubRunnerOptionsBuilderSpec extends Specification { options.getDependencies().toString() == '[foo:bar:+:stubs]' } + def shouldCreateDependenciesForStubWithSameGroupAndArtifactId() { + + given: + builder.withStubs('foo:bar:1.0', 'foo:bar:2.0') + + when: + StubRunnerOptions options = builder.build() + + then: + options.getDependencies().toString() == '[foo:bar:1.0:stubs, foo:bar:2.0:stubs]' + } + def shouldCreateDependenciesForMultipleStubsWithSameGroup() { given: