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

com.ning.http.client.filter.FilterContext Maven / Gradle / Ivy

Go to download

Async Http Client library purpose is to allow Java applications to easily execute HTTP requests and asynchronously process the HTTP responses.

There is a newer version: 1.9.40
Show newest version
/*
 * Copyright (c) 2010-2012 Sonatype, Inc. All rights reserved.
 *
 * This program is licensed to you under the Apache License Version 2.0,
 * and you may not use this file except in compliance with the Apache License Version 2.0.
 * You may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the Apache License Version 2.0 is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the Apache License Version 2.0 for the specific language governing permissions and limitations there under.
 */
package com.ning.http.client.filter;

import com.ning.http.client.AsyncHandler;
import com.ning.http.client.HttpResponseHeaders;
import com.ning.http.client.HttpResponseStatus;
import com.ning.http.client.Request;

import java.io.IOException;

/**
 * A {@link FilterContext} can be used to decorate {@link Request} and {@link AsyncHandler} from a list of {@link RequestFilter}.
 * {@link RequestFilter} gets executed before the HTTP request is made to the remote server. Once the response bytes are
 * received, a {@link FilterContext} is then passed to the list of {@link ResponseFilter}. {@link ResponseFilter}
 * gets invoked before the response gets processed, e.g. before authorization, redirection and invokation of {@link AsyncHandler}
 * gets processed.
 * 

* Invoking {@link com.ning.http.client.filter.FilterContext#getResponseStatus()} returns an instance of {@link HttpResponseStatus} * that can be used to decide if the response processing should continue or not. You can stop the current response processing * and replay the request but creating a {@link FilterContext}. The {@link com.ning.http.client.AsyncHttpProvider} * will interrupt the processing and "replay" the associated {@link Request} instance. */ public class FilterContext { private final FilterContextBuilder b; /** * Create a new {@link FilterContext} * * @param b a {@link FilterContextBuilder} */ private FilterContext(FilterContextBuilder b) { this.b = b; } /** * Return the original or decorated {@link AsyncHandler} * * @return the original or decorated {@link AsyncHandler} */ public AsyncHandler getAsyncHandler() { return b.asyncHandler; } /** * Return the original or decorated {@link Request} * * @return the original or decorated {@link Request} */ public Request getRequest() { return b.request; } /** * Return the unprocessed response's {@link HttpResponseStatus} * * @return the unprocessed response's {@link HttpResponseStatus} */ public HttpResponseStatus getResponseStatus() { return b.responseStatus; } /** * Return the response {@link HttpResponseHeaders} */ public HttpResponseHeaders getResponseHeaders() { return b.headers; } /** * Return true if the current response's processing needs to be interrupted and a new {@link Request} be executed. * * @return true if the current response's processing needs to be interrupted and a new {@link Request} be executed. */ public boolean replayRequest() { return b.replayRequest; } /** * Return the {@link IOException} * * @return the {@link IOException} */ public IOException getIOException() { return b.ioException; } public static class FilterContextBuilder { private AsyncHandler asyncHandler = null; private Request request = null; private HttpResponseStatus responseStatus = null; private boolean replayRequest = false; private IOException ioException = null; private HttpResponseHeaders headers; public FilterContextBuilder() { } public FilterContextBuilder(FilterContext clone) { asyncHandler = clone.getAsyncHandler(); request = clone.getRequest(); responseStatus = clone.getResponseStatus(); replayRequest = clone.replayRequest(); ioException = clone.getIOException(); } public AsyncHandler getAsyncHandler() { return asyncHandler; } public FilterContextBuilder asyncHandler(AsyncHandler asyncHandler) { this.asyncHandler = asyncHandler; return this; } public Request getRequest() { return request; } public FilterContextBuilder request(Request request) { this.request = request; return this; } public FilterContextBuilder responseStatus(HttpResponseStatus responseStatus) { this.responseStatus = responseStatus; return this; } public FilterContextBuilder responseHeaders(HttpResponseHeaders headers) { this.headers = headers; return this; } public FilterContextBuilder replayRequest(boolean replayRequest) { this.replayRequest = replayRequest; return this; } public FilterContextBuilder ioException(IOException ioException) { this.ioException = ioException; return this; } public FilterContext build() { return new FilterContext(this); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy