From 6e65f36c3140bebfc66f7a53840b68adf3a40b02 Mon Sep 17 00:00:00 2001 From: Tom Hombergs Date: Thu, 11 Jan 2018 10:18:37 +0100 Subject: [PATCH] replaced ".class" with ".getClass()" (#513) ... so that the actual class of the object is returned instead of potentially an element with key "class" if object is a Map --- .../verifier/builder/MethodBodyBuilder.groovy | 2 +- .../builder/MethodBodyBuilderSpec.groovy | 31 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MethodBodyBuilder.groovy b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MethodBodyBuilder.groovy index f77f2ea466..8b5e4bc016 100644 --- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MethodBodyBuilder.groovy +++ b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/MethodBodyBuilder.groovy @@ -468,7 +468,7 @@ abstract class MethodBodyBuilder { // we want to make the type more generic (e.g. not ArrayList but List) protected Class classToCheck(Object elementFromBody) { - switch (elementFromBody.class) { + switch (elementFromBody.getClass()) { case List: return List case Set: diff --git a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/MethodBodyBuilderSpec.groovy b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/MethodBodyBuilderSpec.groovy index 7c48bfb88e..37d9a2038b 100644 --- a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/MethodBodyBuilderSpec.groovy +++ b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/MethodBodyBuilderSpec.groovy @@ -487,4 +487,35 @@ DocumentContext parsedJson = JsonPath.parse(json); "JaxRsClientJUnitMethodBodyBuilder" | { Contract dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl, properties) } } + @Issue("#509") + def "classToCheck() should return class of object"() { + given: + Contract contractDsl = Contract.make { + request { + method 'POST' + url '/api/users' + } + response { + status 200 + } + } + MethodBodyBuilder builder = methodBuilder(contractDsl) + when: + Map map = new LinkedHashMap<>() + Integer number = Integer.valueOf(42) + List list = new ArrayList<>() + Set set = new HashSet<>() + then: + builder.classToCheck(map) == Map.class + and: + builder.classToCheck(number) == Integer.class + and: + builder.classToCheck(list) == List.class + and: + builder.classToCheck(set) == Set.class + where: + methodBuilderName | methodBuilder + "MockMvcSpockMethodBuilder" | { Contract dsl -> new MockMvcSpockMethodRequestProcessingBodyBuilder(dsl, properties) } + } + }