diff --git a/accurest-converters/src/test/groovy/io/codearte/accurest/wiremock/WiremockToDslConverterSpec.groovy b/accurest-converters/src/test/groovy/io/codearte/accurest/wiremock/WiremockToDslConverterSpec.groovy index ad551f3272..63ba9ad92b 100644 --- a/accurest-converters/src/test/groovy/io/codearte/accurest/wiremock/WiremockToDslConverterSpec.groovy +++ b/accurest-converters/src/test/groovy/io/codearte/accurest/wiremock/WiremockToDslConverterSpec.groovy @@ -219,7 +219,6 @@ class WiremockToDslConverterSpec extends Specification { ]) headers { header 'Content-Type': 'application/json' - } } } diff --git a/accurest-core/src/main/groovy/io/coderate/accurest/dsl/WiremockRequestStubStrategy.groovy b/accurest-core/src/main/groovy/io/coderate/accurest/dsl/WiremockRequestStubStrategy.groovy index e8396e15c7..d572d30a61 100644 --- a/accurest-core/src/main/groovy/io/coderate/accurest/dsl/WiremockRequestStubStrategy.groovy +++ b/accurest-core/src/main/groovy/io/coderate/accurest/dsl/WiremockRequestStubStrategy.groovy @@ -32,7 +32,7 @@ class WiremockRequestStubStrategy extends BaseWiremockStubStrategy { urlPattern: request?.urlPattern?.clientValue, urlPath : request?.urlPath?.clientValue, headers : buildClientHeadersSection(request.headers), - body : request?.body?.forClientSide() + body : request?.body?.clientValue ].findAll { it.value } } @@ -42,7 +42,7 @@ class WiremockRequestStubStrategy extends BaseWiremockStubStrategy { urlPattern: request?.urlPattern?.serverValue, urlPath : request?.urlPath?.serverValue, headers : buildServerHeadersSection(request.headers), - body : request?.body?.forServerSide() + body : request?.body?.serverValue ].findAll { it.value } } } diff --git a/accurest-core/src/main/groovy/io/coderate/accurest/dsl/WiremockResponseStubStrategy.groovy b/accurest-core/src/main/groovy/io/coderate/accurest/dsl/WiremockResponseStubStrategy.groovy index 70429c1ebc..740a3e69a1 100644 --- a/accurest-core/src/main/groovy/io/coderate/accurest/dsl/WiremockResponseStubStrategy.groovy +++ b/accurest-core/src/main/groovy/io/coderate/accurest/dsl/WiremockResponseStubStrategy.groovy @@ -28,13 +28,13 @@ class WiremockResponseStubStrategy extends BaseWiremockStubStrategy { private Map buildResponseContent(ClientResponse response) { return [status : response?.status?.clientValue, - body : response?.body?.forClientSide(), + body : response?.body?.clientValue, headers: buildClientHeadersSection(response.headers)].findAll { it.value } } private Map buildResponseContent(ServerResponse response) { return [status : response?.status?.serverValue, - body : response?.body?.forServerSide(), + body : response?.body?.serverValue, headers: buildServerHeadersSection(response.headers)].findAll { it.value } } diff --git a/accurest-core/src/main/groovy/io/coderate/accurest/dsl/internal/Body.groovy b/accurest-core/src/main/groovy/io/coderate/accurest/dsl/internal/Body.groovy index a61b09e3ac..6dd1939fb5 100644 --- a/accurest-core/src/main/groovy/io/coderate/accurest/dsl/internal/Body.groovy +++ b/accurest-core/src/main/groovy/io/coderate/accurest/dsl/internal/Body.groovy @@ -7,22 +7,23 @@ import org.codehaus.groovy.runtime.GStringImpl @ToString(includePackage = false, includeFields = true) @EqualsAndHashCode(includeFields = true) -class Body { - - private Map body - private DslProperty bodyAsValue - private List bodyAsList +class Body extends DslProperty { Body() { - this.body = [:] + super(null) } Body(Map body) { - this.body = body + super(body.collectEntries { Map.Entry entry -> + [(entry.key): entry.value.clientValue] + } as Map, + body.collectEntries { Map.Entry entry -> + [(entry.key): entry.value.serverValue] + } as Map) } Body(List bodyAsList) { - this.bodyAsList = bodyAsList + super(bodyAsList.collect { it.clientValue }, bodyAsList.collect { it.serverValue }) } Body(Object bodyAsValue) { @@ -30,44 +31,23 @@ class Body { } Body(GString bodyAsValue) { - this.bodyAsValue = new DslProperty(getClientValue(bodyAsValue), getServerValue(bodyAsValue)) + super(extractClientValue(bodyAsValue), extractServerValue(bodyAsValue)) } - private def getClientValue(GString bodyAsValue) { + Body(DslProperty bodyAsValue) { + super(bodyAsValue.clientValue, bodyAsValue.serverValue) + } + + private static def extractClientValue(GString bodyAsValue) { GString clientGString = new GStringImpl(bodyAsValue.values.clone(), bodyAsValue.strings.clone()) Object[] clientValues = bodyAsValue.values.collect { it instanceof DslProperty ? it.clientValue : it } as Object[] return new JsonSlurper().parseText(new GStringImpl(clientValues, clientGString.strings).toString()) } - private def getServerValue(GString bodyAsValue) { + private static def extractServerValue(GString bodyAsValue) { GString clientGString = new GStringImpl(bodyAsValue.values.clone(), bodyAsValue.strings.clone()) Object[] serverValues = bodyAsValue.values.collect { it instanceof DslProperty ? it.serverValue : it } as Object[] return new JsonSlurper().parseText(new GStringImpl(serverValues, clientGString.strings).toString()) } - - Body(DslProperty bodyAsValue) { - this.bodyAsValue = bodyAsValue - } - - Object forClientSide() { - if (bodyAsValue) { - return bodyAsValue.clientValue - } else if (bodyAsList) { - bodyAsList.collect { it.clientValue } - } - return body.collectEntries { Map.Entry entry -> - [(entry.key): entry.value.clientValue] - } as Map - } - - Object forServerSide() { - if (bodyAsValue) { - return bodyAsValue.serverValue - } else if (bodyAsList) { - bodyAsList.collect { it.serverValue } - } - return body.collectEntries { Map.Entry entry -> - [(entry.key): entry.value.serverValue] - } as Map - } + }