View Javadoc

1   //
2   //  ========================================================================
3   //  Copyright (c) 1995-2016 Mort Bay Consulting Pty. Ltd.
4   //  ------------------------------------------------------------------------
5   //  All rights reserved. This program and the accompanying materials
6   //  are made available under the terms of the Eclipse Public License v1.0
7   //  and Apache License v2.0 which accompanies this distribution.
8   //
9   //      The Eclipse Public License is available at
10  //      http://www.eclipse.org/legal/epl-v10.html
11  //
12  //      The Apache License v2.0 is available at
13  //      http://www.opensource.org/licenses/apache2.0.php
14  //
15  //  You may elect to redistribute this code under either of these licenses.
16  //  ========================================================================
17  //
18  
19  package org.eclipse.jetty.client.api;
20  
21  /**
22   * The result of a request / response exchange, containing the {@link Request}, the {@link Response}
23   * and eventual failures of either.
24   */
25  public class Result
26  {
27      private final Request request;
28      private final Throwable requestFailure;
29      private final Response response;
30      private final Throwable responseFailure;
31  
32      public Result(Request request, Response response)
33      {
34          this(request, null, response, null);
35      }
36  
37      public Result(Request request, Response response, Throwable responseFailure)
38      {
39          this(request, null, response, responseFailure);
40      }
41  
42      public Result(Request request, Throwable requestFailure, Response response)
43      {
44          this(request, requestFailure, response, null);
45      }
46  
47      public Result(Request request, Throwable requestFailure, Response response, Throwable responseFailure)
48      {
49          this.request = request;
50          this.requestFailure = requestFailure;
51          this.response = response;
52          this.responseFailure = responseFailure;
53      }
54  
55      /**
56       * @return the request object
57       */
58      public Request getRequest()
59      {
60          return request;
61      }
62  
63      /**
64       * @return the request failure, if any
65       */
66      public Throwable getRequestFailure()
67      {
68          return requestFailure;
69      }
70  
71      /**
72       * @return the response object
73       */
74      public Response getResponse()
75      {
76          return response;
77      }
78  
79      /**
80       * @return the response failure, if any
81       */
82      public Throwable getResponseFailure()
83      {
84          return responseFailure;
85      }
86  
87      /**
88       * @return whether both the request and the response succeeded
89       */
90      public boolean isSucceeded()
91      {
92          return getFailure() == null;
93      }
94  
95      /**
96       * @return whether either the response or the request failed
97       */
98      public boolean isFailed()
99      {
100         return !isSucceeded();
101     }
102 
103     /**
104      * @return the response failure, if any, otherwise the request failure, if any
105      */
106     public Throwable getFailure()
107     {
108         return responseFailure != null ? responseFailure : requestFailure;
109     }
110 
111     @Override
112     public String toString()
113     {
114         return String.format("%s[%s > %s] %s",
115                 Result.class.getSimpleName(),
116                 request,
117                 response,
118                 getFailure());
119     }
120 }