All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.dongliu.emvc.render.HttpResult Maven / Gradle / Ivy

The newest version!
package net.dongliu.emvc.render;

import com.google.common.collect.ImmutableList;
import lombok.Setter;
import lombok.experimental.Accessors;

import javax.annotation.Nullable;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * Action result
 *
 * @author Liu Dong
 */
@Accessors(fluent = true)
public abstract class HttpResult {
    @Setter
    private int statusCode = 200;
    @Setter
    private Collection> headers = ImmutableList.of();
    @Setter
    @Nullable
    private String contentType;
    @Setter
    @Nullable
    private String charset;
    @Setter
    protected T value;
    @Setter
    private List cookieList = ImmutableList.of();

    protected HttpResult() {
    }

    /**
     * Write result to response
     */
    public void sendResponse(HttpServletRequest request, HttpServletResponse response) throws IOException {
        writeHeaders(response);
        writeBody(response);
    }

    /**
     * Write response body
     */
    public abstract void writeBody(HttpServletResponse response) throws IOException;

    protected void writeHeaders(HttpServletResponse response) {
        response.setStatus(statusCode);
        for (Map.Entry header : headers) {
            response.addHeader(header.getKey(), header.getValue());
        }
        if (contentType != null) {
            response.setContentType(contentType);
        }
        if (charset != null) {
            response.setCharacterEncoding(charset);
        }
        cookieList.forEach(response::addCookie);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy