ResponseEntityBuilder.java

package sprout.mvc.http;

import java.util.HashMap;
import java.util.Map;

public class ResponseEntityBuilder {
    private Object body;
    private ResponseCode status = ResponseCode.SUCCESS;
    private final Map<String, String> headers = new HashMap<>();
    private String contentType = "application/json";


    public static ResponseEntityBuilder status(ResponseCode status) {
        ResponseEntityBuilder builder = new ResponseEntityBuilder();
        builder.status = status;
        return builder;
    }

    public static ResponseEntityBuilder ok() {
        return status(ResponseCode.SUCCESS);
    }

    public static ResponseEntityBuilder created() {
        return status(ResponseCode.CREATED);
    }

    public static ResponseEntityBuilder noContent() {
        return status(ResponseCode.NO_CONTENT);
    }

    public ResponseEntityBuilder body(Object body) {
        this.body = body;
        return this;
    }

    public ResponseEntityBuilder contentType(String contentType) {
        this.contentType = contentType;
        return this;
    }

    public ResponseEntityBuilder header(String key, String value) {
        this.headers.put(key, value);
        return this;
    }

    public ResponseEntity<?> build() {
        ResponseEntity<Object> res = new ResponseEntity<>(status, body);
        res.setContentType(contentType);
        headers.forEach(res::addHeader);
        return res;
    }

}