Skip to content

Commit 400d1f3

Browse files
committed
Fix YamlToContracts implementation. Fix exception handling.
Signed-off-by: Olga Maciaszek-Sharma <[email protected]>
1 parent 0a3ca30 commit 400d1f3

File tree

16 files changed

+398
-369
lines changed

16 files changed

+398
-369
lines changed

docs/pom.xml

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,10 +113,14 @@
113113
<goal>exec</goal>
114114
</goals>
115115
<configuration>
116-
<workingDirectory>${maven.multiModuleProjectDirectory}/docker/spring-cloud-contract-docker</workingDirectory>
116+
<workingDirectory>
117+
${maven.multiModuleProjectDirectory}/docker/spring-cloud-contract-docker
118+
</workingDirectory>
117119
<executable>./build_adocs.sh</executable>
118120
<arguments>
119-
<argument>${maven.multiModuleProjectDirectory}/docs/modules/ROOT/partials/</argument>
121+
<argument>
122+
${maven.multiModuleProjectDirectory}/docs/modules/ROOT/partials/
123+
</argument>
120124
</arguments>
121125
</configuration>
122126
</execution>
@@ -127,9 +131,13 @@
127131
<goal>java</goal>
128132
</goals>
129133
<configuration>
130-
<mainClass>org.springframework.cloud.contract.docs.Main</mainClass>
134+
<mainClass>
135+
org.springframework.cloud.contract.docs.Main
136+
</mainClass>
131137
<arguments>
132-
<argument>${maven.multiModuleProjectDirectory}/docs</argument>
138+
<argument>
139+
${maven.multiModuleProjectDirectory}/docs
140+
</argument>
133141
</arguments>
134142
</configuration>
135143
</execution>
@@ -185,11 +193,13 @@
185193
<groupId>org.springframework.amqp</groupId>
186194
<artifactId>spring-amqp</artifactId>
187195
</dependency>
196+
<!-- TODO: remove when replacements with Jackson 3 integration become available -->
188197
<dependency>
189198
<groupId>com.fasterxml.jackson.module</groupId>
190199
<artifactId>jackson-module-jsonSchema</artifactId>
191200
<version>${jackson-module-jsonSchema.version}</version>
192201
</dependency>
202+
<!-- TODO: switch to Jackson 3 when jsonSchema replacements with Jackson 3 integration become available -->
193203
<dependency>
194204
<groupId>com.fasterxml.jackson.dataformat</groupId>
195205
<artifactId>jackson-dataformat-yaml</artifactId>

spring-cloud-contract-tools/spring-cloud-contract-converters/src/main/java/org/springframework/cloud/contract/verifier/wiremock/DefaultWireMockStubPostProcessor.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import com.github.tomakehurst.wiremock.http.Fault;
2929
import com.github.tomakehurst.wiremock.http.ResponseDefinition;
3030
import com.github.tomakehurst.wiremock.stubbing.StubMapping;
31+
import tools.jackson.core.JacksonException;
3132
import tools.jackson.databind.json.JsonMapper;
3233

3334
import org.springframework.cloud.contract.spec.Contract;
@@ -145,7 +146,12 @@ else if (wiremock instanceof StubMapping) {
145146
return (StubMapping) wiremock;
146147
}
147148
else if (wiremock instanceof Map) {
148-
return StubMapping.buildFrom(this.objectMapper.writeValueAsString(wiremock));
149+
try {
150+
return StubMapping.buildFrom(this.objectMapper.writeValueAsString(wiremock));
151+
}
152+
catch (JacksonException e) {
153+
throw new IllegalStateException("Failed to build StubMapping for map [" + wiremock + "]", e);
154+
}
149155
}
150156
throw new UnsupportedOperationException("Unsupported type for wiremock metadata extension");
151157
}

spring-cloud-contract-tools/spring-cloud-contract-converters/src/main/java/org/springframework/cloud/contract/verifier/wiremock/WireMockToDslConverter.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ private String buildRequestMethod(JsonNode wireMockStub) {
119119
String requestMethod = "";
120120
JsonNode requestMethodNode = wireMockStub.at(REQUEST_METHOD_POINTER);
121121
if (requestMethodNode != null) {
122-
requestMethod = "method '" + requestMethodNode.asText() + "'\n";
122+
requestMethod = "method '" + requestMethodNode.asString() + "'\n";
123123
}
124124
return requestMethod;
125125
}
@@ -128,7 +128,7 @@ private String buildRequestUrl(JsonNode wireMockStub) {
128128
String requestUrl = "";
129129
JsonNode requestUrlNode = wireMockStub.at(REQUEST_URL_POINTER);
130130
if (!requestUrlNode.isMissingNode()) {
131-
requestUrl = "url '" + requestUrlNode.asText() + "'\n";
131+
requestUrl = "url '" + requestUrlNode.asString() + "'\n";
132132
}
133133
return requestUrl;
134134
}
@@ -137,7 +137,7 @@ private String buildRequestUrlPath(JsonNode wireMockStub) {
137137
String requestUrlPath = "";
138138
JsonNode requestUrlPathNode = wireMockStub.at(REQUEST_URL_PATH_POINTER);
139139
if (!requestUrlPathNode.isMissingNode()) {
140-
requestUrlPath = "url '" + requestUrlPathNode.asText() + "'\n";
140+
requestUrlPath = "url '" + requestUrlPathNode.asString() + "'\n";
141141
}
142142
return requestUrlPath;
143143
}
@@ -146,7 +146,7 @@ private String buildRequestUrlPattern(JsonNode wireMockStub) {
146146
String requestUrlPattern = "";
147147
JsonNode requestUrlPatternNode = wireMockStub.at(REQUEST_URL_PATTERN_POINTER);
148148
if (!requestUrlPatternNode.isMissingNode()) {
149-
String escapedRequestUrlPatternValue = escapeJava(requestUrlPatternNode.asText());
149+
String escapedRequestUrlPatternValue = escapeJava(requestUrlPatternNode.asString());
150150
requestUrlPattern = "url $(consumer(regex('" + escapedRequestUrlPatternValue + "')), producer('"
151151
+ new Xeger(escapedRequestUrlPatternValue).generate() + "'))\n";
152152
}
@@ -157,7 +157,7 @@ private String buildRequestUrlPathPattern(JsonNode wireMockStub) {
157157
String requestUrlPathPattern = "";
158158
JsonNode requestUrlPathPatternNode = wireMockStub.at(REQUEST_URL_PATH_PATTERN_POINTER);
159159
if (!requestUrlPathPatternNode.isMissingNode()) {
160-
String escapedRequestUrlPathPatternValue = escapeJava(requestUrlPathPatternNode.asText());
160+
String escapedRequestUrlPathPatternValue = escapeJava(requestUrlPathPatternNode.asString());
161161
requestUrlPathPattern = "urlPath $(consumer(regex('" + escapedRequestUrlPathPatternValue + "')), producer('"
162162
+ new Xeger(escapedRequestUrlPathPatternValue).generate() + "'))'\n";
163163
}
@@ -261,12 +261,12 @@ private String buildResponseBody(JsonNode wireMockStub) {
261261
}
262262

263263
private String buildPrettyPrintResponseBody(IntNode node) {
264-
return node.asText();
264+
return node.asString();
265265
}
266266

267267
private String buildPrettyPrintResponseBody(StringNode node) {
268268
try {
269-
String stringNode = node.asText();
269+
String stringNode = node.asString();
270270
Object intermediateObjectForPrettyPrinting =
271271
OBJECT_MAPPER.readerFor(Object.class).readValue(stringNode);
272272

spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/java/org/springframework/cloud/contract/verifier/plugin/GenerateServerTestsTask.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
import org.springframework.cloud.contract.verifier.config.TestFramework;
4848
import org.springframework.cloud.contract.verifier.config.TestMode;
4949

50-
import com.fasterxml.jackson.databind.ObjectMapper;
50+
import tools.jackson.databind.ObjectMapper;
5151

5252
/**
5353
* Task used to generate server side tests

0 commit comments

Comments
 (0)