javax.servlet.ServletResponseWrapper#org.apache.catalina.connector.ResponseFacade源码实例Demo

下面列出了javax.servlet.ServletResponseWrapper#org.apache.catalina.connector.ResponseFacade 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

/**
 * Unwrap the response if we have wrapped it.
 */
private void unwrapResponse(State state) {

    if (state.wrapResponse == null)
        return;

    if (state.outerRequest.isAsyncStarted()) {
        if (!state.outerRequest.getAsyncContext().hasOriginalRequestAndResponse()) {
            return;
        }
    }

    ServletResponse previous = null;
    ServletResponse current = state.outerResponse;
    while (current != null) {

        // If we run into the container response we are done
        if ((current instanceof Response)
            || (current instanceof ResponseFacade))
            break;

        // Remove the current response if it is our wrapper
        if (current == state.wrapResponse) {
            ServletResponse next =
              ((ServletResponseWrapper) current).getResponse();
            if (previous == null)
                state.outerResponse = next;
            else
                ((ServletResponseWrapper) previous).setResponse(next);
            break;
        }

        // Advance to the next response in the chain
        previous = current;
        current = ((ServletResponseWrapper) current).getResponse();

    }

}
 
private static HttpHeaders createTomcatHttpHeaders(HttpServletResponse response) {
	ResponseFacade responseFacade = getResponseFacade(response);
	org.apache.catalina.connector.Response connectorResponse = (org.apache.catalina.connector.Response)
			ReflectionUtils.getField(COYOTE_RESPONSE_FIELD, responseFacade);
	Assert.state(connectorResponse != null, "No Tomcat connector response");
	Response tomcatResponse = connectorResponse.getCoyoteResponse();
	TomcatHeadersAdapter headers = new TomcatHeadersAdapter(tomcatResponse.getMimeHeaders());
	return new HttpHeaders(headers);
}
 
private static ResponseFacade getResponseFacade(HttpServletResponse response) {
	if (response instanceof ResponseFacade) {
		return (ResponseFacade) response;
	}
	else if (response instanceof HttpServletResponseWrapper) {
		HttpServletResponseWrapper wrapper = (HttpServletResponseWrapper) response;
		HttpServletResponse wrappedResponse = (HttpServletResponse) wrapper.getResponse();
		return getResponseFacade(wrappedResponse);
	}
	else {
		throw new IllegalArgumentException("Cannot convert [" + response.getClass() +
				"] to org.apache.catalina.connector.ResponseFacade");
	}
}
 
private static HttpHeaders createTomcatHttpHeaders(HttpServletResponse response) {
	ResponseFacade responseFacade = getResponseFacade(response);
	org.apache.catalina.connector.Response connectorResponse = (org.apache.catalina.connector.Response)
			ReflectionUtils.getField(COYOTE_RESPONSE_FIELD, responseFacade);
	Assert.state(connectorResponse != null, "No Tomcat connector response");
	Response tomcatResponse = connectorResponse.getCoyoteResponse();
	TomcatHeadersAdapter headers = new TomcatHeadersAdapter(tomcatResponse.getMimeHeaders());
	return new HttpHeaders(headers);
}
 
private static ResponseFacade getResponseFacade(HttpServletResponse response) {
	if (response instanceof ResponseFacade) {
		return (ResponseFacade) response;
	}
	else if (response instanceof HttpServletResponseWrapper) {
		HttpServletResponseWrapper wrapper = (HttpServletResponseWrapper) response;
		HttpServletResponse wrappedResponse = (HttpServletResponse) wrapper.getResponse();
		return getResponseFacade(wrappedResponse);
	}
	else {
		throw new IllegalArgumentException("Cannot convert [" + response.getClass() +
				"] to org.apache.catalina.connector.ResponseFacade");
	}
}
 
源代码6 项目: Tomcat7.0.67   文件: ApplicationDispatcher.java
/**
 * Unwrap the response if we have wrapped it.
 */
private void unwrapResponse(State state) {

    if (state.wrapResponse == null)
        return;

    if (state.outerRequest.isAsyncStarted()) {
        if (!state.outerRequest.getAsyncContext().hasOriginalRequestAndResponse()) {
            return;
        }
    }

    ServletResponse previous = null;
    ServletResponse current = state.outerResponse;
    while (current != null) {

        // If we run into the container response we are done
        if ((current instanceof Response)
            || (current instanceof ResponseFacade))
            break;

        // Remove the current response if it is our wrapper
        if (current == state.wrapResponse) {
            ServletResponse next =
              ((ServletResponseWrapper) current).getResponse();
            if (previous == null)
                state.outerResponse = next;
            else
                ((ServletResponseWrapper) previous).setResponse(next);
            break;
        }

        // Advance to the next response in the chain
        previous = current;
        current = ((ServletResponseWrapper) current).getResponse();

    }

}
 
源代码7 项目: tomcatsrc   文件: ApplicationDispatcher.java
/**
 * Unwrap the response if we have wrapped it.
 */
private void unwrapResponse(State state) {

    if (state.wrapResponse == null)
        return;

    if (state.outerRequest.isAsyncStarted()) {
        if (!state.outerRequest.getAsyncContext().hasOriginalRequestAndResponse()) {
            return;
        }
    }

    ServletResponse previous = null;
    ServletResponse current = state.outerResponse;
    while (current != null) {

        // If we run into the container response we are done
        if ((current instanceof Response)
            || (current instanceof ResponseFacade))
            break;

        // Remove the current response if it is our wrapper
        if (current == state.wrapResponse) {
            ServletResponse next =
              ((ServletResponseWrapper) current).getResponse();
            if (previous == null)
                state.outerResponse = next;
            else
                ((ServletResponseWrapper) previous).setResponse(next);
            break;
        }

        // Advance to the next response in the chain
        previous = current;
        current = ((ServletResponseWrapper) current).getResponse();

    }

}