Master, Details, Update DTO Example


MasterDTO

What is RestDTO?

This is an empty Interface which is a boundary of Copy Intercept.

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.problemfighter.pfspring.restapi.inter.model.RestDTO;
import javax.validation.constraints.NotNull;

@JsonInclude(JsonInclude.Include.NON_NULL)
public class PersonMasterDTO implements RestDTO {

    @JsonIgnore
    public Long id;

    @NotNull(message = "Please enter first name")
    public String firstName;


    public String lastName;
    public String mobile;

    @NotNull(message = "Please enter gender")
    public String gender;

    @NotNull(message = "Please enter age")
    public Double age;

    @JsonProperty
    public Long getId() {
        return id;
    }
}


What is @DataMappingInfo(customProcessor = PersonCopyIntercept.class)?

This is an annotation which register Copy Intercept.

DetailsDTO

import com.fasterxml.jackson.annotation.JsonInclude;
import com.problemfighter.java.oc.annotation.DataMappingInfo;
import com.problemfighter.pfspring.webtestmodule.example.model.intercept.PersonCopyIntercept;

@JsonInclude(JsonInclude.Include.NON_NULL)
@DataMappingInfo(customProcessor = PersonCopyIntercept.class)
public class PersonDetailDTO extends PersonMasterDTO {

    public String address;
    public String email;
    public String occupation;

}


UpdateDTO

import com.fasterxml.jackson.annotation.JsonInclude;

@JsonInclude(JsonInclude.Include.NON_NULL)
public class PersonUpdateDTO extends PersonDetailDTO {
    public Long id;

    public Long getId() {
        return id;
    }
}