// // ======================================================================== // Copyright (c) 1995-2017 Mort Bay Consulting Pty. Ltd. // ------------------------------------------------------------------------ // All rights reserved. This program and the accompanying materials // are made available under the terms of the Eclipse Public License v1.0 // and Apache License v2.0 which accompanies this distribution. // // The Eclipse Public License is available at // http://www.eclipse.org/legal/epl-v10.html // // The Apache License v2.0 is available at // http://www.opensource.org/licenses/apache2.0.php // // You may elect to redistribute this code under either of these licenses. // ======================================================================== // package org.eclipse.jetty.client.api; /** * The result of a request / response exchange, containing the {@link Request}, the {@link Response} * and eventual failures of either. */ public class Result { private final Request request; private final Throwable requestFailure; private final Response response; private final Throwable responseFailure; public Result(Request request, Response response) { this(request, null, response, null); } public Result(Request request, Response response, Throwable responseFailure) { this(request, null, response, responseFailure); } public Result(Request request, Throwable requestFailure, Response response) { this(request, requestFailure, response, null); } public Result(Request request, Throwable requestFailure, Response response, Throwable responseFailure) { this.request = request; this.requestFailure = requestFailure; this.response = response; this.responseFailure = responseFailure; } public Result(Result result, Throwable responseFailure) { this.request = result.request; this.requestFailure = result.requestFailure; this.response = result.response; this.responseFailure = responseFailure; } /** * @return the request object */ public Request getRequest() { return request; } /** * @return the request failure, if any */ public Throwable getRequestFailure() { return requestFailure; } /** * @return the response object */ public Response getResponse() { return response; } /** * @return the response failure, if any */ public Throwable getResponseFailure() { return responseFailure; } /** * @return whether both the request and the response succeeded */ public boolean isSucceeded() { return getFailure() == null; } /** * @return whether either the response or the request failed */ public boolean isFailed() { return !isSucceeded(); } /** * @return the response failure, if any, otherwise the request failure, if any */ public Throwable getFailure() { return responseFailure != null ? responseFailure : requestFailure; } @Override public String toString() { return String.format("%s[%s > %s] %s", Result.class.getSimpleName(), request, response, getFailure()); } }