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

com.jn.agileway.web.rest.AbstractGlobalServletRestExceptionHandler Maven / Gradle / Ivy

package com.jn.agileway.web.rest;

import com.jn.agileway.http.rest.AbstractGlobalRestExceptionHandler;
import com.jn.agileway.http.rest.GlobalRestHandlers;
import com.jn.agileway.http.rr.HttpRequest;
import com.jn.agileway.http.rr.HttpResponse;
import com.jn.langx.http.rest.RestRespBody;
import com.jn.langx.util.io.Charsets;
import com.jn.langx.util.logging.Loggers;
import org.slf4j.Logger;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;

import static com.jn.agileway.http.rest.GlobalRestHandlers.GLOBAL_REST_RESPONSE_HAD_WRITTEN;

public abstract class AbstractGlobalServletRestExceptionHandler extends AbstractGlobalRestExceptionHandler {
    private static final Logger logger = Loggers.getLogger(AbstractGlobalServletRestExceptionHandler.class);
    @Override
    protected void writeResponse(HttpRequest request, HttpResponse response, Object action, RestRespBody respBody) {
        Map finalBody = toMap(request, response, action, respBody);

        try {
            HttpServletResponse servletResponse = (HttpServletResponse)response.getContainerResponse();
            if (!servletResponse.isCommitted()) {
                servletResponse.resetBuffer();
                servletResponse.setStatus(respBody.getStatusCode());
                String jsonstring = context.getJsonFactory().get().toJson(finalBody);

                servletResponse.setContentType(GlobalRestHandlers.RESPONSE_CONTENT_TYPE_JSON_UTF8);
                servletResponse.setCharacterEncoding(Charsets.UTF_8.name());
                servletResponse.getWriter().write(jsonstring);
                request.setAttribute(GLOBAL_REST_RESPONSE_HAD_WRITTEN, true);
            }
        } catch (IOException ioe) {
            logger.warn(ioe.getMessage(), ioe);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy