Quantcast
Channel: User PaChSu - Stack Overflow
Viewing all articles
Browse latest Browse all 19

Convert Java POJO into PactDslJsonBody

$
0
0

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:***}

Viewing all articles
Browse latest Browse all 19

Latest Images

Trending Articles



Latest Images