Skip to content

Commit 831aed4

Browse files
authored
bug!: fix incompatibility with wiremock 3.6 (#130)
- dump gradle plugin version - fix API change <!-- Please describe your pull request here. --> ## References #129 <!-- References to relevant GitHub issues and pull requests, esp. upstream and downstream changes --> ## Submitter checklist - [ ] Recommended: Join [WireMock Slack](https://slack.wiremock.org/) to get any help in `#help-contributing` or a project-specific channel like `#wiremock-java` - [ ] The PR request is well described and justified, including the body and the references - [ ] The PR title represents the desired changelog entry - [ ] The repository's code style is followed (see the contributing guide) - [ ] Test coverage that demonstrates that the change works as expected - [ ] For new features, there's necessary documentation in this pull request or in a subsequent PR to [wiremock.org](https://github.com/wiremock/wiremock.org) <!-- Put an `x` into the [ ] to show you have filled the information. The template comes from https://github.com/wiremock/.github/blob/main/.github/pull_request_template.md You can override it by creating .github/pull_request_template.md in your own repository -->
1 parent 77f157b commit 831aed4

9 files changed

+65
-37
lines changed

.run/Test.run.xml

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<component name="ProjectRunConfigurationManager">
2+
<configuration default="false" name="Test" type="GradleRunConfiguration" factoryName="Gradle">
3+
<ExternalSystemSettings>
4+
<option name="executionName" />
5+
<option name="externalProjectPath" value="$PROJECT_DIR$" />
6+
<option name="externalSystemIdString" value="GRADLE" />
7+
<option name="scriptParameters" value="" />
8+
<option name="taskDescriptions">
9+
<list />
10+
</option>
11+
<option name="taskNames">
12+
<list>
13+
<option value=":test" />
14+
</list>
15+
</option>
16+
<option name="vmOptions" />
17+
</ExternalSystemSettings>
18+
<ExternalSystemDebugServerProcess>false</ExternalSystemDebugServerProcess>
19+
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
20+
<DebugAllEnabled>false</DebugAllEnabled>
21+
<RunAsTest>true</RunAsTest>
22+
<method v="2" />
23+
</configuration>
24+
</component>

README.md

+4-2
Original file line numberDiff line numberDiff line change
@@ -170,9 +170,11 @@ the `GET` won't have any knowledge of the previous post.
170170

171171
| `wiremock-state-extension` version | `WireMock` version |
172172
|------------------------------------|--------------------|
173-
| `0.0.3`+ | `3.0.0-beta-11`+ |
174-
| `0.0.6`+ | `3.0.0-beta-14`+ |
173+
| `0.7.0`+ | `3.6.0`+ |
174+
| `0.5.1`+ | `3.3.1`+ |
175175
| `0.1.0`+ | `3.0.0`+ |
176+
| `0.0.6`+ | `3.0.0-beta-14`+ |
177+
| `0.0.3`+ | `3.0.0-beta-11`+ |
176178

177179
## Installation
178180

build.gradle

+6
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ dependencies {
2525
}
2626
}
2727

28+
java {
29+
sourceCompatibility = 11
30+
targetCompatibility = 11
31+
}
32+
2833
shadowJar {
2934
relocate "com.github.ben-manes.caffeine", 'wiremock.com.github.ben-manes.caffeine'
3035
relocate "com.github.jknack", 'wiremock.com.github.jknack'
@@ -33,6 +38,7 @@ shadowJar {
3338
test {
3439
finalizedBy jacocoTestReport
3540
}
41+
3642
jacocoTestReport {
3743
dependsOn test
3844
reports {

demo/README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ From directory of this README:
102102

103103
```shell
104104
cd ..
105-
curl -o build/libs/wiremock-standalone-3.4.1.jar https://repo1.maven.org/maven2/org/wiremock/wiremock-standalone/3.4.1/wiremock-standalone-3.4.1.jar
105+
curl -o build/libs/wiremock-standalone-3.6.0.jar https://repo1.maven.org/maven2/org/wiremock/wiremock-standalone/3.6.0/wiremock-standalone-3.6.0.jar
106106
```
107107

108108
### Step 4: Start WireMock with the State Extension
@@ -111,7 +111,7 @@ From directory of this README:
111111

112112
```shell
113113
cd ..
114-
java -cp build/libs/wiremock-state-extension-standalone-0.6.0-SNAPSHOT.jar:build/libs/wiremock-standalone-3.4.1.jar wiremock.Run --verbose --global-response-templating --root-dir demo/stubs
114+
java -cp build/libs/wiremock-state-extension-standalone-0.6.0-SNAPSHOT.jar:build/libs/wiremock-standalone-3.6.0.jar wiremock.Run --verbose --global-response-templating --root-dir demo/stubs
115115
```
116116

117117
This command starts WireMock with the State Extension enabled.

settings.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+

src/main/java/org/wiremock/extensions/state/StateExtension.java

+10-16
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import com.github.tomakehurst.wiremock.extension.Extension;
1919
import com.github.tomakehurst.wiremock.extension.ExtensionFactory;
2020
import com.github.tomakehurst.wiremock.extension.WireMockServices;
21-
import com.github.tomakehurst.wiremock.extension.responsetemplating.TemplateEngine;
2221
import com.github.tomakehurst.wiremock.store.Store;
2322
import org.wiremock.extensions.state.extensions.DeleteStateEventListener;
2423
import org.wiremock.extensions.state.extensions.RecordStateEventListener;
@@ -28,7 +27,6 @@
2827
import org.wiremock.extensions.state.internal.ContextManager;
2928
import org.wiremock.extensions.state.internal.TransactionManager;
3029

31-
import java.util.Collections;
3230
import java.util.List;
3331

3432
/**
@@ -51,26 +49,22 @@
5149
*/
5250
public class StateExtension implements ExtensionFactory {
5351

54-
private final StateTemplateHelperProviderExtension stateTemplateHelperProviderExtension;
55-
private final RecordStateEventListener recordStateEventListener;
56-
private final DeleteStateEventListener deleteStateEventListener;
57-
private final TransactionEventListener transactionEventListener;
58-
private final StateRequestMatcher stateRequestMatcher;
52+
private final Store<String, Object> store;
5953

6054
public StateExtension(Store<String, Object> store) {
61-
var transactionManager = new TransactionManager(store);
62-
var contextManager = new ContextManager(store, transactionManager);
63-
this.stateTemplateHelperProviderExtension = new StateTemplateHelperProviderExtension(contextManager);
64-
var templateEngine = new TemplateEngine(stateTemplateHelperProviderExtension.provideTemplateHelpers(), null, Collections.emptySet(), false);
65-
66-
this.recordStateEventListener = new RecordStateEventListener(contextManager, templateEngine);
67-
this.deleteStateEventListener = new DeleteStateEventListener(contextManager, templateEngine);
68-
this.transactionEventListener = new TransactionEventListener(transactionManager);
69-
this.stateRequestMatcher = new StateRequestMatcher(contextManager, templateEngine);
55+
this.store = store;
7056
}
7157

7258
@Override
7359
public List<Extension> create(WireMockServices services) {
60+
var transactionManager = new TransactionManager(store);
61+
var contextManager = new ContextManager(store, transactionManager);
62+
var stateTemplateHelperProviderExtension = new StateTemplateHelperProviderExtension(contextManager);
63+
var recordStateEventListener = new RecordStateEventListener(contextManager, services);
64+
var deleteStateEventListener = new DeleteStateEventListener(contextManager, services);
65+
var transactionEventListener = new TransactionEventListener(transactionManager);
66+
var stateRequestMatcher = new StateRequestMatcher(contextManager, services);
67+
7468
return List.of(
7569
recordStateEventListener,
7670
deleteStateEventListener,

src/main/java/org/wiremock/extensions/state/extensions/DeleteStateEventListener.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
import com.github.tomakehurst.wiremock.core.ConfigurationException;
2020
import com.github.tomakehurst.wiremock.extension.Parameters;
2121
import com.github.tomakehurst.wiremock.extension.ServeEventListener;
22+
import com.github.tomakehurst.wiremock.extension.WireMockServices;
2223
import com.github.tomakehurst.wiremock.extension.responsetemplating.RequestTemplateModel;
23-
import com.github.tomakehurst.wiremock.extension.responsetemplating.TemplateEngine;
2424
import com.github.tomakehurst.wiremock.stubbing.ServeEvent;
2525
import org.apache.commons.lang3.StringUtils;
2626
import org.wiremock.extensions.state.internal.ContextManager;
@@ -47,13 +47,13 @@
4747
*/
4848
public class DeleteStateEventListener implements ServeEventListener, StateExtensionMixin {
4949

50-
private final TemplateEngine templateEngine;
50+
private final WireMockServices wireMockServices;
5151
private final ContextManager contextManager;
5252

5353

54-
public DeleteStateEventListener(ContextManager contextManager, TemplateEngine templateEngine) {
54+
public DeleteStateEventListener(ContextManager contextManager, WireMockServices services) {
5555
this.contextManager = contextManager;
56-
this.templateEngine = templateEngine;
56+
this.wireMockServices = services;
5757
}
5858

5959
@Override
@@ -76,7 +76,7 @@ public void beforeResponseSent(ServeEvent serveEvent, Parameters parameters) {
7676
}
7777

7878
private String renderTemplate(Object context, String value) {
79-
return templateEngine.getUncachedTemplate(value).apply(context);
79+
return wireMockServices.getTemplateEngine().getUncachedTemplate(value).apply(context);
8080
}
8181

8282
private class ListenerInstance {

src/main/java/org/wiremock/extensions/state/extensions/RecordStateEventListener.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
import com.github.tomakehurst.wiremock.core.ConfigurationException;
2020
import com.github.tomakehurst.wiremock.extension.Parameters;
2121
import com.github.tomakehurst.wiremock.extension.ServeEventListener;
22+
import com.github.tomakehurst.wiremock.extension.WireMockServices;
2223
import com.github.tomakehurst.wiremock.extension.responsetemplating.RequestTemplateModel;
23-
import com.github.tomakehurst.wiremock.extension.responsetemplating.TemplateEngine;
2424
import com.github.tomakehurst.wiremock.stubbing.ServeEvent;
2525
import org.apache.commons.lang3.StringUtils;
2626
import org.wiremock.extensions.state.internal.ContextManager;
@@ -43,12 +43,12 @@
4343
*/
4444
public class RecordStateEventListener implements ServeEventListener, StateExtensionMixin {
4545

46-
private final TemplateEngine templateEngine;
46+
private final WireMockServices wireMockServices;
4747
private final ContextManager contextManager;
4848

49-
public RecordStateEventListener(ContextManager contextManager, TemplateEngine templateEngine) {
49+
public RecordStateEventListener(ContextManager contextManager, WireMockServices services) {
5050
this.contextManager = contextManager;
51-
this.templateEngine = templateEngine;
51+
this.wireMockServices = services;
5252
}
5353

5454
public void beforeResponseSent(ServeEvent serveEvent, Parameters parameters) {
@@ -72,7 +72,7 @@ public boolean applyGlobally() {
7272

7373

7474
private String renderTemplate(Object context, String value) {
75-
return templateEngine.getUncachedTemplate(value).apply(context);
75+
return wireMockServices.getTemplateEngine().getUncachedTemplate(value).apply(context);
7676
}
7777

7878
private class ListenerInstance {

src/main/java/org/wiremock/extensions/state/extensions/StateRequestMatcher.java

+8-7
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
import com.github.tomakehurst.wiremock.common.Json;
1919
import com.github.tomakehurst.wiremock.core.ConfigurationException;
2020
import com.github.tomakehurst.wiremock.extension.Parameters;
21+
import com.github.tomakehurst.wiremock.extension.WireMockServices;
2122
import com.github.tomakehurst.wiremock.extension.responsetemplating.RequestTemplateModel;
22-
import com.github.tomakehurst.wiremock.extension.responsetemplating.TemplateEngine;
2323
import com.github.tomakehurst.wiremock.http.Request;
2424
import com.github.tomakehurst.wiremock.matching.MatchResult;
2525
import com.github.tomakehurst.wiremock.matching.RequestMatcherExtension;
@@ -50,12 +50,12 @@
5050
*/
5151
public class StateRequestMatcher extends RequestMatcherExtension implements StateExtensionMixin {
5252

53-
private final TemplateEngine templateEngine;
53+
private final WireMockServices wireMockServices;
5454
private final ContextManager contextManager;
5555

56-
public StateRequestMatcher(ContextManager contextManager, TemplateEngine templateEngine) {
56+
public StateRequestMatcher(ContextManager contextManager, WireMockServices services) {
5757
this.contextManager = contextManager;
58-
this.templateEngine = templateEngine;
58+
this.wireMockServices = services;
5959
}
6060

6161
private static List<Map.Entry<ContextMatcher, Object>> getMatchers(Parameters parameters) {
@@ -139,9 +139,10 @@ private MatchResult hasNotContext(Map<String, Object> model, String template) {
139139
}
140140

141141
String renderTemplate(Object context, String value) {
142-
return templateEngine.getUncachedTemplate(value).apply(context);
142+
return wireMockServices.getTemplateEngine().getUncachedTemplate(value).apply(context);
143143
}
144144

145+
@SuppressWarnings("unchecked")
145146
Object renderTemplateRecursively(Object context, Object value) {
146147
if (value instanceof Collection) {
147148
Collection<Object> castedCollection = cast(value, Collection.class);
@@ -162,7 +163,7 @@ Object renderTemplateRecursively(Object context, Object value) {
162163
private enum ContextMatcher {
163164

164165
property((Context c, Object object) -> {
165-
Map<String, Map<String, Object>> mapValue = cast(object, Map.class);
166+
@SuppressWarnings("unchecked") Map<String, Map<String, Object>> mapValue = cast(object, Map.class);
166167
var results = mapValue.entrySet().stream().map(entry -> {
167168
var patterns = mapToObject(entry.getValue(), StringValuePattern.class);
168169
var propertyValue = c.getProperties().get(entry.getKey());
@@ -177,7 +178,7 @@ private enum ContextMatcher {
177178
}),
178179

179180
list((Context c, Object object) -> {
180-
Map<String, Map<String, Map<String, Object>>> mapValue = cast(object, Map.class);
181+
@SuppressWarnings("unchecked") Map<String, Map<String, Map<String, Object>>> mapValue = cast(object, Map.class);
181182
var allResults = mapValue.entrySet().stream().map(listIndexEntry -> {
182183
Map<String, String> listEntry;
183184
switch (listIndexEntry.getKey()) {

0 commit comments

Comments
 (0)