I am trying to write a helper class to get PactDslJsonBody from a Java Pojo directly. However, it fails to create nested Json Objects. Can someone explain me why?Below is my code :
HELPER CLASS CODE - used to convert input java pojo to PactDslJsonBody
public class PactDslHelper { private static PactDslJsonBody responseBody; public PactDslJsonBody getResponseBody() { return responseBody; } private PactDslJsonBody updateResponseBody(Class<?> clazz) { responseBody.object("yooyoo"); Field[] fields = clazz.getDeclaredFields(); for (Field field : fields) { String fieldName = field.getName(); System.out.println("fieldName is : = "+ fieldName); System.out.println("fieldType Simple Name is : = "+ field.getType().getSimpleName()); switch (field.getType().getSimpleName()) { case "Integer": responseBody.integerType(fieldName); break; case "String": responseBody.stringType(fieldName); break; case "UUID": responseBody.uuid(fieldName); break; case "Boolean": responseBody.booleanType(fieldName); break; } } responseBody.closeObject(); return responseBody; } public PactDslHelper(Class<?> clazz) { Field[] fields = clazz.getDeclaredFields(); responseBody = new PactDslJsonBody(); for (Field field : fields) { Class<?> fieldType = field.getType(); String fieldName = field.getName(); System.out.println("fieldName is : = "+ fieldName); System.out.println("fieldType Simple Name is : = "+ field.getType().getSimpleName()); switch (field.getType().getSimpleName()) { case "Integer": responseBody.integerType(fieldName); break; case "String": responseBody.stringMatcher(fieldName,ApplicationConstants.REGEX_UUID); break; case "UUID": responseBody.uuid(fieldName); break; case "Boolean": responseBody.booleanType(fieldName); break; default: if (!fieldType.isPrimitive()) { responseBody = updateResponseBody(fieldType); } } } }
SNIPPET OF HOW TO USE THIS CLASS:
responseBody_dto = new PactDslHelper(ProductFrontEntity.class);
TEST WHICH IS FAILING :INPUT CLASS :
public class ProductFrontEntity { private String storeId; private String productId; private String code; private ProductIdentificationMap productIdentificationMap; }public class ProductIdentificationMap { private String jAN; }
EXPECTED RESULT:
{ productId:***, code:***, productIdentificationMap{ jan:*** }}
ACTUAL RESULT:
{ productId:***, code:***, jan:***}